在Linux系统中,路由表是网络数据包转发的重要依据,它决定了数据包的传输路径,当需要让Linux服务器访问非直连网络或多网关环境时,手动添加路由是必要的操作,本文将详细介绍Linux下添加路由的方法,包括临时路由和永久路由的配置,以及不同发行版的差异。
路由基础与临时路由添加
Linux路由表记录了目标网络、下一跳(网关)、出站接口等信息,可通过ip route
命令查看当前路由表(ip route show
或ip r
),临时路由通过命令直接添加,重启后失效,适用于测试或临时场景。
添加默认路由
默认路由(0.0.0.0/0)用于匹配所有未明确匹配的目标网络,命令格式为:
sudo ip route add default via <网关IP> dev <出站接口>
添加网关为192.168.1.1、通过eth0接口的默认路由:
sudo ip route add default via 192.168.1.1 dev eth0
添加特定网段路由
当需要访问某个特定网段(如192.168.2.0/24)时,需指定目标网络和下一跳网关:
sudo ip route add <目标网络/子网掩码> via <网关IP> dev <出站接口> [metric <跃点数>]
添加到192.168.2.0/24网段,网关192.168.1.1,跃点数100(数值越小优先级越高):
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 metric 100
添加直连路由(通过接口)
若目标网络与服务器在同一物理或虚拟网段(如通过点对点链路),可直接指定出站接口,无需网关:
sudo ip route add <目标网络/子网掩码> dev <出站接口>
添加10.0.0.0/24网段通过eth1接口直连:
sudo ip route add 10.0.0.0/24 dev eth1
删除临时路由
若需撤销已添加的临时路由,使用del
替换add
:
sudo ip route del default via 192.168.1.1 dev eth0
永久路由配置
临时路由重启后失效,生产环境中需配置永久路由,不同Linux发行版的配置方式存在差异,主要分为CentOS/RHEL系列和Ubuntu/Debian系列。
CentOS/RHEL系列(使用NetworkScripts)
CentOS 7及之前版本通过NetworkScripts管理路由,配置文件位于/etc/sysconfig/network-scripts/
下,命名为route-<接口名>
(如route-eth0
)。
配置步骤:
(1)创建或编辑路由配置文件,例如为eth0接口添加永久路由:
sudo vi /etc/sysconfig/network-scripts/route-eth0
(2)文件内按以下格式添加路由(每行一条路由):
# 格式1:目标网络/子网掩码 via 网关IP dev 接口 [metric 跃点数] 192.168.2.0/24 via 192.168.1.1 dev eth0 metric 100 10.0.0.0/24 dev eth1
(3)保存后重启网络服务或重启系统:
sudo systemctl restart network # CentOS 7+ # 或 service network restart # CentOS 6及之前
Ubuntu/Debian系列(使用Netplan或ifupdown)
Ubuntu 18.04+默认使用Netplan(YAML配置文件),旧版本可通过/etc/network/interfaces
配置。
(1)Netplan配置(Ubuntu 18.04+)
配置文件位于/etc/netplan/
下(如01-netcfg.yaml
),在对应接口的routes
字段中添加路由:
network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] # 接口IP routes: - to: 192.168.2.0/24 via: 192.168.1.1 metric: 100 - to: 10.0.0.0/24 via: 10.0.0.1 gateway4: 192.168.1.1 # 默认网关 nameservers: addresses: [8.8.8.8]
应用配置:
sudo netplan apply
(2)ifupdown配置(Ubuntu 16.04及旧版)
编辑/etc/network/interfaces
文件,在接口配置块中添加up ip route add...
命令:
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.2.0/24 via 192.168.1.1 dev eth0 metric 100 up ip route add 10.0.0.0/24 via 10.0.0.1 dev eth1
重启网络服务:
sudo systemctl restart networking
不同发行版永久路由配置对比
发行版系列 | 配置方式 | 配置文件位置/命令 | 生效方式 |
---|---|---|---|
CentOS/RHEL 7+ | NetworkScripts | /etc/sysconfig/network-scripts/route-<接口> |
systemctl restart network |
CentOS/RHEL 6 | NetworkScripts | /etc/sysconfig/network-scripts/route-<接口> |
service network restart |
Ubuntu 18.04+ | Netplan | /etc/netplan/*.yaml |
netplan apply |
Ubuntu 16.04及旧版 | ifupdown | /etc/network/interfaces |
systemctl restart networking |
路由管理常用命令
- 查看路由表:
ip route show
或ip r
,-n
参数以数字形式显示(不解析域名)。 - 查看路由缓存:
ip route cache
(显示已解析的路由条目)。 - 添加路由并标记:
sudo ip route add <目标> via <网关> table <表号>
(用于多路由表场景,如策略路由)。 - 修改跃点数:
sudo ip route change <目标> metric <新跃点数>
(调整路由优先级)。
注意事项
- 权限要求:所有路由操作需root权限(
sudo
)。 - 网关可达性:添加路由前需确保网关IP与服务器在同一网段或可达,否则路由无效。
- 接口状态:确保出站接口处于
UP
状态(ip link show <接口>
查看)。 - 配置备份:修改永久路由前建议备份原配置文件,避免配置错误导致网络中断。
- 跃点数影响:同一目标网络存在多条路由时,系统优先选择跃点数最小的路由。
相关问答FAQs
Q1:添加路由后无法访问目标网络,可能的原因及排查步骤?
A:排查步骤如下:
- 检查网关可达性:执行
ping <网关IP>
,若不通,检查网关设备配置及网络链路。 - 确认路由条目:运行
ip route show | grep <目标网络>
,确认路由是否正确添加。 - 检查接口状态:通过
ip link show <接口>
确认接口是否为UP
状态,未启用则执行sudo ip link set <接口> up
。 - 防火墙拦截:检查iptables/nftables防火墙规则,是否丢弃了相关流量(
sudo iptables -L -n
)。 - 目标网络连通性:在网关设备上检查是否配置了返回路由(如静态路由或动态路由协议)。
Q2:如何删除已添加的永久路由?
A:删除方法与发行版相关:
- CentOS/RHEL:编辑
/etc/sysconfig/network-scripts/route-<接口>
文件,删除对应路由条目后重启网络服务(systemctl restart network
)。 - Ubuntu(Netplan):编辑
/etc/netplan/*.yaml
文件,删除routes
部分对应条目后运行sudo netplan apply
。 - Ubuntu(ifupdown):编辑
/etc/network/interfaces
文件,删除up ip route add...
命令后重启网络服务(systemctl restart networking
)。
若需删除所有非默认路由,可考虑重置网络配置(如备份后删除路由配置文件)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28941.html