Linux双网卡如何配置路由?,双网卡路由配置失败怎么解决?
- 虚拟主机
- 2026-08-26
- 2
Linux双网卡配置路由的核心在于根据业务需求明确各网卡的角色,通过配置默认路由和策略路由避免路由冲突,并利用路由优先级确保数据包正确转发,错误的配置会导致网络不通或数据包走错路径,影响服务稳定性。
理解双网卡路由的基本原理
Linux系统为每个网络接口自动生成直连路由,当存在多个网卡时,系统会添加多个直连路由,但默认网关只能有一个,否则会引发路由冲突,路由表按照度量值(metric) 选择优先级,数值越小越优先,双网卡配置的本质是管理默认网关和静态路由,让不同流量走指定网卡,外网卡承载默认路由,内网卡通过静态路由访问特定子网。
基础配置方法:从临时到永久
临时配置路由
使用ip route命令快速测试路由配置,但重启后失效。
# 添加默认网关 ip route add default via 192.168.1.1 dev eth0 # 添加静态路由(内网段走eth1) ip route add 10.0.0.0/8 via 10.0.0.1 dev eth1
永久配置路由
RHEL/CentOS/Rocky Linux
外网卡ifcfg-eth0中设置GATEWAY=192.168.1.1,内网卡ifcfg-eth1不设置默认网关,但创建route-eth1文件:
0.0.0/8 via 10.0.0.1 dev eth1
Ubuntu/Debian(netplan)
在YAML配置文件中,用gateway4指定唯一的默认网关,内网卡通过
routes定义静态路由。
network: version: 2 ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 eth1: addresses: [10.0.0.100/24] routes: - to: 10.0.0.0/8 via: 10.0.0.1
注意: Ubuntu的gateway4只能出现一次,若需多个默认网关,必须使用策略路由。
高级配置:策略路由实现精准控制
当需要根据源地址、协议或端口选择不同路由表时,策略路由是唯一方案,让来自内网段(10.0.0.0/8)的流量强制走eth1,其余流量走默认网关。
配置步骤:
-
编辑/etc/iproute2/rt_tables,添加自定义路由表:
100 custom1 -
为自定义路由表添加路由:
ip route add 10.0.0.0/8 dev eth1 table custom1 ip route add default via 10.0.0.1 dev eth1 table custom1 -
添加策略路由规则:
ip rule add from 10.0.0.0/8 table custom1 priority 1000 -
验证配置:
ip rule show ip route show table custom1 -
持久化:将命令写入/etc/rc.local或systemd服务,确保重启后生效。
经验: 规则优先级(priority)要低于系统默认规则(32766),才能优先匹配,多次配置时,注意避免规则冲突。
常见问题与解决方案
-
问题:SSH连接不稳定,频繁断开。
原因:双网卡导致SSH会话的源IP随机变化,解决方案:在SSH配置中绑定ListenAddress到特定IP,或使用策略路由固定返回路径。
-
问题:内网能通,外网访问异常。
原因:内网网卡被自动添加了默认网关,排查:ip route查看默认网关是否指向内网,解决方案:删除内网默认网关,或为其设置更大metric值。
-
问题:重启后路由配置丢失。
原因:未持久化,解决方案:使用配置文件或开机自启脚本。
西西云实战经验案例
在西西云平台,客户常需要将云服务器配置双网卡以分离外部流量和内部流量,一台Web服务器同时绑定公网eth0(面向用户)和内网eth1(连接数据库)。
具体配置过程:
- 在西西云控制台为服务器绑定两个网络接口,分别分配公网IP和内网IP。
- 登录服务器,确认网卡名称(通常为eth0、eth1)。
- 配置外网卡:设置公网IP和默认网关,内网卡:只设置IP,不设置网关,并添加内网路由(如0.0.0/8)。
- 为防止DHCP自动在内网卡上添加默认网关,在ifcfg-eth1中显式设置GATEWAY=为空,并禁用DHCP在内网网卡上获取网关。
- 重启网络服务,验证路由表:ip route应只显示eth0为默认网关,eth1仅有直连路由和静态路由。
关键经验: 在云环境中,系统有时会通过DHCP自动获取网关,导致内网卡也意外获得默认网关,我们通过在内网卡配置文件中加入DHCP_TIMEOUT=0或BOOTPROTO=none来彻底避免,配置完成后务必使用ping和traceroute测试双向连通性,确保路由路径正确。
相关问答
Q1: 如何配置双网卡实现流量负载均衡?
A1: 双网卡负载均衡需要用到bonding技术,将两个网卡绑定为一个逻辑接口,通过mode选择均衡策略(如active-backup或balance-tlb),这不是单纯的路由配置,而是网卡绑定,路由配置只能实现流量分离,无法均衡,如果希望均衡,建议使用bonding或LACP(链路聚合)。
Q2: 双网卡配置后,如何确保特定服务只监听一个网卡?
A2: 可以在服务配置中绑定IP地址,Nginx的listen指令指定IP,SSH的ListenAddress配置,这样,即使路由表有多个网卡,服务也只在指定网卡上接受连接,策略路由可以确保返回流量走同一网卡,避免不对称路由。
互动
如果你在配置双网卡路由时遇到其他问题,或者有更好的经验,欢迎在评论区分享,你的反馈将帮助更多开发者少走弯路。