在 Linux 系统中,让路由规则“生效”通常取决于你使用的配置方式(临时命令 vs 永久配置文件)以及具体的网络环境,以下是几种常见场景下让路由生效的方法:
使用 ip route 命令(临时生效,重启后失效)
这是最常用的调试和临时修改方式,添加路由后,立即生效,无需重启网络服务。
# 添加一条静态路由 sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 # 验证路由是否生效 ip route show # 或 route -n
注意:如果重启系统或网络服务,这些路由会丢失。
永久生效:根据发行版配置
要使路由在重启后依然有效,需要修改配置文件,不同 Linux 发行版的配置方式不同:
A. 使用 Netplan(Ubuntu 18.04+、Debian 10+ 等)
Netplan 是较新的网络配置工具,使用 YAML 文件。
- 编辑 Netplan 配置文件(通常在
/etc/netplan/目录下,如01-netcfg.yaml或50-cloud-init.yaml):
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
routes:
- to: 192.168.2.0/24
via: 192.168.1.1
应用配置:
sudo netplan apply
B. 使用 NetworkManager(CentOS/RHEL 8+、Fedora、Ubuntu 桌面版)
NetworkManager 可以通过 nmcli 命令或编辑 /etc/NetworkManager/system-connections/ 下的文件来添加路由。
使用 nmcli 命令
# 假设你的连接名称是 "Wired connection 1" nmcli connection modify "Wired connection 1" ipv4.routes "192.168.2.0/24 192.168.1.1" nmcli connection up "Wired connection 1"
编辑配置文件
编辑 /etc/NetworkManager/system-connections/<your-connection-name>.nmconnection,在 [ipv4] 部分添加:
[ipv4] method=manual addresses=192.168.1.100/24 routes=192.168.2.0/24 192.168.1.1 gateway=192.168.1.1
然后重启 NetworkManager 或重新激活连接:
sudo nmcli connection reload sudo nmcli connection up "Wired connection 1"
C. 使用传统 ifupdown(Debian/Ubuntu 旧版、CentOS 7 及以前)
编辑 /etc/network/interfaces 文件:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
# 添加静态路由
up ip route add 192.168.2.0/24 via 192.168.1.1
# 或者使用 route 命令(旧版)
# up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1
重启网络服务:
sudo systemctl restart networking # 或 sudo /etc/init.d/networking restart
D. 使用 systemd-networkd(Arch Linux、部分服务器版)
编辑 /etc/systemd/network/ 下的 .network 文件:
[Network] Address=192.168.1.100/24 Gateway=192.168.1.1 [Route] Destination=192.168.2.0/24 Gateway=192.168.1.1
重启服务:
sudo systemctl restart systemd-networkd
路由未生效?排查步骤
如果添加路由后 ip route show 看不到,或无法通信,请按以下步骤排查:
-
检查路由表:
ip route show
确认目标网络、网关和设备是否正确。
-
检查默认网关:
确保默认网关(default via ...)存在且正确。 -
检查防火墙:
- iptables/nftables:是否阻止了相关流量?
sudo iptables -L -n -v
- firewalld(CentOS/RHEL):
sudo firewall-cmd --list-all
- iptables/nftables:是否阻止了相关流量?
-
检查 SELinux/AppArmor:
某些安全模块可能阻止网络配置更改(较少见,但需留意)。 -
检查网卡状态:
ip link show
确保网卡是
UP状态。 -
检查路由冲突:
如果有多个路由指向同一目标,Linux 会根据 metric(优先级) 选择最优路径,metric 值越小,优先级越高。ip route show # 查看 metric 列
-
重启网络服务:
修改配置文件后,务必重启相应的网络服务或重新加载配置。
| 场景 | 命令/操作 | 是否永久 |
|---|---|---|
| 临时测试 | sudo ip route add ... |
❌ 否 |
| Ubuntu/Debian (新) | 编辑 /etc/netplan/.yaml + netplan apply |
✅ 是 |
| CentOS/RHEL 8+ | nmcli connection modify ... |
✅ 是 |
| Debian/Ubuntu (旧) | 编辑 /etc/network/interfaces + 重启 networking |
✅ 是 |
| Arch Linux | 编辑 /etc/systemd/network/.network + 重启 systemd-networkd |
✅ 是 |
根据你的 Linux 发行版选择对应的方法即可。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476429.html



