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

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

linux 如何添加路由

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

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

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

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

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

示例:

  • 添加默认路由:sudo ip route add default via 192.168.1.1 dev eth0
  • 添加静态路由到目标网络168.3.0/24,网关为168.1.254:sudo 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 show或route -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 show和ip 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 -L或sudo 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如何为Maven配置运行内存?

    在Linux环境下为Maven配置内存是优化构建性能、避免内存溢出(OutOfMemoryError)的关键操作,Maven在执行编译、测试、打包等任务时,会占用大量内存,尤其是处理大型项目或依赖较多时,默认内存配置(通常为1GB左右)可能不足,导致构建失败或速度缓慢,本文将详细介绍Linux系统中Maven内……

    2025年8月24日
    28100
  • Linux系统如何调用C语言程序?

    在Linux操作系统中,C语言作为系统级开发的核心语言,其调用与执行过程涉及环境搭建、代码编写、编译链接及系统交互等多个环节,本文将详细说明Linux环境下C语言的完整调用流程,从基础环境准备到高级系统调用实现,帮助读者全面掌握Linux与C语言的协同工作方式,需确保系统已安装C语言编译工具链,Linux主流发……

    2025年9月19日
    25700
  • linux中如何编译c程序

    Linux 中,可使用 gcc 编译 C 程序,`gcc -o output_file source_file.

    2025年8月9日
    25300
  • 为什么90后频繁跳槽

    在Linux系统中,正确关闭已打开的文件是系统管理和编程开发中的关键操作,这不仅涉及资源释放,还关系到数据完整性和系统稳定性,以下从命令行操作和编程实现两个维度详细说明关闭文件的方法,并解释其重要性,为什么必须关闭文件?释放系统资源Linux内核为每个打开的文件分配文件描述符(File Descriptor……

    2025年7月23日
    21500
  • Linux日志文件过大?速查大小与清理技巧!

    使用 ls 命令(基础查看)适用场景:快速查看单个日志文件的大小命令示例:ls -lh /var/log/syslog输出示例:-rw-r—– 1 syslog adm 12M Jun 10 09:25 /var/log/syslog参数解析:-l:显示详细信息-h:以人类可读格式(KB/MB/GB)显示……

    2025年6月21日
    31300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信