Linux系统如何添加静态路由?

在Linux系统中,路由表是网络数据包转发的基础,它决定了数据包应该从哪个接口发送到哪个目标网络,正确配置路由对于多网络环境、服务器网关设置或特定网络策略至关重要,本文将详细介绍Linux系统中添加路由的多种方法,包括临时路由和永久路由的配置,并针对常见场景提供示例。

linux 如何添加路由

Linux路由基础与临时路由添加

Linux系统中的路由表可通过ip route命令(推荐)或传统的route命令查看和管理,临时添加的路由在系统重启后会失效,适用于测试或临时网络调整。

使用ip route命令添加临时路由

ip routeiproute2工具包中的命令,功能更强大且是当前主流方案,基本语法为:
ip route add <目标网络> via <网关地址> dev <网络接口> [src <源IP>] [metric <优先级>]

  • 目标网络:要到达的子网,如168.2.0/24;若为默认路由,则用default0.0.0/0
  • 网关地址:下一跳路由器的IP地址,需与本地网络可达。
  • 网络接口:本地网络接口,如eth0ens33等。
  • src:可选,指定数据包的源IP(多网卡场景下用于选择出口)。
  • metric:可选,路由优先级(值越小优先级越高,默认为1024)。

示例

  • 添加默认路由:sudo ip route add default via 192.168.1.1 dev eth0
  • 添加静态路由到目标网络168.3.0/24,网关为168.1.254sudo ip route add 192.168.3.0/24 via 192.168.1.254 dev eth0
  • 添加带源IP和优先级的路由:sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0 src 192.168.1.100 metric 100

使用route命令添加临时路由(传统方法)

route命令逐渐被ip route替代,但在旧系统中仍可用:
sudo route add -net <目标网络> netmask <子网掩码> gw <网关地址> dev <接口>

示例
sudo route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

临时路由的验证与删除

  • 查看路由表:ip route showroute -n-n表示以数字形式显示,避免DNS解析延迟)。
  • 删除临时路由:sudo ip route del <目标网络> via <网关> dev <接口>,例如sudo ip route del default via 192.168.1.1 dev eth0

永久路由配置

临时路由在重启后失效,若需持久化保存,需根据Linux发行版修改配置文件。

基于Debian/Ubuntu系统的永久路由配置

在Debian/Ubuntu中,可通过修改/etc/network/interfaces文件添加路由,为eth0接口添加静态路由

linux 如何添加路由

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.3.0/24 via 192.168.1.254 dev eth0
    # 添加默认路由(若需覆盖默认网关)
    # up ip route add default via 192.168.1.1 dev eth0

配置完成后,重启网络服务或重启系统:sudo systemctl restart networking

基于CentOS/RHEL系统的永久路由配置

在CentOS/RHEL 7及以上版本,可通过nmcli(NetworkManager命令行工具)或配置路由文件实现。

  • 方法1:使用nmcli(推荐,适用于NetworkManager管理的网络):

    # 添加静态路由(关联到eth0连接)
    sudo nmcli connection modify eth0 +ipv4.routes "192.168.3.0/24 192.168.1.254"
    # 添加默认路由(若需修改)
    sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
    # 激活配置
    sudo nmcli connection up eth0
  • 方法2:创建路由配置文件(适用于传统网络配置):
    /etc/sysconfig/network-scripts/目录下创建route-<接口名>文件,如route-eth0

    # route-eth0文件内容
    ADDRESS0=192.168.3.0
    NETMASK0=255.255.255.0
    GATEWAY0=192.168.1.254

    重启网络服务:sudo systemctl restart network

多路由表与策略路由(进阶场景)

当需要根据源IP选择不同路由时,可配置策略路由(Policy Routing),为168.1.100的流量单独设置路由表:

  1. 创建自定义路由表(编辑/etc/iproute2/rt_tables):
    echo "custom_table 100" >> /etc/iproute2/rt_tables

    linux 如何添加路由

  2. 添加路由到自定义表:
    sudo ip route add 192.168.3.0/24 via 192.168.1.254 dev eth0 table custom_table

  3. 添加策略规则(匹配源IP并使用自定义表):
    sudo ip rule add from 192.168.1.100 lookup custom_table

配置完成后,可通过ip rule showip route show table custom_table验证。

