在我的 Ubuntu 桌面上
ip route help
对我没有帮助:
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
如何解释以下ip路由:
default via 192.168.0.1 dev wlo1 proto dhcp metric 600
default via 192.168.1.1 dev br0 proto static metric 20100 onlink linkdown
10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1
10.121.173.0/24 dev mpqemubr0 proto kernel scope link src 10.121.173.1 linkdown
169.254.0.0/16 dev virbr1 scope link metric 1000
是10.42.0.0/24
源还是10.42.0.1
目标?devcni0 proto kernel scope link src
指的是什么?
答案1
这些字段大多与的命令行关键字匹配ip route add
;请参阅man ip route
。
10.42.0.0/24 是源,10.42.0.1 是目标吗?
主要值,10.42.0.0/24
或default
,是该路线的目的地。
这里没有实际的“源”字段 – IPv4 路由通常不按源匹配,只按目的地匹配。(IPv6 路由能与源和目标都匹配,但from
在这种情况下字段会被标记,而不是“src”。)
src
10.42.0.1 是“首选当此系统与该目的地建立连接时使用的“源”IP 地址提示。(主要用于系统具有多个 IP 的情况。)当系统从其他地方转发数据包时,它不起作用。
via
是可到达目的地的下一跳网关。
dev
表示下一跳设备(接口),如ip link
或中所示ip addr
。如果路由有“dev”但没有“via”,则它是“本地子网”路由或“设备”路由或“on-link”路由;无需网关即可到达目的地。对于在“via”中指定网关的路由,“dev”字段是可选的,仅指定要访问哪个接口网关已打开(但也可以通过以下链接路线确定接口)。
scope link
还表明这是一条“本地子网”路由,可用于解析更高范围的路由的网关。例如,via 10.42.0.1
没有指定“dev”字段的路由将通过使用以下方式自动确定设备为“cni0”仅有的“范围链接”路由(因为路由下一跳根据定义是链接本地的)。
proto
是一个标签,用于指示什么软件安装了此路由 - 'proto kernel' 表示它是由内核自己添加的;当您使用子网掩码配置 IP 地址时,您会自动获得它的“子网”路由。
(Bird 或 FRR/Zebra/Quagga 等路由守护进程使用“proto”字段,以便它们能够可靠地检测和删除自己的路由而不会混淆它们。您可以指定任何您喜欢的“proto”值,名称在 /etc/iproute2 中定义;默认情况下,手动添加的路由会分配“proto boot”。)
答案2
路由表中此条目的解释:
10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1
如下:
- 10.42.0.0/24是目的地,这适用于任何到目标 IP 地址在
10.42.0.0
以下范围内的流量10.42.0.255
- dev cni0表示与此路由关联的网络接口,即“cni0”。路由将使用此接口发送和接收流量(此接口似乎是容器网络的桥梁https://www.redhat.com/sysadmin/cni-kubernetes)
- 原始内核表示该路由是内核在自动配置过程中自动添加的
- 作用域链接表示该路由仅对本地链路或直连网络有效(不可在公共互联网上路由)
- 源 10.42.0.1指定通过此路由发送数据包时使用的源 IP 地址