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下安装OpenOffice的具体步骤是怎样的?

    在Linux操作系统下安装Apache OpenOffice(以下简称OpenOffice)是一个相对直接的过程,但根据不同的Linux发行版和安装方式,具体步骤会有所差异,OpenOffice是一款功能强大的开源办公套件,包含文字处理(Writer)、电子表格(Calc)、演示文稿(Impress)、绘图(D……

    2025年9月30日
    6700
  • Linux操作系统上搭建MySQL数据库环境的具体方法是什么?

    在Linux操作系统上搭建MySQL数据库环境是许多开发者和运维人员的必备技能,MySQL作为开源的关系型数据库管理系统,广泛应用于Web应用、数据存储等场景,本文将以主流的Linux发行版(如CentOS/RHEL和Ubuntu/Debian)为例,详细说明从环境准备到MySQL安装、配置、安全初始化及测试验……

    2025年9月27日
    6400
  • Linux下怎么快速轻松查看U盘符

    命令行工具查看(推荐)lsblk 命令(最常用) lsblk输出示例:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot/efi└─sda2 8:2 0 238G 0 part……

    2025年7月16日
    9800
  • 如何通过命令行修改Linux系统日期?

    在Linux系统中,日期和时间的修改是常见操作,无论是为了系统日志记录、定时任务执行,还是时区调整,都需要掌握正确的方法,Linux系统的时间管理涉及两个核心时钟:系统时钟(由Linux内核维护,从开机到关机期间有效)和硬件时钟(由主板CMOS电池供电,关机后仍运行),修改时间时需注意两者的同步,否则重启后时间……

    2025年8月30日
    6600
  • 如何编译main.c生成可执行文件app?

    在Linux环境下,Makefile是自动化编译和构建项目的核心工具,尤其适用于C/C++等语言的项目管理,它通过定义规则(rules)描述文件间的依赖关系,仅重新编译改动过的文件,大幅提升开发效率,以下内容基于GNU Make 4.3+版本,适用于主流Linux发行版(如Ubuntu、CentOS),Make……

    2025年6月20日
    9200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信