常用ip route命令参数与示例

以下为ip route命令的核心参数及示例总结:

参数/选项 说明 示例
add 添加路由 ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0
del 删除路由 ip route del 10.0.0.0/24 dev eth0
default 默认路由(0.0.0.0/0) ip route add default via 192.168.1.1
via <网关> 指定下一跳地址 ip route add 192.168.2.0/24 via 192.168.1.254
dev <接口> 指定出口网络接口 ip route add 192.168.3.0/24 dev eth0(直连路由)
src <源IP> 指定数据包源IP ip route add 10.0.0.0/24 via 192.168.1.1 src 192.168.1.100
metric <数值> 设置路由优先级(默认1024) ip route add 192.168.4.0/24 via 192.168.1.1 metric 50
table <表名> 指定路由表(策略路由) ip route add 192.168.5.0/24 via 192.168.1.1 table custom

相关问答FAQs

问题1:添加的路由不生效,如何排查?
解答

  1. 检查路由是否正确添加:ip route show | grep <目标网络>
  2. 确认网关可达性:ping <网关地址>,若不通,检查网关配置或网络连通性。
  3. 检查接口状态:ip link show <接口>,确保接口为UP状态。
  4. 检查防火墙规则:sudo iptables -Lsudo firewall-cmd --list-all,防止防火墙拦截。
  5. 若为多网卡,确认源IP是否匹配路由配置(可通过src参数指定)。

问题2:如何永久删除已添加的静态路由?
解答

  • Debian/Ubuntu:编辑/etc/network/interfaces文件,删除up ip route add...行,然后重启网络服务:sudo systemctl restart networking
  • CentOS/RHEL(nmcli):使用nmcli connection modify <接口名> -ipv4.routes "<目标网络>/<掩码> <网关>"移除路由,并重启连接:sudo nmcli connection up <接口名>
  • 传统CentOS/RHEL:删除/etc/sysconfig/network-scripts/route-<接口名>文件中的路由条目,重启网络服务:sudo systemctl restart network
  • 临时路由直接使用ip route del删除即可。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/17239.html

(0)
酷番叔酷番叔
上一篇 2025年8月26日 05:10
下一篇 2025年8月26日 05:22

相关推荐

  • Linux系统磁盘分区空间不足时如何扩展?

    在Linux系统中扩展分区是一个需要谨慎操作的过程,涉及磁盘分区和文件系统的调整,稍有不慎可能导致数据丢失,以下是详细的扩展分区步骤和注意事项,涵盖普通分区和LVM逻辑卷两种常见场景,扩展分区的前提条件存在未分配空间:目标磁盘需要有足够的未分配空间,且未分配空间应位于目标分区的相邻位置(如果是扩展逻辑分区,需在……

    2025年9月28日
    2200
  • Linux中如何退出vim编辑器?新手必学的命令与步骤解析?

    在Linux系统中,vim是一款功能强大的文本编辑器,但因其模式化的操作特性,新手常在退出时遇到困惑,掌握vim的退出方法需要先理解其基本模式:普通模式(默认模式,用于执行命令)、插入模式(用于输入文本,按i、a等进入)、命令行模式(用于执行保存、退出等命令,按进入),退出操作主要在普通模式和命令行模式下完成……

    2025年9月23日
    2000
  • linux 如何连接数

    Linux 中,可使用 ssh [用户名]@[主机地址] 命令

    2025年8月19日
    3300
  • Linux系统如何下载rodbc?

    在Linux系统中下载并配置RODBC(R Open Database Connectivity)涉及多个步骤,包括环境准备、R语言安装、依赖库配置及RODBC包安装等,RODBC是R语言中常用的数据库连接包,支持通过ODBC(Open Database Connectivity)协议连接各种关系型数据库(如M……

    2025年10月5日
    600
  • 如何高效熟悉Linux系统?新手从入门到精通的实用路径

    熟悉Linux是掌握现代IT技术体系的重要一步,无论是服务器运维、后端开发还是云计算领域,Linux都是核心工具,对于初学者而言,系统化的学习和持续实践是关键,以下从基础概念、核心操作、进阶技能到实践路径,详细拆解如何高效熟悉Linux,理解Linux核心概念与系统架构Linux作为类Unix操作系统,其核心思……

    2025年10月5日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信