Linux双网卡设置IP属于同一网段的ping方法以及现象记录分析

前言

写在前面:经常遇到客户将板卡上的两个网络设备的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系统下双网卡设置同样网段没有正确更新路由表的能力。因此会造成上述情况出现。

所以最好的方法是避免这样操作。

### 配置Linux Ubuntu双网卡同一网段共存 对于Ubuntu Linux系统中的双网卡配置,在同一网段中共存的关键在于正确设置IP地址分配策略以及路由规则,防止冲突并确保通信顺畅。当两块网卡接入相同子网时,应避免自动获取相同的IP地址范围造成混乱。 #### 修改网络接口配置文件 编辑`/etc/netplan/*.yaml` 文件(具体名称可能不同),以适应特定环境需求: ```bash network: version: 2 ethernets: enp0s3: dhcp4: no addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] enp0s8: dhcp4: no addresses: - 192.168.1.101/24 ``` 上述示例中,假设两个物理网口分别为`enp0s3` 和 `enp0s8` ,两者被赋予了相邻但不重复的静态IP地址[^1]。 #### 应用Netplan配置变更 保存修改后的YAML文件,并执行命令应用新的网络配置: ```bash sudo netplan apply ``` 这一步骤将使新设定生效,允许操作系统识别更新过的网络参数。 #### 设置永久ARP忽略选项 为了避免潜在的MAC地址冲突问题,可以通过调整内核参数来控制系统的ARP行为。创建或编辑 `/etc/sysctl.d/50-custom.conf` 文件加入如下内容: ```bash net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.enp0s3.arp_announce = 2 net.ipv4.conf.enp0s8.arp_announce = 2 ``` 之后运行 sysctl 命令加载这些更改: ```bash sudo sysctl --system ``` 此操作有助于减少因多路径冗余带来的不确定性,提高稳定性[^2]。 #### 测试连通性 完成以上步骤后,建议使用 ping 工具测试各设备间的可达性和响应时间;同时利用 iperf 或其他工具评估带宽性能指标,验证是否达到预期效果[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值