上一篇
linux如何增加静态路由
- Linux
- 2025-08-01
- 2
Linux中,可通过
ip
命令或编辑
/etc/network/routes
文件添加静态路由,
ip route add / via
是关于Linux如何增加静态路由的详细说明:
临时添加静态路由
在Linux系统中,可以使用route
或ip
命令临时添加静态路由,这些命令只在当前会话中生效,系统重启后会失效。
-
使用
route
命令- 添加到主机的路由:
route add -host <目标主机IP> dev <网络接口>
或者route add -host <目标主机IP> gw <网关IP>
,要将数据包发送到主机192.168.1.10并通过eth0接口出去,可执行route add -host 192.168.1.10 dev eth0
;若要指定网关,则用route add -host 192.168.1.10 gw 192.168.1.1
。 - 添加到网络的路由:
route add -net <目标网络> netmask <子网掩码> dev <网络接口>
、route add -net <目标网络> netmask <子网掩码> gw <网关IP>
或route add -net <目标网络/CIDR前缀长度> gw <网关IP>
,添加目标网络为192.168.1.0/24(即子网掩码为255.255.255.0)、网关为192.168.1.1的路由,可以是route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
,也可以写成route add -net 192.168.1.0/24 gw 192.168.1.1
。 - 添加默认网关:
route add default gw <网关IP>
,设置默认网关为192.168.2.1的命令是route add default gw 192.168.2.1
。 - 删除路由:对应的删除命令分别为
route del -host <目标主机IP> dev <网络接口>
、route del -net <目标网络> netmask <子网掩码> gw <网关IP>
等。
- 添加到主机的路由:
-
使用
ip
命令- 添加静态路由:
ip route add <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口>
,如添加一条指向192.168.2.0/24网络、经由网关192.168.1.1和eth0接口的路由,命令为ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
。 - 删除静态路由:
ip route del <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口>
。
- 添加静态路由:
永久添加静态路由
为了使静态路由在系统重启后依然有效,需要将其配置为永久生效,有以下几种常见方法:
方法 | 操作步骤 | 优点 | 缺点 |
---|---|---|---|
修改/etc/rc.local 文件 |
打开该文件,将临时添加路由的命令复制到文件末尾保存退出。 | 简单直接,适用于简单的场景。 | 重启网络服务时路由会失效;由于它是系统启动最后运行的脚本,若有依赖网络的服务(如NFS),可能导致服务无法正常挂载。 |
编辑/etc/sysconfig/static-routes 文件 |
若文件不存在则手动创建,按照特定格式写入路由信息,格式示例:“any net <目标网络> netmask <子网掩码> gw <网关IP>”。 | 无论重启系统还是网络服务都生效,适合有网络需求的服务场景。 | 需要遵循严格的格式要求,配置错误可能导致路由无法正确添加。 |
对于Debian/Ubuntu系统,编辑/etc/network/interfaces 文件 |
使用文本编辑器打开文件,添加类似如下内容:up ip route add <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口><br>down ip route del <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口> |
与系统网络配置集成度高,管理方便。 | 不同发行版的配置方式可能略有差异,需要一定的学习成本。 |
对于CentOS/RHEL系统,编辑/etc/sysconfig/network-scripts/ifcfg-<接口名> 文件 |
同样使用文本编辑器打开对应接口的配置文件,添加如下内容:IPADDR=<接口IP地址><br>NETMASK=<子网掩码><br>GATEWAY=<默认网关IP><br>POSTUP ip route add <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口><br>PREDOWN ip route del <目标网络/CIDR前缀长度> via <网关IP> dev <网络接口> |
符合Red Hat系列的网络管理模式,稳定性好。 | 配置相对复杂一些,对初学者不太友好。 |
使用systemd-networkd配置(适用于支持该系统的发行版) | 创建一个新的网络配置文件(如/etc/systemd/network/10-static-route.network ),在其中添加路由相关信息:[Route]<br>Destination=<目标网络/CIDR前缀长度><br>Gateway=<网关IP><br>Interface=<网络接口> |
基于现代init系统,更加灵活和先进。 | 需要对systemd有一定的了解,且不是所有发行版都默认使用此方式。 |
使用NetworkManager配置(图形化界面工具) | 通过命令行工具nmcli 进行配置,sudo nmcli connection modify <连接名称> +ipv4.routes "<目标网络/CIDR前缀长度> <网关IP>" ,然后执行sudo nmcli connection up <连接名称> 使配置生效,也可以通过图形界面操作。 |
提供直观的图形化配置界面,方便快捷。 | 功能较为复杂,对于高级用户来说可能不够灵活。 |
检验静态路由
添加完静态路由后,可以通过以下命令查看是否成功添加以及路由表的整体情况:
route -n
:以数字形式显示路由表信息。ip route
:更详细地展示路由相关信息。netstat -r
:也可用于查看路由表。
FAQs
- 问:为什么使用
/etc/sysconfig/static-routes
文件添加静态路由比使用/etc/rc.local
更好?
答:因为/etc/sysconfig/static-routes
文件会被network脚本自动调用,无论重启系统还是网络服务都会生效,而/etc/rc.local
在重启网络服务时会导致静态路由失效,network脚本先于netfs启动,能确保在挂载依赖网络的服务(如NFS)之前就已添加好静态路由,避免出现服务无法正常挂载的问题。 - 问:如何开启Linux系统的IP转发功能?
答:临时开启可执行echo '1' > /proc/sys/net/ipv4/ip_forward
;永久开启则需要编辑/etc/sysctl.conf
文件,添加或修改net.ipv4.ip_forward=1
这一行,然后执行sysctl -p
命令使配置生效,开启IP转发功能后,Linux系统才能作为中间节点