Linux 网络优先级调整:ifmetric 与 route
在多网卡环境中,Linux 常常会同时存在多条默认路由。此时,系统会根据 metric(路由优先级)来决定哪条路由更优先。metric 越小,优先级越高。
当两个网卡的默认路由都被设置为 metric 0 时,系统可能会出现路由选择不稳定,导致流量走向意外的网卡。此时,可以手动调整某个网卡的 metric,让希望优先使用的网卡保持更高优先级。
1. metric 简介
Linux 中,metric 是路由优先级的参数,常用于控制网络的选择顺序。对于多网卡场景,通常建议:
- 让默认出口网卡保留较低的
metric - 将不希望作为主出口的网卡设置为较大的
metric
例如:
eth0:metric 0eth1:metric 100
此时,系统会优先使用 eth0。
2. 安装 ifmetric
在 Debian/Ubuntu 系统中,可以直接使用以下命令安装:
1 | |
安装完成后,就可以使用 ifmetric 命令调整网卡的路由优先级。
3. 使用 ifmetric 调整网络优先级
假设当前希望让 eth1 的优先级降低,让 eth0 成为主网卡,可以这样设置:
1 | |
这条命令的含义是:
- 将
eth1的 metric 设置为100 - 让其优先级低于
metric 0的网卡
查看当前路由优先级
1 | |
或者:
1 | |
通过查看输出,可以确认各网卡对应的路由及其 metric 值。
4. 使用 route 调整路由优先级
除了 ifmetric,也可以直接通过 route 或 ip route 来添加带 metric 的路由。
示例:手动添加带 metric 的路由
1 | |
这条命令表示:
- 访问
192.168.0.111的流量 - 通过网关
192.168.1.254 - 使用
metric 0作为优先级
注意事项
route 方式有一个比较重要的限制:
- 不能直接修改已经存在的路由优先级
- 如果需要调整已有路由,通常需要先删除旧路由,再重新添加
例如:
1 | |
如果网络环境中使用了较新版本的工具,也可以考虑使用
ip route进行更灵活的路由管理。
5. 什么时候需要调整 metric
通常在以下场景中,建议手动调整网络优先级:
- 服务器同时接入内网和外网
- 存在双网卡、双宿主网络环境
- 某些业务必须稳定走指定网卡
- 默认路由被系统自动分配到不期望的网卡
6. 实际建议
在真实生产环境中,推荐优先使用以下策略:
- 确认主网卡的默认路径和目标网段
- 让主出口网卡保持较低的
metric - 使用
ifmetric处理网卡级别的优先级 - 对于单条业务路由,使用
route或ip route做精细控制 - 重启网络服务或重启设备后,重新检查路由是否保持正确
7. 总结
metric 是 Linux 中一个非常重要的网络路由参数。多网卡场景下,合理配置 metric 可以帮助我们:
- 控制出网优先级
- 避免流量误走错误网卡
- 让服务器稳定访问指定网络
如果你是双网卡服务器管理员,掌握 ifmetric 和 route 的配合使用方式,会让网络配置更加稳定和可控。
Linux 网络优先级调整:ifmetric 与 route
https://jgq12138.github.io/2024/06/06/ifmetric/