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如何打ini

    Linux中,可使用文本编辑器(如vi、nano等)创建和编辑.

    2025年8月18日
    18400
  • Linux查看文件目录的具体命令和方法有哪些?

    在Linux系统中,查看文件目录是日常操作中最基础也最频繁的任务之一,掌握相关命令能高效管理文件系统,Linux文件目录以根目录“/”为起点,所有文件和目录都挂载在根目录下,通过不同命令可以灵活查看目录内容、层级结构及文件属性,基础查看命令:lsls(list)是最常用的目录查看命令,默认显示当前目录下的文件名……

    2025年9月13日
    16600
  • 如何一招实时显示并保存管道数据?

    在Linux中,管道(Pipe)是进程间通信的核心机制,用竖线符号 表示(如 cmd1 | cmd2),它直接将前一个命令(cmd1)的标准输出(stdout)作为后一个命令(cmd2)的标准输入(stdin),管道本身是内存中的临时数据流,无法直接“查看”内容,但可通过以下方法间接捕获或监控其传输的数据:核心……

    2025年8月7日
    15600
  • Linux运行Python遇难题?

    Linux是运行Python的理想环境,因其开源特性、强大的终端支持及与Python工具链的无缝集成,本指南将详细讲解从基础到进阶的操作方法,涵盖安装、运行、环境管理及最佳实践,检查Python是否已安装Linux系统通常预装Python,通过终端验证:python3 –version # 检查Python……

    2025年7月12日
    17200
  • 如何从硬盘安装Linux系统?详细步骤教程指南

    硬盘安装Linux是许多用户尝试开源系统时的重要步骤,尤其适合希望在保留Windows系统的情况下体验Linux,或直接用Linux作为主系统的用户,整个过程需提前准备工具、规划磁盘,并通过引导完成安装,以下是详细步骤和注意事项,安装前准备工作备份数据:无论是否保留Windows,硬盘安装涉及分区操作,建议提前……

    2025年9月25日
    17800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信