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


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,通过这种方式,可以直观地确认策略路由是否按预期工作。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

Like (0)
热舞的头像热舞
Previous 2025-10-10 04:35
Next 2025-10-10 04:38

相关推荐

  • 在福建进行网站建设时,备案流程中需提交哪些必要材料?

    福建网站建设公司网站备案需要准备的材料包括:企业营业执照副本、组织机构代码证、税务登记证、网站负责人身份证、网站管理员联系方式、网站域名证书以及网站托管服务商的相关信息。确保这些材料齐全且真实有效,以便顺利完成备案流程。

    2024-07-25
    0013
  • 如何配置服务器以在特定环境中访问指定端口?

    摘要:本文主要讨论了服务器配置访问端口的重要性,并提供了详细的步骤和方法来配置环境内的访问端口。通过合理的配置,可以确保服务器的正常运行和数据的安全传输。

    2024-08-05
    004
  • 在CentOS 6.8中,有哪些命令可以用来查看进程?

    在 CentOS 6.8 系统管理中,查看和管理进程是确保系统稳定运行、排查故障以及优化性能的核心技能之一,进程是正在执行的一个程序实例,系统通过为每个进程分配唯一的进程ID(PID)来管理和调度它们,掌握多种查看进程的方法,能够让系统管理员清晰地了解系统资源的使用情况,及时发现并处理异常,本文将详细介绍在 C……

    2025-10-05
    003
  • CentOS下如何查询80端口被哪个进程占用了?

    在Linux系统管理中,尤其是在部署和维护Web服务时,对80端口的查询是一项极为常见且重要的操作,80端口是HTTP协议的默认端口,绝大多数Web服务器,如Apache(httpd)和Nginx,都默认监听此端口以提供网页访问服务,掌握在CentOS系统中查询80端口状态的方法,是每一位系统管理员必备的技能……

    2025-10-07
    002

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信