首页/云/云网络与负载均衡速查/多网卡策略路由(Linux 侧)

多网卡策略路由(Linux 侧)

实例挂多块网卡或配置多个私网 IP 后,Linux 默认只按主网卡路由:来自辅助网卡的请求,回包可能从主网卡发出而被对端丢弃。用策略路由按源地址分流可解决这类「能收不能回」的问题。

多网卡回包走错的问题

实例挂多块网卡或配置多个私网 IP 后,Linux 默认只按主网卡的路由表出包:从辅助网卡进来的请求,回包可能从主网卡发出,对端收到源地址不匹配的响应后直接丢弃。这就是典型的「能收不能回」。解决办法是用策略路由按源地址选择路由表,让来自辅助网卡网段的流量从对应网卡发出。

基本信息

适用平台Linux(ip rule 与多路由表),常出现在挂多网卡的云主机上
原理默认路由单一,用 ip rule 按源地址选择路由表
典型场景多网卡、多私网 IP、辅助网卡承载业务流量
验证方法ip route get 目的地址 from 源地址 查看出口选择
持久化规则重启后会丢失,需写入网络配置或初始化脚本

典型使用场景

  • 辅助网卡承载业务流量,但回包从主网卡发出导致不通
  • 实例同时接入多个网段,需要按源地址分流
  • 高可用软件依赖特定网卡收发心跳与业务流量
  • 迁移过渡期新旧网段并存,临时用策略路由保持可达
  • 排查「从外部 ping 通但 TCP 建不起来」这类回包异常

按源地址分流

按源地址分流
# 假设辅助网卡 eth1 地址为 10.10.2.100/24,网关 10.10.2.1
sudo ip rule add from 10.10.2.100 table 100
sudo ip route add default via 10.10.2.1 dev eth1 table 100
# 验证出口选择
ip route get 10.10.3.10 from 10.10.2.100
# 查看已有规则与优先级
ip rule show
# 注意:重启后 ip rule 会丢失,需写入网络配置或启动脚本

关键命令读法

命令作用读法
ip rule show列出策略规则数值小的先匹配
ip route show table N查看指定路由表确认默认路由指向正确网卡
ip route get ... from ...模拟选路显示实际使用的出口与源地址
ip -br addr查看网卡与地址确认辅助网卡地址已生效
策略路由规则不持久化,实例重启后会失效并复现故障,务必纳入初始化脚本或网络配置文件。
ip rule 的优先级数值越小越先匹配;自定义规则写在一个不合适的优先级上,会让整条规则形同虚设。

易错点

  • 不配策略路由时辅助网卡的回包从主网卡发出,对端直接丢弃,表现为单向不通
  • ip rule 优先级数值设置不当,规则写在匹配不到的位置,配置看起来生效实际无效
  • 规则没有持久化,实例重启后故障复现,排查时容易怀疑是偶发问题
  • 只加规则不验证选路,ip route get 的结果与预期不符却未被发现

数据来源与参考

  • Linux ip-rule 手册
  • 阿里云 弹性网卡文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