Linux 多网卡路由配置与管理
在现代网络环境中,Linux 系统常需配置多张网卡以实现负载均衡、故障转移或网络隔离等功能,多网卡路由配置是 Linux 网络管理的核心技能之一,涉及路由表策略、网络接口绑定及流量控制等技术,本文将详细介绍 Linux 多网卡路由的原理、配置方法及常见场景应用。

多网卡路由的基本原理
Linux 系统通过路由表决定数据包的转发路径,默认情况下,系统使用主路由表(main),根据目标 IP 地址匹配路由条目,当存在多张网卡时,需确保路由表能正确识别不同网卡的出口路径,避免网络冲突或流量丢失。
多网卡路由的核心在于 源地址路由 和 策略路由(Policy Routing),源地址路由允许根据数据包的源 IP 选择特定出口,而策略路由则可通过规则灵活匹配流量(如基于端口、协议等),并将其导向不同的路由表。
网络接口基础配置
在配置多网卡路由前,需确保各网卡已正确识别并分配 IP 地址,以 eth0 和 eth1 为例,使用 ip addr 命令查看接口状态:
ip addr show eth0 ip addr show eth1
若接口未分配 IP,可通过 nmcli(NetworkManager)或手动配置 /etc/network/interfaces(Debian/Ubuntu)或 /etc/sysconfig/network-scripts/(CentOS/RHEL)添加静态 IP。
# Ubuntu 示例
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.0.0.100
netmask 255.255.255.0
注意:默认网关(gateway)通常只需配置在主出口网卡上,避免路由冲突。
手动添加静态路由
当多网卡连接不同网段时,需通过静态路由指定目标网段的出口。eth0 连接 168.1.0/24,eth1 连接 0.0.0/24,需添加路由使流量正确转发:
# 添加路由到 10.0.0.0/24 网段,通过 eth1 出口 ip route add 10.0.0.0/24 dev eth1 # 添加路由到 192.168.1.0/24 网段,通过 eth0 出口 ip route add 192.168.1.0/24 dev eth0
路由添加后,可通过 ip route show 查看当前路由表:

default via 192.168.1.1 dev eth0 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
配置策略路由实现负载均衡
策略路由(Policy Routing)允许基于自定义规则分流流量,将访问 0.0.0/24 的流量强制通过 eth1,其余流量通过 eth0:
-
创建自定义路由表:
编辑/etc/iproute2/rt_tables,添加新表(如table100):echo "100 custom_table" >> /etc/iproute2/rt_tables
-
添加路由规则:
# 将目标 10.0.0.0/24 的路由加入 custom_table ip route add 10.0.0.0/24 dev eth1 table custom_table # 匹配目标 10.0.0.0/24 的流量,使用 custom_table ip rule add to 10.0.0.0/24 table custom_table
-
验证策略路由:
使用ip rule show查看规则,ip route show table custom_table查看自定义表。
使用网络绑定(Bonding)提升可靠性
若需多网卡冗余或负载均衡,可使用 Linux bonding 驱动将多张物理网卡绑定为一个逻辑接口(如 bond0),常见的 bonding 模式包括:
- mode=0 (balance-rr):轮询模式,流量均匀分配。
- mode=1 (active-backup):主备模式,仅一张网卡活动,故障时自动切换。
- mode=6 (balance-alb):自适应负载均衡。
配置 bonding 示例(以 mode=1 为例):
-
加载 bonding 模块:

echo "bonding" >> /etc/modules
-
配置网络接口:
auto bond0 iface bond0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 bond-mode active-backup bond-miimon 100 bond-primary eth0 -
将物理网卡加入 bond0:
auto eth0 iface eth0 inet manual bond-master bond0 auto eth1 iface eth1 inet manual bond-master bond0
多网卡路由的故障排查
配置多网卡路由时,常见问题包括:
- 路由冲突:多个默认网关导致路由异常,可通过
ip route del default删除错误路由。 - 流量未按预期分流:检查
ip rule和ip route规则,确保策略路由正确匹配。 - 接口未激活:使用
ip link set ethX up启用接口,或检查驱动加载状态。
诊断工具推荐:
traceroute:跟踪数据包路径,验证路由是否生效。tcpdump:抓取接口流量,确认数据包是否从正确接口发出。ss -tulpn:检查端口监听状态,避免服务绑定错误 IP。
高级场景:NAT 与端口转发
若需通过多网卡实现 NAT 转发(如内网通过外网网卡上网),可配置 iptables 或 nftables。
# 开启内核转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 配置 NAT(eth0 为外网网卡) iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Linux 多网卡路由配置是网络管理中的关键技能,通过合理规划路由表、策略路由及 bonding 技术,可构建高可用、高性能的网络环境,实际应用中需结合业务需求选择合适方案,并通过持续监控优化网络性能,掌握这些技术,不仅能提升系统可靠性,还能为复杂网络架构设计提供坚实基础。

















