2.4.2 默认网关与多网卡路由策略

默认网关与多网卡路由策略#

默认网关用于将非本地网段的流量转发到上级路由器。在多网卡主机上,若多个默认路由并存,系统会按优先级(metric)或策略路由规则选择出口。配置不当会导致回程不对称、访问失败或安全风险。

原理草图(单默认网关与多网卡分流)#

文章图片

默认网关的作用与查看#

  • 作用:当目标地址不在直连网段时,将流量转发到上级路由器
  • 查看路由表:
ip route
route -n

命令说明ip route 显示内核路由表;default via 行即默认网关。

临时与永久配置(以 RHEL/CentOS 为例)#

临时生效(重启失效)

# 添加默认网关
ip route add default via 192.168.1.1 dev eth0 metric 100

# 验证路由选择
ip route get 8.8.8.8

永久生效

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
METRIC=100
# 使配置生效
nmcli connection reload
nmcli connection up eth0

预期效果ip route 中出现 default via 192.168.1.1 dev eth0 metric 100

多网卡路由优先级(metric)#

  • metric 值越小优先级越高
  • 典型主备出口示例:
# 主出口
ip route add default via 10.0.0.1 dev eth0 metric 100
# 备出口
ip route add default via 172.16.0.1 dev eth1 metric 200

验证

ip route | grep default

策略路由(Policy Routing)示例:按源地址分流#

场景:管理网 10.0.0.0/24 走 eth0,业务网 172.16.0.0/24 走 eth1

1)定义路由表

# /etc/iproute2/rt_tables
100 mgmt
200 biz

2)为表添加默认路由

ip route add default via 10.0.0.1 dev eth0 table mgmt
ip route add default via 172.16.0.1 dev eth1 table biz

3)按源地址匹配规则

ip rule add from 10.0.0.0/24 table mgmt
ip rule add from 172.16.0.0/24 table biz

4)验证

ip rule show
ip route show table mgmt
ip route show table biz

预期效果:从不同源网段发起连接时,ip route get <目标> from <源IP> 显示不同出口

端口级分流(iptables + mark)#

场景:80/443 走 eth0,其它走 eth1

# 标记 HTTP/HTTPS 流量
iptables -t mangle -A OUTPUT -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x1

# 创建策略规则:打了标记的走表 100
ip rule add fwmark 0x1 table 100
ip route add default via 10.0.0.1 dev eth0 table 100

# 默认路由走 eth1
ip route add default via 172.16.0.1 dev eth1 metric 200

说明MARK 用于匹配流量;fwmark 触发策略路由。

排错与验证清单(含明确命令解释)#

  • 路由选择是否正确:
ip route get 8.8.8.8
ip route get 8.8.8.8 from 10.0.0.10

解释:显示内核最终选择的出口接口与下一跳。
- 策略规则是否生效:

ip rule show

解释:从上到下匹配规则,优先级越小越先匹配。
- 链路与对端可达:

ping -I eth0 10.0.0.1
traceroute -i eth1 8.8.8.8

解释-I/-i 指定出口接口,验证真实路径。
- 回程不对称检查:

tcpdump -ni eth0 host 8.8.8.8
tcpdump -ni eth1 host 8.8.8.8

解释:观察请求与响应是否走同一接口。

常见问题与修复#

  • 问题1:默认网关冲突
    现象:连接间歇失败、回程走错接口
    修复:仅保留一个默认路由或使用策略路由分流
  • 问题2:策略路由未生效
    现象:仍走主路由表
    修复:检查 ip rule show 优先级;确保 rt_tables 表名正确
  • 问题3:重启后丢失规则
    修复:将 ip rule/ip route 写入系统启动脚本或 NetworkManager 脚本

练习(可直接操作)#

  1. 配置双网卡主备默认路由(metric 100/200),验证主链路断开后自动走备链路。
  2. 配置按源地址分流,使用 ip route get <dst> from <src> 验证出口。
  3. 使用 iptables + mark 实现 80/443 走 eth0,其余走 eth1,并用 traceroute 验证。
  4. 模拟错误:同时配置两个默认网关,观察 ping 失败或回程不对称现象并修复。