首页/系统/Linux 运维命令速查/场景:多网卡/多出口选路验证
网络命令82 条

场景:多网卡/多出口选路验证

双网卡机器(内网+公网、专线+宽带)常出现「从哪出去、以谁为源」的错位:用 ip route get 与 curl --interface 验证。

Linux 运维命令速查系统更新于 2026-10-13

多出口环境的三类错位

双网卡或多出口机器(内网加公网、专线加宽带)常见三类问题:报文从错误的接口出去、源地址与业务预期不一致、返回路径被反向过滤丢掉。验证走三步:ip route get 看内核实际选路与源地址,ip rule show 看策略路由的规则顺序,再用 ping -I 与 curl --interface 指定出口做端到端实测。

基本信息

适用平台Linux(iproute2、curl、iputils)
核心命令ip route get、ip rule show、ping -I、curl --interface
关键参数rp_filter 反向路径过滤(0 关闭、1 严格、2 松散)
常见架构默认路由加策略路由、双默认路由不同 metric
留痕要求改动前备份 ip rule 与 ip route 全量输出

典型使用场景

  • 双出口机器上确认业务流量实际走哪条线
  • 验证对外访问的源 IP 是否是预期公网地址
  • 策略路由改完后复核是否按源选路
  • 排查非对称路由导致的连接超时
  • 上线前核对多机房的出口规划是否符合设计

查看选路与实测

查看选路与实测
ip route get 8.8.8.8                    # 内核实际选路:出口接口与源地址
ip route get 8.8.8.8 from 10.0.0.5      # 指定源地址后再看选路,贴近真实业务
ip rule show                            # 策略路由规则顺序,从上到下先匹配先生效
ip route show table all | head -30      # 各路由表的内容
ping -I eth1 -c 2 8.8.8.8               # 指定出口接口实测连通性
curl -sS --interface eth1 -o /dev/null -w '%{http_code}\n' https://example.com
curl -sS https://ifconfig.me            # 看实际对外出口 IP 是否符合预期
sysctl net.ipv4.conf.all.rp_filter      # 反向路径过滤设置,非对称流量常被它拦掉

问题与判据

问题判据处理方向
走错出口ip route get 显示的接口与预期不符检查默认路由 metric 与策略路由优先级
源地址不对ip route get 输出的 src 与业务预期不同用 ip route get ... from 复核,必要时加策略路由
返回路径被丢能从某接口发出但会话建立失败核对 rp_filter 与上游是否做反向过滤
表面正常实际错线ping 通但业务走了另一条线用 curl --interface 与出口 IP 查询做端到端验证
改完无法回滚未留存改动前的输出动手前完整备份 ip rule 与 ip route
修改默认路由或新增策略路由是高风险操作,可能在当前会话中断网:动手前完整备份 ip rule 与 ip route 输出,并确保有带外管理或本地控制台通道。
辅助 IP、多出口与 NAT 组合下容易出现非对称路由,此时 rp_filter 过严会静默丢包:要按 all 与具体网卡两个层级分别核对,而不是只改全局值。

易错点

  • 只看 ip route get 不指定源:得到的源地址可能不是业务实际使用的那个,关键场景要显式加 from
  • 改动前不备份路由与规则:出问题无法快速回滚,恢复全靠记忆
  • 忽略 rp_filter:非对称流量被静默丢弃,表现为“偶尔连不上”且没有明确报错
  • ping 通就判定选路正确:ping 与业务流量的源、端口、协议可能不同,需要 curl --interface 等端到端验证

数据来源与参考

  • man 8 ip-route(iproute2 手册)
  • man 8 ip-rule

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