多网卡路由优先级调整实战指南
背景与问题
在IDC或企业数据中心中,服务器常部署多块网卡以分离管理、业务、备份等流量。当多个网卡配置了不同网关时,操作系统默认会依据路由表Metric(跃点数)决定优先级。若Metric值设置不当,会导致数据包经由非最优链路转发,引发延迟升高、链路拥塞甚至网络中断。
路由优先级核心机制
Metric值的作用
Linux/Windows系统中,每一条静态路由或默认网关都关联一个Metric数值。数值越小,优先级越高。数据包匹配路由表时,优先选择Metric最小的条目。例如:
- eth0网关192.168.1.1 Metric 100
- eth1网关10.0.0.1 Metric 200
此时默认流量将走eth0。若eth0故障,系统自动切换到Metric较大的eth1。
多网关冲突场景
当两个网卡属于不同子网但都配置了默认网关时,除非显式指定Metric,否则操作系统可能使用随机或默认Metric,造成优先级混乱。常见表现:
- 外网访问时延不稳定
- 内网流量意外路由至公网网关
- 管理网段无法连通
调整方法(Linux为例)
1. 临时调整(立即生效,重启失效)
使用ip route命令修改默认网关的Metric:
ip route del default
ip route add default via 192.168.1.1 dev eth0 metric 50
ip route add default via 10.0.0.1 dev eth1 metric 100
注意:删除默认路由后再添加,避免多默认路由冲突。
2. 永久调整(重启后保留)
在/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS/Red Hat)或/etc/network/interfaces(Debian/Ubuntu)中添加:
对于CentOS/RHEL:
METRIC=50
配置文件保存后重启网络服务:systemctl restart network
3. 使用策略路由(复杂场景)
当需要基于源IP、协议、端口等条件选择不同出口时,策略路由更为灵活。创建自定义路由表:
echo "100 eth0_table" >> /etc/iproute2/rt_tables
ip rule add from 192.168.1.0/24 table eth0_table
ip route add default via 192.168.1.1 table eth0_table
这种方式可精确控制流量走向,避免全局Metric冲突。
Windows系统调整方法
通过route命令或图形界面修改接口跃点数:
- 打开“网络和共享中心” → 更改适配器设置
- 右键网卡 → 属性 → 双击“Internet协议版本4”
- 点击“高级” → 取消“自动跃点” → 手动输入跃点数(数值越小优先级越高)
也可用命令行:route -p change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 50
注意事项
- 避免冲突:确保不同网卡配置的网关地址不重复,否则需删除冗余默认路由。
- 链路监测:结合心跳检测或双机热备脚本,当高优先级链路中断时自动降级。
- IPv6场景:IPv6路由优先级同样依赖Metric,调整方法类似。
- 容器/虚拟化环境:需注意宿主机与虚拟机路由表隔离,调整策略在宿主机侧进行。
总结
合理调整服务器多网卡路由优先级是保障IDC网络高可用性的关键手段。建议运维人员根据业务流量模型,结合Metric调整或策略路由,实现精细化的流量调度。定期审计路由表配置,避免因错误配置导致业务中断。