服务器测评网
我们一直在努力

如何修改Linux路由表?命令与参数详解指南

Linux路由表基础概念

Linux路由表是操作系统内核中用于决定数据包转发路径的核心数据结构,它记录了目标网络与下一跳(next-hop)的映射关系,当系统需要发送数据包时,会查询路由表以确定最佳传输路径:若目标地址在本地网络范围内,则直接发送;若目标地址在远程网络,则通过默认网关或特定路由进行转发,理解路由表的结构和工作原理是网络配置与管理的基础。

如何修改Linux路由表?命令与参数详解指南

路由表主要由以下字段组成:

  • 目标网络(Destination):目标IP地址或地址范围,表示数据包的最终目的地。
  • 子网掩码(Genmask):用于确定目标网络的位数,与目标地址结合划分网络范围。
  • 网关(Gateway):下一跳设备的IP地址,数据包将发送至该地址进行转发。
  • 输出接口(Iface):发送数据包的网络接口,如eth0、ens33等。
  • 跃点数(Metric):路由的成本值,数值越小表示路径优先级越高。

查看Linux路由表

在修改路由表前,需先掌握查看当前路由配置的方法,Linux提供了多种命令用于查询路由信息,其中最常用的是ip routeroute命令。

使用ip route命令

ip routeiproute2工具包中的命令,功能更强大且推荐使用,执行以下命令可查看完整路由表:

ip route show

输出示例:

default via 192.168.1.1 dev eth0 proto dhcp metric 100  
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.100  
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.101  

default表示默认路由,即目标地址不在路由表中其他条目时的默认转发路径。

使用route命令

route是传统命令,逐渐被ip route替代,但在旧系统中仍可用:

route -n

参数-n表示以数字形式显示地址,避免DNS解析延迟,适合快速查看。

修改路由表的常用方法

Linux路由表的修改可通过临时命令或永久配置实现,临时修改会立即生效但重启后失效,适合临时调试;永久修改需通过配置文件或服务管理,确保重启后保留。

添加临时路由

使用ip route add命令可添加静态路由,基本语法为:

如何修改Linux路由表?命令与参数详解指南

ip route add 目标网络/子网掩码 via 网关 dev 接口 [metric 跃点数]

示例1:添加默认路由
若系统未配置默认路由,可通过以下命令添加:

ip route add default via 192.168.1.254 dev eth0

示例2:添加特定网络路由
若需访问168.100.0/24网络,且网关为0.0.1,接口为eth1

ip route add 192.168.100.0/24 via 10.0.0.1 dev eth1

示例3:添加直连路由
若目标网络与本地接口在同一网段,可直接指定接口而不需网关:

ip route add 172.16.0.0/16 dev eth2

删除临时路由

使用ip route del命令删除路由,语法与add类似:

ip route del 目标网络/子网掩码

示例:删除默认路由

ip route del default

修改现有路由

Linux不支持直接修改路由条目,需先删除再添加,将默认路由的网关从168.1.1改为168.1.254

ip route del default  
ip route add default via 192.168.1.254 dev eth0

永久修改路由表

不同Linux发行版的永久配置方式有所不同,以下以主流系统为例说明。

Ubuntu/Debian系统
编辑/etc/network/interfaces文件,添加路由条目,在eth0接口配置下添加:

auto eth0  
iface eth0 inet static  
    address 192.168.1.101  
    netmask 255.255.255.0  
    gateway 192.168.1.1  
    up ip route add 192.168.100.0/24 via 10.0.0.1 dev eth1  

up后的命令表示接口启动时执行。

如何修改Linux路由表?命令与参数详解指南

CentOS/RHEL系统
编辑/etc/sysconfig/network-scripts/route-<接口名>文件,例如route-eth0

default via 192.168.1.1 dev eth0  
192.168.100.0/24 via 10.0.0.1 dev eth1  

保存后重启网络服务:

systemctl restart network

使用Netplan(Ubuntu 18.04+)
在Netplan配置文件(如/etc/netplan/01-netcfg.yaml)中添加路由:

network:  
    version: 2  
    ethernets:  
        eth0:  
            dhcp4: no  
            addresses: [192.168.1.101/24]  
            routes:  
                - to: default  
                  via: 192.168.1.1  
                - to: 192.168.100.0/24  
                  via: 10.0.0.1  
            gateway4: 192.168.1.1  

应用配置:

netplan apply

路由表的高级应用

基于策略的路由(Policy-Based Routing, PBR)

默认路由表仅根据目标地址选择路径,而PBR可根据源地址、端口等策略选择不同路由,实现步骤如下:

  1. 创建路由表:在/etc/iproute2/rt_tables中定义自定义路由表(例如添加100 custom_table)。
  2. 添加路由规则:使用ip rule命令添加策略规则,将源地址为0.0.100的数据包导入自定义表:
    ip rule add from 10.0.0.100 table custom_table
  3. 配置自定义表路由:向custom_table添加路由:
    ip route add default via 10.0.0.1 dev eth1 table custom_table

路由缓存与故障排查

Linux内核会缓存路由信息以提高性能,但有时可能导致路由变更不生效,可通过以下方式清理缓存:

ip route flush cache

若路由配置后仍无法通信,可排查以下问题:

  • 网关可达性:使用ping测试网关是否在线:
    ping 192.168.1.1
  • 接口状态:确认接口是否启用:
    ip link show eth0
  • 防火墙规则:检查iptablesfirewalld是否拦截了数据包。

Linux路由表的修改是网络管理中的基础操作,需根据场景选择临时或永久配置方式,通过ip route命令可快速管理路由条目,而永久配置需结合发行版特性调整文件,在实际应用中,还需结合PBR等高级功能实现复杂的路由策略,并通过工具排查潜在问题,掌握路由表管理技能,有助于优化网络性能、保障系统通信稳定性。

赞(0)
未经允许不得转载:好主机测评网 » 如何修改Linux路由表?命令与参数详解指南