菜鸟科技网

如何用ip命令添加路由器?

在Linux系统中,网络配置是系统管理的重要任务之一,而ip命令作为ifconfig的替代工具,提供了更强大和灵活的网络管理功能,使用ip命令添加路由是确保网络通信正确路径的关键操作,本文将详细介绍如何通过ip命令添加路由,包括基本语法、静态路由配置、动态路由协议支持以及常见应用场景,帮助读者全面掌握这一技能。

如何用ip命令添加路由器?-图1
(图片来源网络,侵删)

ip命令添加路由的基本语法

ip命令属于iproute2工具包,是Linux系统中现代网络配置的核心工具,要添加路由,主要使用ip route add子命令,其基本语法结构如下:

sudo ip route add <目标网络> via <网关地址> dev <网络接口> [选项]
  • 目标网络:指定需要路由的目标网络地址,格式为IP地址/子网掩码长度(如168.2.0/24)。
  • 网关地址:数据包转发到的下一跳路由器IP地址。
  • 网络接口:数据包发送出所经过的网络接口名称(如eth0wlan0)。
  • 选项:可选参数,如metric(路由优先级)、src(源IP地址)、table(路由表名称)等。

添加一条到目标网络168.2.0/24的路由,通过网关168.1.1eth0接口发送:

sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

静态路由配置详解

静态路由是手动配置的路由条目,适用于网络结构简单、路由固定不变的场景,以下是静态路由配置的常见场景和操作:

添加默认路由

默认路由用于匹配所有未明确指定路由的目标地址,通常指向网关。

如何用ip命令添加路由器?-图2
(图片来源网络,侵删)
sudo ip route add default via 192.168.1.1 dev eth0

这条命令表示所有未知网络的数据包都将通过168.1.1eth0接口发送。

添加特定网络路由

当需要为特定子网指定路由时,可直接使用目标网络地址,为0.0.0/8网络添加路由:

sudo ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0

使用metric选项管理路由优先级

当存在多个网关时,可通过metric值设置路由优先级(值越小优先级越高)。

sudo ip route add 0.0.0.0/0 via 192.168.1.1 dev eth0 metric 100
sudo ip route add 0.0.0.0/0 via 192.168.1.2 dev eth1 metric 200

系统优先使用metric为100的路由(即通过168.1.1的网关)。

如何用ip命令添加路由器?-图3
(图片来源网络,侵删)

添加直连路由

若目标网络直接连接到某个接口,无需通过网关,可使用dev参数直接指定接口。

sudo ip route add 172.16.0.0/16 dev eth0

路由的查看与验证

添加路由后,需验证配置是否生效,使用ip route showip route命令查看当前路由表:

ip route show

输出示例:

default via 192.168.1.1 dev eth0 proto static metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
192.168.2.0/24 via 192.168.1.1 dev eth0 proto static
10.0.0.0/8 via 192.168.1.254 dev eth0 proto static

可通过pingtraceroute测试网络连通性。

ping 192.168.2.1
traceroute 192.168.2.1

路由的持久化配置

临时添加的路由在系统重启后会失效,要实现持久化,需根据Linux发行版选择不同方法:

基于Debian/Ubuntu的系统

编辑/etc/network/interfaces文件,添加以下内容:

up ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

或使用netplan(Ubuntu 18.04+),在配置文件中添加:

routes:
  - to: 192.168.2.0/24
    via: 192.168.1.1
    on-link: true

基于RHEL/CentOS的系统

编辑/etc/sysconfig/network-scripts/route-eth0文件(假设为eth0接口):

168.2.0/24 via 192.168.1.1 dev eth0

使用systemd网络d配置文件(通用方法)

/etc/systemd/network/目录下创建.network文件,例如10-static-route.network

[Route]
Destination=192.168.2.0/24
Gateway=192.168.1.1

然后重启网络服务:

sudo systemctl restart systemd-networkd

高级路由配置

多路径路由(ECMP)

通过添加相同目标网络但不同网关的路由,实现等成本多路径负载均衡。

sudo ip route add 192.168.3.0/24 via 192.168.1.1 dev eth0 metric 100
sudo ip route add 192.168.3.0/24 via 192.168.1.2 dev eth1 metric 100

基于策略的路由(Policy Routing)

通过ip ruleip route结合,根据数据包源地址、协议等条件选择路由表。

# 创建自定义路由表
echo "200 custom_table" >> /etc/iproute2/rt_tables
# 添加路由规则
sudo ip rule add from 10.0.0.100 table custom_table
# 为自定义表添加路由
sudo ip route add default via 192.168.1.10 dev eth0 table custom_table

常见问题与解决方案

路由添加失败,提示“RTNETLINK answers: Network is unreachable”

可能原因:网关地址不可达或网络接口未启用,解决方案:

  • 检查网关IP是否正确且可达:ping 192.168.1.1
  • 确认接口状态:ip link show eth0

路由添加后,ping目标网络仍失败

可能原因:防火墙拦截或目标网络配置错误,解决方案:

  • 检查防火墙规则:sudo iptables -L
  • 验证目标网络连通性:traceroute 192.168.2.1

相关问答FAQs

问题1:如何删除已添加的路由?
解答:使用ip route del命令,语法与添加类似,删除目标网络为168.2.0/24的路由:

sudo ip route del 192.168.2.0/24 via 192.168.1.1 dev eth0

若删除默认路由,则使用:

sudo ip route del default

问题2:如何查看特定接口的路由信息?
解答:通过ip route show dev <接口名>命令查看指定接口的路由条目,查看eth0接口的路由:

ip route show dev eth0

输出将仅包含通过eth0接口的路由信息,便于排查接口相关的路由问题。

分享:
扫描分享到社交APP
上一篇
下一篇