Please enable Javascript to view the contents

Linux网络-命令: route

 ·  ☕ 3 分钟

1. 简介

Linux 系统中,route命令是一个基本的工具,用于查看、修改内核的IP路由表。这个路由表决定了数据包转发规则(数据包如何从源到达目的地)。

2. 基本用法

2.1 查看路由表

要查看当前的路由表,可以使用以下命令:

使用-n选项可以避免解析IP地址主机名,这样可以加快显示速度并减少混淆。

1
route -n

route信息

路由表说明:

排序从上到下依次是:小网段 -> 大网段 -> 默认路由。路由规则越靠前,优先级越高。

Destination=0.0.0.0表示默认路由。即目标IP没有具体路由规则时,数据包走此路由进行转发。

Gateway=0.0.0.0表示路由直接由本地送达。即通过LAN的MAC直接通讯。如果是具体IP,则往往是具备三层路由能力的设备。

Flags标识说明

Flags(路由标记): 路由器在转发数据包时使用的标记,用于标识数据包的来源目的地,以及路由器对数据包的处理方式等。

  • U: 路由是Up的
  • H: 目标是Host,而非一个网段
  • G: 通过外部设备路由数据包
  • R: 使用动态路由时,恢复路由信息的标识
  • D: 由服务或Port功能设置为动态路由
  • M: 路由被修改
  • !: 路由不被接受(拒绝不安全网段的数据包)

2.2 添加路由(临时)

  • 添加 默认 路由
1
route add default gw 192.168.1.1

默认路由:所有未被其他路由规则匹配的流量,都走默认路由。
route add default gw通常在一起使用,来配置默认网关。
这个命令添加了一个默认网关,所有非本地网络(即目标网络不在本地路由表中的任何网络)的数据包都将通过 192.168.1.1 发送。

  • 添加 特定网络 路由
1
route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0

所有目标IP在192.168.100.0/24的数据包都通过eth0网络接口发送。具体选项说明:

-net 192.168.100.0:指定要添加的路由的目标网络。(-net选项用于指定一个网络地址,这里是 192.168.100.0,意味着这个路由规则将应用于所有 192.168.100.0/24 子网内的 IP 地址。)
netmask 255.255.255.0:指定目标网络的子网掩码。(255.255.255.0表示网络部分是前 24 位,主机部分是后 8 位,即 192.168.100.0/24 子网。)
dev eth0:指定数据包将通过哪个网络接口发送。(dev选项用于指定网络接口设备,这里是 eth0,意味着所有发送到 192.168.100.0/24 网络的数据包都将通过 eth0 网络接口。)

2.3 删除路由(临时)

要删除一个路由,可以使用:

1
route del -net 192.168.2.0/24

这个命令删除了到达 192.168.2.0/24 网络的路由。

删除

1
route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0

2.4 路由选项

route 命令有许多选项,以下是一些常用的:

add:添加新的路由规则。
del:删除现有的路由规则。
net:指定网络地址。
host:指定主机地址。
gw:指定网关地址。
dev:指定网络接口。

3. 使用技巧

3.1 永久路由

route 命令添加的路由在重启后会丢失。要设置永久路由,需要编辑/etc/network/interfaces文件或使用ip route命令(后者在新版 Linux 发行版中推荐)。

3.2 路由跟踪

要跟踪数据包的路由,可以使用traceroute命令,它是route命令的扩展。

1
traceroute www.google.com

3.3 动态路由

对于动态路由,可以使用 ripospfbgp等协议和相应的守护进程。

3.4 故障排除

如果 route 命令不起作用,检查以下可能的原因:

  • 权限问题: 确保你以 root 用户或使用 sudo 命令执行这些命令。

  • 错误的网关:确保指定的网关地址是正确的,并且网关设备正在运行。

  • 接口问题:确保指定的网络接口是活动的,并且配置正确。

结论

route 命令是 Linux 系统中一个强大的工具,用于管理IP路由表。了解如何使用route命令可以帮助你更好地控制网络流量的路径,优化网络性能,并解决网络连接问题。随着技术的发展,建议用户逐渐转向使用ip route命令,以获得更好的兼容性和更强大的功能。

分享

Hex
作者
Hex
CloudNative Developer

目录