Ubuntu双网卡路由冲突实战用route命令精准控制网络流量路径当你为服务器配置了双网卡却发现同时连接时网络访问异常——这种看似简单的配置问题往往隐藏着路由选择的复杂性。上周我管理的三台生产服务器突然集体失联排查六小时后才发现是新部署的备份网卡与主网卡在同一网段引发了路由混乱。本文将分享如何用route命令像交通警察一样精确指挥数据包的流向。1. 双网卡冲突的本质与诊断现代服务器通常配备多个网络接口这既是为了冗余备份也为了实现流量隔离。但当两个网卡配置在同一IP网段时比如192.168.2.10/24和192.168.2.12/24Linux内核的路由机制会出现决策困难。典型症状包括ping网关时通时断SSH连接随机断开特定服务无法访问而其他正常拔掉任一网线后网络恢复通过ip route show命令查看路由表时你可能会看到这样的异常情况default via 192.168.2.1 dev eno4 proto static metric 100 default via 192.168.2.101 dev eno2 proto static metric 100 192.168.2.0/24 dev eno4 proto kernel scope link src 192.168.2.10 192.168.2.0/24 dev eno2 proto kernel scope link src 192.168.2.12关键问题在于两个默认网关default via具有相同的metric值100这导致内核无法确定该优先使用哪条路径。就像十字路口没有交通灯数据包会随机选择方向造成网络不稳定。2. 路由表深度解析与metric机制Linux路由表是个多层次的决策系统其匹配规则遵循最长前缀匹配更具体的网络范围优先最低metric值成本更低的路径优先最早添加的路由当其他条件相同时路由表关键字段解析字段说明示例值Destination目标网络192.168.2.0/24Gateway下一跳地址192.168.2.1Genmask网络掩码255.255.255.0Flags路由标志U路由可用G需要网关Metric路由成本100Iface出口接口eno4修改metric值实际上是告诉内核当有多条路径可选时优先选择成本更低的那条。这类似于快递公司选择运输路线时会考虑高速公路费——即使两条路都能到达总会选择收费更低的那条。3. 实战用route命令调整网络优先级假设我们需要确保eno4主网卡始终作为出口而eno2备份网卡仅在主网卡故障时启用。以下是具体操作步骤步骤1删除冲突的默认路由sudo route del default gw 192.168.2.101 dev eno2步骤2重新添加带优先级的路由sudo route add default gw 192.168.2.1 dev eno4 metric 100 sudo route add default gw 192.168.2.101 dev eno2 metric 200步骤3验证路由表$ ip route show default via 192.168.2.1 dev eno4 proto static metric 100 default via 192.168.2.101 dev eno2 proto static metric 200注意metric值差异建议至少为50过小的差值可能导致路由抖动如果想使配置永久生效需要修改网络配置文件。在Ubuntu 18.04中编辑/etc/netplan/50-cloud-init.yamlnetwork: version: 2 ethernets: eno4: routes: - to: 0.0.0.0/0 via: 192.168.2.1 metric: 100 eno2: routes: - to: 0.0.0.0/0 via: 192.168.2.101 metric: 200应用配置sudo netplan apply4. 高级场景与故障排查多网卡负载均衡配置 如果想实现流量分流如视频流走eno4备份数据走eno2需要结合iptables打标记sudo iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 1 sudo ip rule add fwmark 1 table 100 sudo ip route add default via 192.168.2.101 dev eno2 table 100常见故障排查命令检查ARP缓存arp -an追踪路由路径traceroute -i eno4 8.8.8.8监控实时流量sudo tcpdump -i eno4 -nn icmp or arp性能优化参数 在/etc/sysctl.conf中添加以下配置可改善多网卡性能net.ipv4.conf.all.arp_ignore1 net.ipv4.conf.all.arp_announce2 net.ipv4.conf.all.rp_filter2记得执行sysctl -p使配置生效。这些参数可以防止ARP广播风暴特别是在虚拟化环境中。
Ubuntu双网卡冲突?手把手教你用route命令解决同一网段下的网络优先级问题
Ubuntu双网卡路由冲突实战用route命令精准控制网络流量路径当你为服务器配置了双网卡却发现同时连接时网络访问异常——这种看似简单的配置问题往往隐藏着路由选择的复杂性。上周我管理的三台生产服务器突然集体失联排查六小时后才发现是新部署的备份网卡与主网卡在同一网段引发了路由混乱。本文将分享如何用route命令像交通警察一样精确指挥数据包的流向。1. 双网卡冲突的本质与诊断现代服务器通常配备多个网络接口这既是为了冗余备份也为了实现流量隔离。但当两个网卡配置在同一IP网段时比如192.168.2.10/24和192.168.2.12/24Linux内核的路由机制会出现决策困难。典型症状包括ping网关时通时断SSH连接随机断开特定服务无法访问而其他正常拔掉任一网线后网络恢复通过ip route show命令查看路由表时你可能会看到这样的异常情况default via 192.168.2.1 dev eno4 proto static metric 100 default via 192.168.2.101 dev eno2 proto static metric 100 192.168.2.0/24 dev eno4 proto kernel scope link src 192.168.2.10 192.168.2.0/24 dev eno2 proto kernel scope link src 192.168.2.12关键问题在于两个默认网关default via具有相同的metric值100这导致内核无法确定该优先使用哪条路径。就像十字路口没有交通灯数据包会随机选择方向造成网络不稳定。2. 路由表深度解析与metric机制Linux路由表是个多层次的决策系统其匹配规则遵循最长前缀匹配更具体的网络范围优先最低metric值成本更低的路径优先最早添加的路由当其他条件相同时路由表关键字段解析字段说明示例值Destination目标网络192.168.2.0/24Gateway下一跳地址192.168.2.1Genmask网络掩码255.255.255.0Flags路由标志U路由可用G需要网关Metric路由成本100Iface出口接口eno4修改metric值实际上是告诉内核当有多条路径可选时优先选择成本更低的那条。这类似于快递公司选择运输路线时会考虑高速公路费——即使两条路都能到达总会选择收费更低的那条。3. 实战用route命令调整网络优先级假设我们需要确保eno4主网卡始终作为出口而eno2备份网卡仅在主网卡故障时启用。以下是具体操作步骤步骤1删除冲突的默认路由sudo route del default gw 192.168.2.101 dev eno2步骤2重新添加带优先级的路由sudo route add default gw 192.168.2.1 dev eno4 metric 100 sudo route add default gw 192.168.2.101 dev eno2 metric 200步骤3验证路由表$ ip route show default via 192.168.2.1 dev eno4 proto static metric 100 default via 192.168.2.101 dev eno2 proto static metric 200注意metric值差异建议至少为50过小的差值可能导致路由抖动如果想使配置永久生效需要修改网络配置文件。在Ubuntu 18.04中编辑/etc/netplan/50-cloud-init.yamlnetwork: version: 2 ethernets: eno4: routes: - to: 0.0.0.0/0 via: 192.168.2.1 metric: 100 eno2: routes: - to: 0.0.0.0/0 via: 192.168.2.101 metric: 200应用配置sudo netplan apply4. 高级场景与故障排查多网卡负载均衡配置 如果想实现流量分流如视频流走eno4备份数据走eno2需要结合iptables打标记sudo iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 1 sudo ip rule add fwmark 1 table 100 sudo ip route add default via 192.168.2.101 dev eno2 table 100常见故障排查命令检查ARP缓存arp -an追踪路由路径traceroute -i eno4 8.8.8.8监控实时流量sudo tcpdump -i eno4 -nn icmp or arp性能优化参数 在/etc/sysctl.conf中添加以下配置可改善多网卡性能net.ipv4.conf.all.arp_ignore1 net.ipv4.conf.all.arp_announce2 net.ipv4.conf.all.rp_filter2记得执行sysctl -p使配置生效。这些参数可以防止ARP广播风暴特别是在虚拟化环境中。