当前位置:首页 > 虚拟主机 > 正文

Linux双网卡如何配置路由?,双网卡路由配置失败怎么解决?

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,其余流量走默认网关。

配置步骤:

  1. 编辑/etc/iproute2/rt_tables,添加自定义路由表:

    100 custom1
  2. 为自定义路由表添加路由:

    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
  3. 添加策略路由规则:

    ip rule add from 10.0.0.0/8 table custom1 priority 1000
  4. 验证配置:

    ip rule show ip route show table custom1
  5. 持久化:将命令写入/etc/rc.local或systemd服务,确保重启后生效。

经验: 规则优先级(priority)要低于系统默认规则(32766),才能优先匹配,多次配置时,注意避免规则冲突。

常见问题与解决方案

  • 问题:SSH连接不稳定,频繁断开。

    原因:双网卡导致SSH会话的源IP随机变化,解决方案:在SSH配置中绑定ListenAddress到特定IP,或使用策略路由固定返回路径。

  • 问题:内网能通,外网访问异常。

    原因:内网网卡被自动添加了默认网关,排查:ip route查看默认网关是否指向内网,解决方案:删除内网默认网关,或为其设置更大metric值。

  • 问题:重启后路由配置丢失。

    原因:未持久化,解决方案:使用配置文件或开机自启脚本。

西西云实战经验案例

在西西云平台,客户常需要将云服务器配置双网卡以分离外部流量和内部流量,一台Web服务器同时绑定公网eth0(面向用户)和内网eth1(连接数据库)。

具体配置过程:

  1. 在西西云控制台为服务器绑定两个网络接口,分别分配公网IP和内网IP。
  2. 登录服务器,确认网卡名称(通常为eth0、eth1)。
  3. 配置外网卡:设置公网IP和默认网关,内网卡:只设置IP,不设置网关,并添加内网路由(如0.0.0/8)。
  4. 为防止DHCP自动在内网卡上添加默认网关,在ifcfg-eth1中显式设置GATEWAY=为空,并禁用DHCP在内网网卡上获取网关。
  5. 重启网络服务,验证路由表: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配置,这样,即使路由表有多个网卡,服务也只在指定网卡上接受连接,策略路由可以确保返回流量走同一网卡,避免不对称路由。

互动

如果你在配置双网卡路由时遇到其他问题,或者有更好的经验,欢迎在评论区分享,你的反馈将帮助更多开发者少走弯路。

0