CentOS中设置永久路由需通过配置文件或NetworkManager实现。使用/etc/sysconfig/network-scripts/route-eth0(CentOS 7及以下)或nmcli connection modify(CentOS 8及以上)添加路由,确保重启后生效。ip route add仅临时生效,因路由表在内存中,重启即丢失。推荐使用nmcli,支持统一管理、语法校验、动态加载且适合脚本自动化。配置后需用ip route show、ping、traceroute验证,并重启系统确认持久性。常见问题包括配置语法错误、服务未重启、网关不可达或防火墙拦截,需逐一排查。

在CentOS中设置永久路由,核心在于确保系统在重启后能够自动加载这些路由规则。这通常通过修改网络接口的配置文件或利用NetworkManager的持久化功能来实现,而不是仅仅依赖于临时的
ip route add
在CentOS中配置永久静态路由,我通常会根据系统版本和个人习惯选择以下几种方法,它们都能确保路由在系统重启后依然有效。
方法一:通过网络接口配置文件(传统方式,CentOS 7及更早版本常用)
这种方法是直接编辑
/etc/sysconfig/network-scripts/
eth0
创建或编辑路由文件: 通常,我会为每个需要添加静态路由的网络接口创建一个对应的路由文件,例如
/etc/sysconfig/network-scripts/route-eth0
ens33
route-ens33
sudo vi /etc/sysconfig/network-scripts/route-eth0
添加路由规则: 在这个文件中,每行代表一条路由规则。有两种常见的格式:
格式一:目标网络 via 网关 dev 接口 这是我个人比较喜欢用的,因为它直观明了,明确指定了通过哪个接口走。
# 示例:将所有发往 192.168.2.0/24 网段的流量,通过 192.168.1.1 这个网关,经由 eth0 接口发送 192.168.2.0/24 via 192.168.1.1 dev eth0 # 示例:如果需要添加多条,就一行一条 10.0.0.0/8 via 192.168.1.254 dev eth0
格式二:ADDRESSX=... NETMASKX=... GATEWAYX=... 这种格式在一些旧文档里也常见,但我觉得不如第一种直观,尤其在路由较多时,管理起来有点啰嗦。
# 示例: ADDRESS0=192.168.2.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.1 ADDRESS1=10.0.0.0 NETMASK1=255.0.0.0 GATEWAY1=192.168.1.254
请注意,
X
应用配置: 保存文件后,需要重启网络服务或重新加载接口配置。
sudo systemctl restart network # CentOS 7 # 或者对于单个接口: sudo ifdown eth0 && sudo ifup eth0
在CentOS 8/RHEL 8+,通常推荐使用NetworkManager来管理。
方法二:通过 NetworkManager CLI (nmcli
nmcli
查看当前连接: 首先,你需要知道你的网络连接名称。
nmcli connection show
你会看到类似
ethernet-eth0
System eth0
ethernet-eth0
添加永久路由: 使用
nmcli connection modify
# 示例:将所有发往 192.168.2.0/24 网段的流量,通过 192.168.1.1 这个网关发送 sudo nmcli connection modify ethernet-eth0 +ipv4.routes "192.168.2.0/24 192.168.1.1" # 如果需要添加多条,就重复执行此命令 sudo nmcli connection modify ethernet-eth0 +ipv4.routes "11.0.0.0/8 192.168.1.254"
这里的
+
激活或重新加载连接: 添加路由后,需要重新激活该连接才能使配置生效。
sudo nmcli connection up ethernet-eth0
或者,你也可以重启NetworkManager服务,但这会影响所有网络连接。
sudo systemctl restart NetworkManager
方法三:通过 /etc/sysconfig/static-routes
这个文件在某些旧的CentOS版本中被用来集中管理所有静态路由,但现在已经不那么常见了。如果你的系统没有NetworkManager或者你更喜欢这种集中管理的方式,也可以考虑。
创建或编辑文件:
sudo vi /etc/sysconfig/static-routes
添加路由规则: 每行一条路由规则,格式与
route-ethX
# 示例: any net 192.168.2.0/24 gw 192.168.1.1 any net 10.0.0.0/8 gw 192.168.1.254
应用配置: 同样需要重启网络服务。
sudo systemctl restart network
ip route add
这个问题我被问过太多次了,也亲身经历过好几次。你有没有过这样的经历:在服务器上辛辛苦苦用
ip route add
其实,这并不是CentOS在故意跟你作对,而是
ip route add
ip route add
所以,
ip route add
nmcli
在我看来,NetworkManager及其命令行工具
nmcli
/etc/sysconfig/network-scripts/
nmcli
用
nmcli
nmcli
nmcli connection modify
nmcli
nmcli connection up <connection_name>
nmcli
nmcli
sed
awk
如何用 nmcli
添加路由: 前面已经提到,使用
sudo nmcli connection modify <connection_name> +ipv4.routes "目标网络/前缀 网关IP"
sudo nmcli connection modify ethernet-eth0 +ipv4.routes "192.168.3.0/24 192.168.1.1"
查看已配置的永久路由: 你可以查看特定连接的详细配置,其中包括了
ipv4.routes
nmcli connection show ethernet-eth0 | grep ipv4.routes
这会显示所有通过
nmcli
删除永久路由: 删除路由也很简单,使用
-ipv4.routes
# 注意:你需要提供完整的路由条目才能准确删除 sudo nmcli connection modify ethernet-eth0 -ipv4.routes "192.168.3.0/24 192.168.1.1"
删除后,同样需要
nmcli connection up ethernet-eth0
在我看来,如果你正在使用CentOS 8或更高版本,或者你的系统已经默认使用了NetworkManager,那么熟练掌握
nmcli
配置完永久路由,最关键的一步就是验证它是否真的生效了,并且在重启后依然存在。如果配置不当,可能会导致网络不通,甚至影响整个服务器的连通性。我通常会按照以下步骤进行验证和排查:
1. 验证路由表:
这是最直接的验证方式。使用
ip route show
ip route show
你应该能在这里看到你刚刚添加的路由条目。例如,如果你添加了
192.168.2.0/24 via 192.168.1.1 dev eth0
2. 测试连通性:
仅仅看到路由表中有条目还不够,还需要实际测试它是否能正常工作。
Ping目标网络中的IP地址: 选择目标网络中的一个已知可达的IP地址进行ping测试。
ping 192.168.2.100 # 假设 192.168.2.100 是目标网络中的一台设备
如果能够ping通,说明路由基本是正确的。
Traceroute追踪路由路径:
traceroute
traceroute 192.168.2.100
你应该能看到数据包首先经过你的网关(192.168.1.1),然后进入目标网络。
3. 重启验证:
既然是“永久路由”,那么重启后是否依然存在就是最终的检验标准。
sudo reboot
系统重启后,再次使用
ip route show
ping
常见问题排查:
如果在验证过程中发现问题,不要慌,这很常见。以下是一些我经常遇到的问题和排查思路:
路由表未出现或不正确:
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/static-routes
nmcli
sudo systemctl restart network
sudo nmcli connection up <connection_name>
/etc/sysconfig/network-scripts/
root
Ping不通或Traceroute异常:
firewalld
iptables
dev
eth0
ip link show
nmcli device status
重启后路由丢失:
nmcli
nmcli connection modify
nmcli connection up
最佳实践:
sudo cp /etc/sysconfig/network-scripts/route-eth0 /etc/sysconfig/network-scripts/route-eth0.bak
通过这些细致的验证和排查步骤,你就能大大提高CentOS永久路由配置的成功率和稳定性。
以上就是CentOS怎么设置永久路由_CentOS添加永久静态路由配置教程的详细内容,更多请关注php中文网其它相关文章!
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号