伺服器同時連接電信與網通兩條線路(不同網段),需實現「來源IP決定出口」:電信IP走電信閘道,網通IP走網通閘道。使用ip rule + ip route 策略路由完美解決。
eth0:192.168.0.2/24,電信閘道 192.168.0.1eth1:10.0.0.2/24,網通閘道 10.0.0.1/etc/iproute2/rt_tables):
251 tel # 電信表
252 cnc # 網通表
ip addr add 192.168.0.2/24 dev eth0
ip addr add 10.0.0.2/24 dev eth1
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.2 table tel
ip route add 127.0.0.0/8 dev lo table tel
ip route add default via 192.168.0.1 dev eth0 table tel
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.2 table cnc
ip route add 127.0.0.0/8 dev lo table cnc
ip route add default via 10.0.0.1 dev eth1 table cnc
ip rule add from 192.168.0.2 table tel
ip rule add from 10.0.0.2 table cnc
# 優先級自動分配,可用 'ip rule list' 查看
/etc/rc.local或NetworkManager dispatcher腳本、systemd服務,或使用/etc/sysconfig/network-scripts/rule-eth0、route-eth0(RHEL/CentOS慣例)。# 從電信IP發起追蹤
traceroute -s 192.168.0.2 8.8.8.8 # 應走 192.168.0.1
# 從網通IP發起追蹤
traceroute -s 10.0.0.2 8.8.8.8 # 應走 10.0.0.1
# 查看規則
ip rule list
ip route list table tel
ip route list table cnc
ip rule add from 192.168.0.0/24 table tel
ip rule add from 10.0.0.0/24 table cnc
# 刪除舊單IP規則
ip rule del from 192.168.0.2 table tel
ip rule del from 10.0.0.2 table cnc
rp_filter嚴格模式導致非對稱路由丟包:sysctl -w net.ipv4.conf.all.rp_filter=2(鬆散模式)或=0(關閉)。iptables -t mangle -A PREROUTING -i eth0 -j CONNMARK --restore-mark等)。策略路由是Linux多線路負載均衡、流量隔離的核心技術,掌握ip rule/route組合拳,輕松駕馭複雜網路拓撲。