0


route命令 路由表 Linux Centos

route

route

命令在Linux中被用于显示和操纵IP路由表。然而,现在大部分Linux发行版都推荐使用

ip route

命令代替

route

,因为

ip route

提供更多的功能和更灵活的控制。

以下是

route

命令的基本用法:

  1. 查看路由表: route -n 这个命令显示当前机器的路由表。-n标志意味着数字形式的网络地址,而不是尝试解析主机名。
  2. 添加路由: route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 这个命令添加一个网络路由,将192.168.1.0/24网络的数据包通过192.168.1.1的网关发送,通过eth0接口。
  3. 删除路由: route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 这个命令删除上面添加的路由规则。

注意:

route

命令修改的路由表在重启后会丢失,如果你想永久添加或删除路由,需要将其添加到网络配置文件或者启动脚本中。

尽管

route

命令依然可以使用,但现代Linux系统中,大多数情况下都推荐使用

ip route

命令,因为它提供了更多的功能和更好的控制。

例如,你可以使用

ip route show

来查看路由表,使用

ip route add 192.168.1.0/24 via 192.168.1.1 dev eth0

来添加路由,使用

ip route del 192.168.1.0/24 via 192.168.1.1

来删除路由。

另外,

ip route

命令还支持更多的选项和参数,如源路由,策略路由等,这使得它比

route

命令更强大、更灵活。

# 修改路由表信息; metric是优先级; 修改的话必须能匹配到才可以修改
ip route change 172.16.193.0 via 0.0.0.0 metric 300 dev veth01
​
# 删除路由表
ip route del 172.16.193.0 via 0.0.0.0 dev veth01
​
# 添加路由表
ip route add 172.16.193.0/24 via 0.0.0.0 dev veth01

路由信息解读

