linux路由表详解-追踪路由
linux路由表详解-追踪路由
xiaoxin-toplinux 路由表详解
通过 route 命令查看 Linux 内核的路由表:
1 | $route |
各列字段说明:
列 | 含义 |
---|---|
Destination | 目标网络网关或目标主机。Destination 为 default(0.0.0.0 )时,表示这个是默认网关,所有数据都发到这个网关(这里是172.11.120.254 和172.32.8.254 ) |
Gateway | 本机的网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关;如不在同一个网段,可借助相关路由跳过去,如这里借助10.150.54.126 网关跳到10.150.0.0 段的网络 |
Genmask | 目标网络(Destination) 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0 |
Flags | 标记,含义参考表格后面的解释 |
Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) |
Ref | 路由项引用次数 (不在Linux内核中使用。) |
Use | 此路由项被路由软件查找的次数 |
Iface | 网卡名字,例如 em1 |
Flags 含义:
U 路由是活动的
H 目标是个主机
G 需要经过网关
R 恢复动态路由产生的表项
D 由路由的后台程序动态地安装
M 由路由的后台程序修改
! 拒绝路由
如何看这个路由表:
从右往左看:比如第三行:
10.150.0.0 | 10.150.54.126 | 255.255.0.0 | UG | 0 | 0 | 0 | em2
流量数据从本机的网卡em2
出去到(交换机)网关10.150.54.126
,借助这个网关将数据送往目标网络地址(网关)10.150.0.0
其中要明确地址10.150.54.126
与10.150.0.0
是能通讯的、否则流量是过不去的
ip route show查看
“ip route show” 是 Linux 中的命令,用于显示计算机上的路由表。路由表记录了计算机如何将数据包发送到网络中的其他计算机
1 | $ip route show |
上面路由记录的格式通常都是这样的:
<目的地> via <网关> dev <接口网卡> proto <协议> src <源地址或本机地址> <附加信息>
列 | 解析 |
---|---|
<目的地> | 目的地网络网关或主机 ,可以是具体的 IP 地址(如 10.15.54.50 )、网络地址 (如10.15.54.0/25 )或 default 等。default 会在没有其他符合的路由条目时使用; |
via <网关> | 可选字段,指的是到达目的地址 需要使用的网关的 IP 地址 。发往 这个路由条目对应的目的地的数据包,都会把这个网关设置为下一跳 ,经由此<via> 发往最终目的地;比如:em1 网卡 通过 网关via 172.13.9.254 跳到 172.3.1.0/24 网段 ,这样就实现了不同网段之间的通信 |
dev <接口网卡> | 要发往本条目对应目的地时所需要使用的网络接口(设备网卡); |
proto <协议> | 添加本条条目的协议。常见的值有:kernel (本条目由内核添加)、static (手动添加)、dhcp (通过 DHCP 添加)、boot (在启动时添加)、redirect (由 ICMP 重定向添加)。此外,该值还可以是 bgp 、ospf 这类动态路由协议。该值可能是整数值或者一个字符串值,字符串值都可以在 /etc/iproute2/rt_protos 中找到; |
src <源地址> | 在使用本条路由,向目的地发送数据包时所需采用的 IP 地址; |
<附加信息> | 代表多个可选项,常见的有:见下面 |
<附加信息>:
- scope
:定义这条路由的范围:
global
表示有网关的单播(unicast)路由link
表示直连的单播或广播(broadcast)路由host
表示本地(local)路由。该值可能是一个整数值或者是字符串值,字符串值应该能在/etc/iproute2/rt_scopes
中找到- metric <整数>:表示路由的优先级,数字越小优先级越高。
最小值为 0
,最大值为 65535
- table <表名/数字>:如果一条路由不属于 main 表,则会在这里指出该路由所属的路由表
路由追踪:traceroute <ip地址>
该命令用于显示数据包到主机间的路径。
使用详解:
1 | $traceroute xiaoxin123.top |
相关命令参数:
traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
-d 使用Socket层级的排错功能。
-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g<网关> 设置来源路由网关,最多可设置8个。
-i<网络界面> 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p<通信端口> 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s<来源地址> 设置本地主机送出数据包的IP地址。
-t<服务类型> 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w<超时秒数> 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
简化的路由追踪命令: tracepath
1 | $tracepath xiaoxin123.top |
相关命令参数:
用法及参数
-n 显示IP,不显示主机
-l 初始化包的长度,默认65535
-b 打印主机名以及IP信息
-p 指定端口
-m 设置最大的跳跃节点数,默认是30
扩展
arp
- ARP 代表“地址解析协议”,是一种用于将 IP 地址映射到局域网上的物理 MAC 地址的协议
ARP(地址解析协议)是一种网络协议,用于从IP
地址中找出设备的硬件 (MAC) 地址
。- 当设备想要与本地网络上的其他设备通信时使用它,发送设备使用
ARP
将 IP 地址转换为 MAC 地址。- 设备发送一个 ARP 请求消息,其中包含接收设备的 IP 地址。 本地网段上的所有设备都会看到该消息,但只有具有该 IP 地址的设备会使用包含其 MAC 地址的 ARP 回复消息进行响应。 发送设备现在有足够的信息将数据包发送到接收设备。
ARP过程的解释:
假设主机 A 想与主机 B 通信。主机 A 知道主机 B 的 IP 地址,但不知道主机 B 的 MAC 地址。为了找出主机B的MAC地址,主机A发送一个ARP请求,列出主机B的IP地址作为目的IP地址,MAC地址为FF:FF:FF:FF:FF:FF(以太网广播) .交换机会将帧转发到所有接口。
网段上的每个设备都会收到该数据包,但由于目标 IP 地址是主机 B 的 IP 地址,因此只有主机 B 会回复 ARP 回复数据包,并列出其 MAC 地址。
Linux中的arp命令是什么
ARP 代表“地址解析协议”,是一种用于将 IP 地址映射到局域网上的物理 MAC 地址的协议。
arp常用命令
1 | # 1.查看 Linux 上的 ARP 表 |