当前位置:首页 > Linux > 正文

linux如何增加静态路由

Linux中,可通过 ip命令或编辑 /etc/network/routes文件添加静态路由, ip route add / via

是关于Linux如何增加静态路由的详细说明:

临时添加静态路由

在Linux系统中,可以使用routeip命令临时添加静态路由,这些命令只在当前会话中生效,系统重启后会失效。

  1. 使用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>等。
  2. 使用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

  1. :为什么使用/etc/sysconfig/static-routes文件添加静态路由比使用/etc/rc.local更好?
    :因为/etc/sysconfig/static-routes文件会被network脚本自动调用,无论重启系统还是网络服务都会生效,而/etc/rc.local在重启网络服务时会导致静态路由失效,network脚本先于netfs启动,能确保在挂载依赖网络的服务(如NFS)之前就已添加好静态路由,避免出现服务无法正常挂载的问题。
  2. :如何开启Linux系统的IP转发功能?
    :临时开启可执行echo '1' > /proc/sys/net/ipv4/ip_forward;永久开启则需要编辑/etc/sysctl.conf文件,添加或修改net.ipv4.ip_forward=1这一行,然后执行sysctl -p命令使配置生效,开启IP转发功能后,Linux系统才能作为中间节点
0