双网卡配置是Linux运维中一项常见且容易出错的挑战——当服务器同时连接内网和外网linux双网卡路由表配置,默认路由可能让流量走向错误的方向,导致网络不通。很多新手甚至老手都曾在这里栽跟头。实际上,只要理解路由表的工作机制,掌握几条核心命令,配置就不再是难题。

为什么默认路由会冲突

linux系统网卡配置命令_linux双网卡路由表配置_网卡配置linux

双网卡环境下,系统会自动为每个网卡生成一条默认路由。默认路由的优先级由跃点数(metric)决定linux培训,通常数值越小的路径优先级越高。如果两个网卡都连接到不同的网关,系统只会选择跃点数最小的那条默认路由,另一张网卡的流量就会被错误地导向错误的网关。更深层的问题在于,内核的路由策略默认只用一张主路由表,无法区分来自不同网卡的流量应该走哪条路。比如eth0接内网,eth1接外网,当内网需要访问某个外网地址时,请求可能从eth0发出,却通过eth1的网关返回,导致不对称路由,直接丢包。这就像一个人同时有两个出口,却只能从一个门出去,进进出出自然乱套。

如何配置永久生效的双网卡路由

临时配置可以通过route或ip命令完成中标linux,但重启后就会失效。想要永久生效,有两种主流方法。第一种是修改网卡配置文件,在/etc/sysconfig/network-scripts/目录下找到对应网卡的配置文件,比如ifcfg-eth0,在里面添加一行“GATEWAY=你的网关地址”。注意,如果两个网卡都写了默认网关,系统会随机选择,所以通常只在主网卡配置默认网关,另一张网卡只写IP和掩码,不加网关。第二种方法是利用/etc/sysconfig/network-scripts/route-ethX文件来写入静态路由。比如要让访问内网192.168.10.0/24的流量通过eth0发送,就在route-eth0中写入“192.168.10.0/24 via 192.168.10.1 dev eth0”。这样每次重启网络服务时,系统都会自动加载这条路由,比脚本更稳定。

linux系统网卡配置命令_网卡配置linux_linux双网卡路由表配置

策略路由如何实现精细分流

当两个网卡都需要访问外部网络时,策略路由是最优雅的方案。它的核心思想是创建多个自定义路由表,然后根据数据包的源IP、源端口或防火墙标记来选择走哪张表。操作步骤分为三步。第一步,创建两张自定义路由表linux双网卡路由表配置,在/etc/iproute2/rt_tables文件中添加两行,比如“100 eth0_table”和“200 eth1_table”。第二步,往这两张表中写入路由规则,比如“ip route add default via 192.168.1.1 dev eth0 table eth0_table”和“ip route add default via 10.0.0.1 dev eth1 table eth1_table”。第三步,添加策略规则,让来自eth0网卡IP的流量使用eth0_table,来自eth1网卡IP的流量使用eth1_table。命令是“ip rule add from eth0的IP lookup eth0_table”和“ip rule add from eth1的IP lookup eth1_table”。执行完这些后,系统会根据流量来源自动选择正确的网关,双网卡都能正常工作,互不干扰。

常见故障排查与测试方法

配置完成后,用ip route show和ip rule show查看当前默认路由和策略规则是否生效。还可以用traceroute命令测试目标IP的路径走向,比如“traceroute 8.8.8.8”看外网请求是否经过预期的网关。如果发现路由不对,先检查跃点数是否设置合理,再确认策略规则的顺序是否正确——规则是按优先级从高到低匹配的,匹配到第一条就停止。另外,防火墙的规则也可能干扰路由,比如iptables的SNAT或MASQUERADE规则如果写错了源IP,即使路由正确也会导致数据包无法返回。遇到不通时,先关掉防火墙测试,排除干扰项。还有一个隐藏的坑:如果两台网关无法互相通信,即使路由配置正确,也可能出现间歇性丢包。例如内网网关和外网网关不在同一网段,且没有路由互通,那么来自内网网卡的响应包可能被丢弃。

双网卡路由表配置并没有想象中那么复杂。理解路由优先级与策略路由的区别,掌握永久配置的两种方法,再加上清晰的排查思路,就能让服务器稳定地运行在多个网络环境中。每次遇到不通的情况,先从路由表看起,再顺着策略规则和防火墙一层层排查,问题总能找到答案。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复