双网卡 + 不同网段 系统有两个网卡,分别属于不同的网段(比如网卡 A :192.168.0.11,网卡 B :192.168.1.22),大部分的多网卡系统都是使用的这种配置。这时的路由表基本如此:
default XiaoQiang 0.0.0.0 UG 600 0 0 wlo1
192.168.1.0 * 255.255.255.0 U 100 0 0 eno1
流量根据路由表选择流向不同的网卡。路由器就是这样实现的。
双网卡 + 同网段 如果两个网卡属于同一个网段(比如网卡 A :192.168.1.11,网卡 B :192.168.1.22)。这时系统的路由表还是有一个默认路由(比如流量都默认流向 wlo1 )。从表面上看,系统此时两个网卡都可以正常通信,但实际上还是有问题的。
假如默认路由为网卡 A ,此时从外界 Ping 192.168.1.11 和 192.168.1.22 都正常,但是如果此时拔掉网卡 A ,然后因为默认路由为 192.168.1.11 ,所以此时外界就不无法 Ping 通主机了,但是此时如果修改了默认路由或者使用 ifconfig 关闭网卡 A ,然后就可以恢复通信了。
两个网卡都在使用时,如果 ping 两个 IP (192.168.1.11 和 192.168.1.22),会发现,如果拔掉了非默认路由的网卡 B(192.168.1.22),再去 ping 192.168.1.22 ,仍然可以通信,并且在第三方主机检查 ARP 表,会发现 192.168.1.11 和 192.168.1.22 的 MAC 地址相同。
出现这种情况的原因就是因为第三方主机和本机通信时会使用默认路由,所以第三方主机 ARP 表上会把网卡 A 和 B 的 MAC 地址标识为网卡 A(默认路由)的 MAC 地址。要解决这个问题可以使用工具 iproute2 把两个网卡分到两个不同路由表。
echo "210 local100" >> /etc/iproute2/rt_tables
echo "220 local200" >> /etc/iproute2/rt_tables
ip route add 192.168.1.0/24 dev wlo0 src 192.168.1.11 table local100
ip route add 192.168.1.0/24 dev eno1 src 192.168.1.22 table local200
ip route add default dev wlo0 table local100
ip route add default dev eno1 table local200
ip rule add from 192.168.1.11 table local100
ip rule add from 192.168.1.22 table local200
ip route flush cache
然后第三方主机再于本机进行通信就会根据不同的 IP 选择了不同的网卡进行通信。此时系统会优先选择 table 数字最小的路由表来进行路由。假如此时拔掉网卡A ,则系统会自动选择网卡 B 作为新的路由出口。
服务器操作系统RedHat linux 9,设置两张路由表 1. vi /etc/iproute2/rt_tables,增加网通和电信两个路由表 251 tel 电信路由表 252 cnc 网通路由表
2. 给网卡绑定两个地址用于电信和网通两个线路 ip addr add 192.168.0.2/24 dev eth0 ip addr add 10.0.0.2/24 dev eth1
3、分别设置电信和网通的路由表
电信路由表: #确保找到本地子网 ip route add 192.168.0..0/24 via 192.168.0.2 dev eth0 table tel #内部回环网络 ip route add 127.0.0.0/8 dev lo table tel #192.168.0.1为电信网络默认网关地址 ip route add default via 192.168.0.1 dev eth0 table tel
网通线路路由表: #确保找到本地子网 ip route add 10.0.0.0/24 via 10.0.0.2 dev eth1 table cnc #内部回环网络 ip route add 127.0.0.0/8 dev lo table cnc #10.0.0.1是网通的默认网关 ip route add default via 10.0.0.1 dev eth1 table cnc
4、电信和网通各有自己的路由表,制定策略,让192.168.0.2的回应数据包走电信的路由表路由,10.0.0.2的回应数据包走网通的路由表路由 ip rule add from 192.168.0.1 table tel ip rule add from 10.0.0.1 table cnc
配置双网卡的目的:
1、实现冗余
2、负载均衡
linux 主机安装双网卡,共享一个IP地址,对外提供访问,实际 同样 连接两条物理线路到交换机 实现平时 双网卡同时工作,分流网络压力,同时提供冗余备份,监控,防止物理线路的单点故障。