Linux 网络优先级调整:ifmetric 与 route

在多网卡环境中,Linux 常常会同时存在多条默认路由。此时,系统会根据 metric(路由优先级)来决定哪条路由更优先。metric 越小,优先级越高。

当两个网卡的默认路由都被设置为 metric 0 时,系统可能会出现路由选择不稳定,导致流量走向意外的网卡。此时,可以手动调整某个网卡的 metric,让希望优先使用的网卡保持更高优先级。

1. metric 简介

Linux 中,metric 是路由优先级的参数,常用于控制网络的选择顺序。对于多网卡场景,通常建议:

  • 让默认出口网卡保留较低的 metric
  • 将不希望作为主出口的网卡设置为较大的 metric

例如:

  • eth0metric 0
  • eth1metric 100

此时,系统会优先使用 eth0

2. 安装 ifmetric

在 Debian/Ubuntu 系统中,可以直接使用以下命令安装:

1
sudo apt install ifmetric

安装完成后,就可以使用 ifmetric 命令调整网卡的路由优先级。

3. 使用 ifmetric 调整网络优先级

假设当前希望让 eth1 的优先级降低,让 eth0 成为主网卡,可以这样设置:

1
sudo ifmetric eth1 100

这条命令的含义是:

  • eth1 的 metric 设置为 100
  • 让其优先级低于 metric 0 的网卡

查看当前路由优先级

1
ip route

或者:

1
route -n

通过查看输出,可以确认各网卡对应的路由及其 metric 值。

4. 使用 route 调整路由优先级

除了 ifmetric,也可以直接通过 routeip route 来添加带 metric 的路由。

示例:手动添加带 metric 的路由

1
sudo route add -host 192.168.0.111 gw 192.168.1.254 metric 0

这条命令表示:

  • 访问 192.168.0.111 的流量
  • 通过网关 192.168.1.254
  • 使用 metric 0 作为优先级

注意事项

route 方式有一个比较重要的限制:

  • 不能直接修改已经存在的路由优先级
  • 如果需要调整已有路由,通常需要先删除旧路由,再重新添加

例如:

1
2
sudo route del -host 192.168.0.111 gw 192.168.1.254
sudo route add -host 192.168.0.111 gw 192.168.1.254 metric 0

如果网络环境中使用了较新版本的工具,也可以考虑使用 ip route 进行更灵活的路由管理。

5. 什么时候需要调整 metric

通常在以下场景中,建议手动调整网络优先级:

  • 服务器同时接入内网和外网
  • 存在双网卡、双宿主网络环境
  • 某些业务必须稳定走指定网卡
  • 默认路由被系统自动分配到不期望的网卡

6. 实际建议

在真实生产环境中,推荐优先使用以下策略:

  1. 确认主网卡的默认路径和目标网段
  2. 让主出口网卡保持较低的 metric
  3. 使用 ifmetric 处理网卡级别的优先级
  4. 对于单条业务路由,使用 routeip route 做精细控制
  5. 重启网络服务或重启设备后,重新检查路由是否保持正确

7. 总结

metric 是 Linux 中一个非常重要的网络路由参数。多网卡场景下,合理配置 metric 可以帮助我们:

  • 控制出网优先级
  • 避免流量误走错误网卡
  • 让服务器稳定访问指定网络

如果你是双网卡服务器管理员,掌握 ifmetricroute 的配合使用方式,会让网络配置更加稳定和可控。


Linux 网络优先级调整:ifmetric 与 route
https://jgq12138.github.io/2024/06/06/ifmetric/
作者
JGQ12138
发布于
2024年6月6日
许可协议