服务器跨网段访问路由配置从零开始实操指南
什么时候需要配置跨网段路由
当服务器连接的两个网段不在同一子网时(例如内网192.168.1.0/24和业务网10.0.0.0/24),默认情况下它们无法直接通信。
这就需要手动添加路由规则,告诉服务器“访问某个网段的数据包应该从哪个网关走”。
常见场景包括:双网卡服务器、虚拟机与宿主机跨网段、混合云环境等。
准备条件:
- 已获取目标网段的网关IP(例如
10.0.0.1)。 - 知道本服务器网卡对应的接口名称(可使用
ip a查看)。 - 具备root或sudo权限。
添加静态路由:临时与永久方法
方法一:临时添加(重启后失效)
使用route或ip route命令,适合测试环境。
# 添加去往 10.0.0.0/24 网段的路由,网关为 192.168.1.1,接口为 eth1
ip route add 10.0.0.0/24 via 192.168.1.1 dev eth1
验证是否添加成功:
ip route show
# 输出中应包含:10.0.0.0/24 via 192.168.1.1 dev eth1
方法二:永久生效(推荐)
修改系统网络配置文件,不同发行版路径略有差异。
CentOS/RHEL 7/8 或 Rocky Linux:
编辑对应网卡的配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth1),在末尾添加:
GATEWAY=192.168.1.1
如果同一张网卡需要多个静态路由,新建文件/etc/sysconfig/network-scripts/route-eth1,写入:
10.0.0.0/24 via 192.168.1.1 dev eth1
Ubuntu/Debian(使用Netplan):
编辑/etc/netplan/*.yaml,在对应网卡下增加routes字段:
network:
ethernets:
eth1:
routes:
- to: 10.0.0.0/24
via: 192.168.1.1
执行netplan apply使配置生效。
多网关冲突:一个必须避开的坑
服务器配置了双网卡且两个网卡都设了默认网关时,会导致路由表混乱,数据包可能走错出口。解决原则:只保留一个默认网关,其余网段通过静态路由指定。
例如:服务器有两块网卡,eth0负责日常上网(网关192.168.1.1),eth1连接专用网络(网关10.0.0.1)。
正确做法:
- 只给
eth0配置默认网关。 - 给
eth1配置静态路由,仅将10.0.0.0/24的流量指向10.0.0.1。
检查当前默认网关:
ip route show | grep default
如果发现两条default路由,使用以下命令删除多余的(小心操作):
ip route del default via 10.0.0.1 dev eth1
然后再永久删除配置文件中对应网关的GATEWAY项。
高频问题排查
Q1:添加路由后仍无法ping通目标网段?
- 使用
traceroute或tracert检查数据包路径,确认是否到了正确网关。 - 检查目标网段是否有回程路由(对端也需要配置返回本机的路由)。
- 临时关闭防火墙测试:
systemctl stop firewalld(生产环境慎用)。
Q2:重启后路由丢失?
- 确认你使用的是永久配置方法(配置文件或Netplan)。
- 检查网卡配置文件中是否被自动添加了其他重复路由。
- 可以通过
nmcli命令检查NetworkManager管理的路由状态。
Q3:ip route add报错“RTNETLINK answers: File exists”
- 表示该路由已存在,先删除再添加:
ip route del 10.0.0.0/24。
验证跨网段访问是否成功
执行以下任意一种方式验证:
- ping连通性测试
ping -c 4 10.0.0.100
# 如果收到回复,说明路由生效
- 路由追踪
traceroute 10.0.0.100
# 第一跳应该是你配置的网关IP
- 检查路由表
ip route get 10.0.0.100
# 输出应该显示 via 192.168.1.1 dev eth1
如果你当前正面临服务器跨网段访问路由配置的问题,建议先按本文步骤完整执行,再根据自己的环境微调网关IP和网卡名称;
遇到异常时优先回看“多网关冲突”和“高频问题”部分,大部分坑都能在那里找到答案。