您能否帮助我理解“本地表”(相对于“主路由表”)的实际用途,使用命令显示:ip route show table rt_eno2
我对基本路由的理解是,对于给定的目的地,内核将根据目的地 IP 地址(无论数据包源是本地还是通过 Ipv4_forward 的非本地)找到用于输出数据包的最佳接口,
无论它是连接的接口还是静态路由(特定或默认),此过程是针对内核全局进行的,而不是针对每个接口进行的。
(作为一名 CCIE 本人,我认为它应该像 Cisco 路由器一样工作,除了 VRF)
我没有看到任何实际情况需要使用此子路由表,而不是使用主路由表。我想到的唯一情况是,如果我们在同一子网中有两个 Linux 接口,并且在每个本地表中配置了不同的默认网关。然后,您将喜欢使用一个网关或另一个网关将数据包发送到其中,并且需要强制将目的地发送到一个接口或另一个接口。但我也明白,在同一子网中拥有两个接口会导致内核内部混乱。 (以 Eno1=192.168.0.1 和 eno2=192.168.0.2 为例,我应该在哪个接口上发回目标为 192.168.0.3 的数据包?)
不管怎样,我经常使用 Linux,而且只使用主表,我想了解 Linux 中这个“每接口”/本地路由表选项的实际用例。
答案1
本地表包含去往本地主机的路由。例如,当目标是::1
或时,将使用本地表127.0.0.1
。本地表还包含主机 IP 地址的条目,这可以防止目的地为我们自己的 IP 地址的数据包通过线路出去。这些路由默认不会通过命令显示ip route
,但可以通过 看到ip route show table local
。本地路由表不是“每个接口”的路由表。
通常,多个路由表(您可以拥有的不仅仅是主表和本地表)可以不仅仅针对目标地址做出路由决策,例如源地址、ToS 等。请参阅man ip-rule
或搜索“Linux 策略路由” ”。