同一台设备的两个网口,如果为同一网段会怎样?
测试:ubuntu 18.04 : eth0 192.168.1.56 eth1 192.168.1.57
结果:两个IP发送的数据会通过 eth0 发送,而eth1没有数据
原因:因为系统里面有一个路由表,当您设置IP的时候就会同时设置路由表,当需要访问外面的时候,系统会去路由表里面查询,当查询到第一个匹配的项目时就应用这个项目,eth0在路由表的第一行,也就是从这条路径走了。
解决方法:
可以从socket程序层面绑定具体的网口,让数据分别从eth0和eth1发出去
struct ifreq if_etho;
strncpy(if_etho.ifr_name, "eth0", IFNAMSIZ);
int err = setsockopt(sock_fd, SOL_SOCKET, SO_BINDTODEVICE, (char*)&if_eth0, sizeof(if_etho)); /*bind socket to ethx*/
PS:通过手动配置路由是不是可以实现?网络知识欠缺,留待后期验证~~~