route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 ens33 172.16.193.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@centos133 ~]# ip route show default via 172.16.193.2 dev ens33 proto static metric 100 172.16.193.0/24 dev ens33 proto kernel scope link src 172.16.193.133 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

  • default via 172.16.193.2 指定了默认路由,也就是说,所有不符合下面任何一条路由规则的数据包都将发送到 172.16.193.2 这个地址。
  • dev ens33 表示数据包将通过 ens33 网络接口发送。
  • proto dhcp 表示这条路由是由 DHCP 协议添加的。
  • proto kernel: 表示此条路由条目是内核添加的。
  • scope link: 这意味着这个网络是直接相连的,我们可以直接通过相应的接口发送数据包,不需要通过其他路由器。
  • src 172.16.193.133 表示源地址是172.16.193.133。
  • `172.16.193.0/24 dev ens33 表示所有目标地址在 172.16.193.0/24 子网中的数据包都将通过 ens33 网络接口发送。

在分析网络问题时,你可以检查以下几点:

  1. 查看默认路由:默认路由是当数据包的目标 IP 地址不匹配任何特定路由时,数据包会发送到的地方。确保默认路由的网关是可达的并且正确配置。
  2. 查看特定的路由条目:如果你在访问某个特定的网络或者主机时遇到问题,你应该查看路由表中相应的条目。如果没有找到相应的条目,你可能需要添加一条新的路由。
  3. 查看网络接口:确保路由条目指定的网络接口是可用的。你可以使用 ip link show 命令来查看网络接口的状态。
  4. 检查网络连接:使用 pingtraceroute 命令检查网络连接。如果你无法连接到路由的网关,那么你可能需要检查网络连接或者网关的配置。
  5. 你的目标 IP 地址(即虚拟机的 IP 地址)应在路由表的某个网络地址范围内。也就是说,应存在一条路由条目,其网络地址包含了你的目标 IP 地址。
  6. 检查该路由条目是否指向正确的网络接口。如果你在虚拟机上设置了 veth 网络接口,那么路由应该通过这个接口。
  7. 如果虚拟机在网络上使用了 NAT,那么还需要检查宿主机的路由表,看看是否有指向虚拟机 NAT 地址的路由。

**在 macOS 上,可以使用

netstat -rn

命令查看路由表。**

路由表解读

以下是一个典型的路由表输出例子:

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           76        1     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              5    41894     lo0
169.254            link#4             UCS             0        0     en0
192.168.1          link#4             UCS             3        0     en0
192.168.1.1/32     link#4             UCS             2        0     en0
192.168.1.1        0:1f:c6:4f:31:55   UHLWIir        77      443     en0   1199
192.168.1.3        127.0.0.1          UHS             0        0     lo0
192.168.1.103      127.0.0.1          UHS             0        0     lo0

每一行代表一个路由项,具体解释如下:

  • Destination: 数据包的目标网络或主机。
  • Gateway: 数据包将要经过的下一跳路由器的 IP 地址。link#4127.0.0.1 这样的值表示数据包将直接发送到目标,不通过其他路由器。
  • Flags: 路由选项标志。重要的有 U (Up),表示路由可用,G (Gateway) 表示要经过一个网关(也就是另一个路由器),H (Host) 表示目标是一个主机而不是一个网络,S (Static) 表示这是一个静态路由,手动添加的,不会随着路由协议的变化而变化。
  • Refs: 该路由项被多少个 socket 引用。
  • Use: 该路由项被使用的次数。
  • Netif: 输出接口名称,比如 en0lo0en0 通常代表以太网接口,lo0 代表本地回环接口。
  • Expire: 路由项过期的时间。这通常在动态路由中使用,表示该路由项在多少秒后过期。
  • Link#4类似的含义: link#4表示的是第四个网络接口。这个数字是网络接口在系统中的注册顺序,并不一定代表其名称。例如,en0,en1,en2,lo0等可能对应不同的link#编号。
  • 四个0(0.0.0.0)在路由表中通常表示默认网关,它用于将所有未明确指向其他路由的流量发送到指定的网络设备。0.0.0.0 通常表示“任何网络地址”或“不确定的网络地址”。Gateway 是 0.0.0.0:这通常表示这是一个直连网络,也就是说,这个路由项是指向一个在同一网络段内的目标,不需要通过网关就可以直接达到。
  • Genmask 是 255.255.255.0:这是一个子网掩码,表示该网络的 IP 地址的前 24 位被用于网络地址,后 8 位被用于主机地址。这意味着该网络可以包含的 IP 地址范围是该网络的 x.x.x.0x.x.x.255,其中 x.x.x.0 代表网络地址,x.x.x.255 代表广播地址,其余地址可分配给主机。例如,如果网络地址是 192.168.1.0,那么这个网络的主机地址可以是 192.168.1.1192.168.1.254
  • Genmask 是 0.0.0.0:这通常是一个默认路由,表示任何网络或主机地址都匹配这条路由。通常默认路由的目的地址也是 0.0.0.0,意味着当没有任何其他路由匹配目标IP时,就使用这条默认路由。
  • 子网掩码,比如/24,它是子网掩码的一种表示方式,也被称为CIDR(无类别域间路由)标记。/24意味着前24位(也就是前三个字节)用于网络地址,最后的8位(最后一个字节)则用于主机地址。因此,一个/24网络可以容纳256个地址,其中包括网络地址和广播地址,实际可用的主机地址为254个。
  • "Bogon" 是一个网络术语,通常用来描述非法或者未分配的 IP 地址。在 Internet 世界中,有一部分 IP 地址因为特殊的原因被保留,不应该出现在公开的 Internet 路由表中,这些地址被称为 "bogon IP"。当在路由表中看到 gateway 是 "bogon",这可能意味着这个路由条目的下一跳(gateway)是一个无法在公网中正常路由的 IP 地址。这种情况可能会出现在以下几种场景:1. 这是一个私有网络的环境,比如企业内部网络或者你自己的家庭网络。在这种环境下,你可能会使用到一些在公网中是无效的 IP 地址,比如 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 等地址段。2. 网络配置出现了错误,比如误将一个无效的 IP 地址设置成了 gateway。如果你不希望看到 "bogon",那么你可能需要检查一下你的网络配置,确保你的路由表中所有的 gateway 都是有效的 IP 地址。- veth10@if10这样的输出表示这是一个veth设备,它的名字是veth10,@if10表示它与另一端的设备(即它的对端设备,pair)相连,那一端的内部接口编号是10。- default via 172.16.193.2 dev ens33 proto static metric 100 proto static表示这个路由条目是静态配置的。换句话说,这条路由并不是通过动态路由协议(如OSPF,RIP,BGP等)学习得到的,而是人工配置的。一般来说,这些路由在系统启动时就由网络配置脚本配置好,或者由网络管理员手动配置。proto字段表示路由条目的来源协议。ip route show命令可能显示的proto字段的值包括但不限于:- boot:路由在引导期间设置。- static:路由是静态配置的。- dhcp:路由是通过DHCP协议动态获取的。- ra:路由是通过IPv6的路由通告(Route Advertisement)消息动态获取的

为了检查两个设备间的连通性,你需要查看路由表中是否存在一条能够到达目标设备的路由项。这条路由项应当通过正确的网络接口,并指向正确的网关(如果需要)。此外,需要注意路由项的标志是否正确,特别是

U

标志,表示路由是否可用。

标签: 网络 服务器 运维

本文转载自: https://blog.csdn.net/taugast/article/details/132030235
版权归原作者 成知节 所有, 如有侵权,请联系我们删除。

“route命令 路由表 Linux Centos”的评论:

还没有评论