如果您的机器上有两个网卡,那么应该没有问题。正常的 IP 行为应确保您的“私有”网络(在这种情况下为嵌入式系统)的流量与您的公共网络分开,而您无需在代码中执行任何操作。所需要做的就是让两个网络位于不同的 IP 子网上,并将您的“公共”网卡设为默认网卡。
假设你的两个网卡配置如下:
NIC A (Public): 192.168.1.10 mask 255.255.255.0
NIC B (Private): 192.168.5.10 mask 255.255.255.0
您需要验证的唯一配置是 NIC A 是您的默认配置。当您尝试将数据包发送到私有网络中的任何地址(192.168.50.0 - 192.168.50.255)时,您的 IP 堆栈将查看路由表并查看直接连接的网络,并通过私有 NIC 转发流量。到(直接连接的)公共网络的任何流量都将发送到 NIC A,发送到您在路由表中没有更具体路由的任何地址的流量也将发送到 NIC A。
您的路由表 (netstat -rn) 应如下所示:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 266 <<--
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
169.254.0.0 255.255.0.0 On-link 192.168.1.10 286
169.254.255.255 255.255.255.255 On-link 192.168.1.10 266
192.168.1.0 255.255.255.0 On-link 192.168.1.10 266
192.168.1.10 255.255.255.255 On-link 192.168.1.10 266
192.168.1.255 255.255.255.255 On-link 192.168.1.10 266
192.168.5.0 255.255.255.0 On-link 192.168.5.10 266
192.168.5.10 255.255.255.255 On-link 192.168.5.10 266
192.168.5.255 255.255.255.255 On-link 192.168.5.10 266
255.255.255.255 255.255.255.255 On-link 192.168.1.10 276
255.255.255.255 255.255.255.255 On-link 192.168.5.10 276
===========================================================================
还有一些多播路由(以 224 开头),为简洁起见已省略。'<<--' 表示默认路由,应该使用公共接口。