5154

Good Luck To You!

CentOS设置双网关后冲突怎么办,如何配置策略路由实现分流?

在现代企业网络架构中,服务器有时需要同时接入两个不同的网络,例如一个用于内部管理,另一个用于对外提供服务,这就需要配置双网关,以确保不同来源或目标的流量能够通过正确的路径进行传输,在CentOS系统中,简单地设置两个默认网关会导致路由冲突,系统只会选择其中一个生效,我们需要借助策略路由来实现精细化的流量控制。

CentOS设置双网关后冲突怎么办,如何配置策略路由实现分流?

场景设定

为了清晰地说明配置过程,我们设定一个典型的双网络环境:

网卡 IP地址 子网掩码 网关 用途
eth0 168.1.10 255.255.0 168.1.1 内网通信
eth1 0.0.10 255.255.0 0.0.1 外网访问

我们的目标是:所有从eth0(内网)发起的流量走168.1.1网关,而其他所有流量(包括从eth1发起的)默认走0.0.1网关。

基础网络配置

确保两个网卡的IP地址已正确配置,可以使用nmcli或编辑配置文件,这里以nmcli为例:

# 配置eth0
nmcli con mod eth0 ipv4.addresses 192.168.1.10/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1 # 临时设置,后续会被策略路由覆盖
nmcli con mod eth0 ipv4.method manual
nmcli con up eth0
# 配置eth1
nmcli con mod eth1 ipv4.addresses 10.0.0.10/24
nmcli con mod eth1 ipv4.gateway 10.0.0.1
nmcli con mod eth1 ipv4.method manual
nmcli con up eth1

系统会有一条默认路由,通常是后配置的或优先级更高的那条,我们需要建立策略路由来覆盖这个默认行为。

实施策略路由

策略路由的核心在于创建独立的路由表,并制定规则来决定何时使用哪张表。

创建新的路由表

Linux系统允许定义多张路由表,我们需要为内网流量创建一张专用表,编辑/etc/iproute2/rt_tables文件,在末尾添加一行:

100 internal

这里100是路由表的ID,internal是表的名称,便于记忆。

CentOS设置双网关后冲突怎么办,如何配置策略路由实现分流?

为新路由表添加规则

我们需要为internal这张表添加路由规则,这些规则指定了内网流量的路径。

# 添加到内网网段的路由,指定从eth0出去
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.10 table internal
# 为internal表添加默认网关
ip route add default via 192.168.1.1 dev eth0 table internal

创建路由策略

我们需要告诉系统:当数据包的源地址是168.1.10时,请查询internal路由表。

# 创建规则,源IP为192.168.1.10的流量使用internal路由表
ip rule add from 192.168.1.10/32 table internal

至此,策略路由已临时生效,你可以使用ip rule listip route show table internal来验证。

配置持久化

上述命令在重启后会失效,为了使配置永久生效,需要在网络脚本中定义。

创建路由文件

eth0网卡创建路由文件/etc/sysconfig/network-scripts/route-eth0如下:

CentOS设置双网关后冲突怎么办,如何配置策略路由实现分流?

168.1.0/24 dev eth0 src 192.168.1.10
default via 192.168.1.1 dev eth0 table internal

创建规则文件

同样为eth0创建规则文件/etc/sysconfig/network-scripts/rule-eth0如下:

from 192.168.1.10/32 table internal

重启网络服务

保存文件后,重启网络服务以加载新配置:

systemctl restart network

即使服务器重启,双网关策略路由也会自动生效,确保了网络流量的正确分离。


相关问答FAQs

Q1: 为什么不能简单地在两个网卡的配置文件(如ifcfg-eth0和ifcfg-eth1)中都设置GATEWAY A: 因为Linux系统的核心路由表只能有一条默认路由(0.0.0/0),当你在两个配置文件中都设置了GATEWAY,系统在启动时可能会都加载,但最终只有一条会生效,通常是后加载的或度量值(metric)较低的那条,这会导致另一条路径完全无法使用,无法实现流量分流,策略路由通过创建多个路由表和匹配规则,绕过了这个限制,实现了基于源地址等条件的智能路由选择。

Q2: 如何验证特定流量是否真的走了正确的网关? A: 最直接的方法是使用traceroute(或tracepath)命令,从服务器上发起一个到目标地址的追踪,观察第一跳的IP地址。 要验证内网流量,可以traceroute 192.168.1.20,其第一跳应该是168.1.1,要验证外网流量,可以traceroute www.baidu.com,其第一跳应该是0.0.1,通过这种方式,可以直观地确认策略路由是否按预期工作。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.