文章目录
前言
写在前面:经常遇到客户将板卡上的两个网络设备的IP地址设置为同一网段的情况,比如eth0:192.168.0.232,eth1:192.168.0.30.
我的解释是,不能设置为同一网段,或者使用其中一个时候下线另外一个网卡。但是我不知道这个说法到底是根据什么,查了很多资料也没找到明确的说法,但是下面这个实验能够说明一些现象的原因。
ping以及MAC地址
首先查看网卡的信息
ifconfig
因为两个网卡都在同一个网段,所以如果这个时候直接和我们的主机(IP 192.168.0.2)进行ping,因为优先级的原因,会导致有一个网卡会无法ping通主机.
通过
route -n
可以查看到路由信息,这里在192.168.0.0这个网段中,eth0的优先级要大于eth1的优先级,所以会默认的使用eth0网卡
现在我们如果直接使用eth1的网口和我们的主机进行ping,就会出现这种情况
所以要先下线其中一个网卡,或者修改其中一个网卡的网段
例如我现在需要ping eth1网卡,所以先下线eth0网卡
使用命令
ifconfig eth0 down
down之后就可以看到网卡信息直接少了一个,说明eht0暂时下线了
还可以再看一下我们的路由信息,也只剩下eth1(192.168.0.30)了
这个时候就可以ping我们的主机了
ping 192.168.0.2
可以正常ping通,没问题
这个时候在PC主机和开发板上分别使用命令
arp -a
也就是可以看到刚才数据的来源以及其物理地址,这是PC主机上现实的信息
在Linux开发板上可以看到,现实的是PC主机的IP还有MAC地址信息
用同样的方法对开发板的eth0(192.168.0.232)操作,可以看到如下的信息
到这里,至少可以看到eth0(192.168.0.232)和eth1(192.168.0.30)的mac地址不同
总结
如果系统有两个独立网卡,并且这两个网卡的IP属于同一个子网,那么后面这个网卡的IP将自动路由到前面一个网卡上。
也就是说数据将自动路由到前面的那个网卡上。在不加任何设置的情况下,如果前面的网卡断线或者故障了(拔掉网线或者网卡指坏了),必须用命令down掉,后面的网卡然后再up,这时后面的网卡才能启用。
此时两个IP又同时路由到后面的网卡上,也就是说后面的网卡又具有两个IP地址。
当然两块网卡设置成同一网段是不合理的。
我们将其理解为在Linux系统下双网卡设置同样网段没有正确更新路由表的能力。因此会造成上述情况出现。
所以最好的方法是避免这样操作。