处理冲突子网时的 Linux 内核行为

处理冲突子网时的 Linux 内核行为

我正在使用 openconnect 连接到我的办公室 VPN。他们推行了一些非常糟糕/激进的路由规则,分配了所有私有 IP 地址空间 >.<

连接到办公室 VPN 后,我的主路由表包含以下路由(实际上它包含更多路由,但这些是冲突子网):

192.168.0.0/24 dev p4p1  proto kernel  scope link  src 192.168.0.200 
192.168.0.0/16 dev tun0  scope link

如您所见,所有到 192.168.0.0/16 的流量都应该通过 tun0 路由。但奇怪的是事实并非如此。

如果我 ping 我家里的 LAN(192.168.0.0/24)中的一台机器,ICMP 数据包会到达该机器,而且通常一切正常,因此我假设发往 192.168.0.0/24 的数据包不会通过 VPN 连接。

我的问题是,Linux 内核如何处理冲突子网?我怀疑它选择使用最精确的路由,在本例中是 192.168.0.0/24。您能否给我指出一份描述此情况的文档或提供一些提示?

答案1

实际上并没有发生冲突。一个子网具有更具体的掩码

192.168.0.0/24 has more specific mask than 192.168.0.0/16

例如,默认网关是默认的,因为它具有不太具体的掩码/0。

如果您通过另一个接口添加到 192.168.0.3/32 的路由,它将具有比其他两个路由更具体的掩码。

相关内容