[Linux]双网卡 CentOS 系统中指定网络请求走特定网卡的配置方法
前言
在实际的服务器运维工作中,经常会遇到双网卡的 CentOS 系统需要指定某个域名或 IP 通过特定网卡进行网络请求的情况。本文将详细介绍这一过程的具体操作步骤,包括相关配置、问题排查及注意事项。
一、核心配置思路
当需要让某个特定域名(如example.domain.com
)的网络请求通过指定网卡传输时,核心思路是将该域名解析后的 IP 地址与目标网卡进行绑定,通过配置路由规则实现流量的定向传输。这一过程主要涉及目标网卡信息确认、域名 IP 解析、路由规则配置及验证等环节。
二、具体操作步骤
(一)前提准备工作
- 确认目标网卡信息
首先需要明确系统中各网卡的名称及对应 IP 信息,可通过以下命令查看:
ip addr
假设通过该命令查找到目标网卡为eth1
,其 IP 地址为192.168.3.10/24
(虚构 IP)。
同时,查看系统现有路由情况(包含默认网关信息):
ip route show
- 获取域名对应的 IP 地址
使用nslookup
或dig
命令解析目标域名的 IP 地址,例如:
nslookup example.domain.com
假设解析结果为10.20.30.40
(虚构 IP),若有多个 IP 地址,需全部记录。
(二)临时路由配置
通过ip route
命令为域名解析出的 IP 地址添加临时路由,指定通过目标网卡eth1
访问,命令格式如下:
ip route add 10.20.30.40/32 via 192.168.3.1 dev eth1
其中,10.20.30.40/32
表示仅针对该单个 IP;via 192.168.3.1
指定目标网卡的网关;dev eth1
强制通过eth1
网卡发送流量。
若域名对应多个 IP,需逐一添加路由,例如:
ip route add 10.20.30.41/32 via 192.168.3.1 dev eth1ip route add 10.20.30.42/32 via 192.168.3.1 dev eth1
需要注意的是,临时路由在系统重启后会失效。
(三)持久化路由配置
为确保路由配置在系统重启后仍能生效,需进行持久化配置。在 CentOS 系统中,可通过网卡的路由配置文件实现。
- 创建或编辑目标网卡的路由文件,文件名格式为
route-[网卡名称]
,例如eth1
的路由文件为/etc/sysconfig/network-scripts/route-eth1
,命令如下:
vi /etc/sysconfig/network-scripts/route-eth1
- 在该文件中添加与临时路由对应的路由规则,格式如下:
10.20.30.40/32 via 192.168.3.1 dev eth110.20.30.41/32 via 192.168.3.1 dev eth1
- 保存文件后,重启网络服务使配置生效。在 CentOS 7 及更早版本中,可使用:
systemctl restart network
而在 CentOS 8 及以上版本,network.service
已被废弃,需使用NetworkManager
服务:
systemctl restart NetworkManager
也可重启特定网卡:
ifdown eth1 && ifup eth1
(四)配置验证
- 查看路由是否添加成功,使用命令:
ip route show | grep 10.20.30.40
若输出包含via 192.168.3.1 dev eth1
,则说明路由配置成功。
- 测试流量是否通过目标网卡,可使用
curl
或traceroute
命令:
curl -v example.domain.com 2>&1 | grep "Connected to"traceroute example.domain.com
若Connected to
后的 IP 对应目标网卡的网段,或traceroute
首跳为目标网卡网关,则配置生效。
三、相关问题及解决方法
(一)查看指定网卡网关
若不确定目标网卡的网关信息,可通过以下方法查看:
- 使用
ip route
命令,先找到目标网卡名称,再查看对应网关:
ip route show | grep "dev eth1"
若输出类似default via 192.168.3.1 dev eth1
,则192.168.3.1
即为该网卡的网关。
- 查看网卡配置文件,进入网络配置文件目录:
cd /etc/sysconfig/network-scripts/
找到对应网卡的配置文件(如ifcfg-eth1
),查看其中的网关配置:
cat ifcfg-eth1
若文件中存在GATEWAY=192.168.3.1
,则等号后的值即为网关。
(二)删除路由配置
若需要删除已添加的路由,可使用ip route del
命令:
ip route del 10.20.30.40/32 via 192.168.3.1 dev eth1
同时,若该路由已写入持久化配置文件,需手动编辑文件删除对应的行,并重启网络服务。
(三)路由配置文件相关
/etc/sysconfig/network-scripts
目录下的route-<网卡名>
文件是手动创建的持久化路由配置文件,系统默认不会自动生成。只有当为某块网卡配置过持久化路由时,对应的文件才会存在。若需要为eth1
配置持久化路由,可手动创建route-eth1
文件并添加相应规则。
原创内容,转发请注明。