WireGuard 路由与本地路由重叠

WireGuard 路由与本地路由重叠

我以前问过这个问题,但没有得到合适的答案。我有一台 Debian 机器,它经常更换网络,所以我依赖 DHCP,无法设置静态路由。因此,DCHP 会自动创建两个 IP 路由:默认路由(0.0.0.0/0 → 网关)和一条用于本地网络的路由(例如 10.1.0.0/16 → 网关)。我的问题是我想通过 WireGuard 路由所有流量。这导致 WireGuard 路由(0.0.0.0/0 → wg0)和本地路由重叠。本地路由(例如 10.1.0.0/16)更具体,因此更受欢迎。有什么方法可以抑制这些路由器的创建吗?我已经找了好几天的解决方案了……

答案1

DHCP 是计算机用来从路由器获取 IP 地址的协议。路由器会响应计算机的 IP 地址、路由器的 IP 地址和子网大小,这样计算机便知道自己的 IP 地址以及如何将数据包转发到互联网。

子网大小由安装路由器的人决定。网络中的所有客户端设备都应使用相同的子网大小,以避免出现细微问题。

但是,如果您仍想删除本地子网路由,则需要设置另一个路由来告诉网络堆栈如何将数据包发送到路由器。您需要在 DHCP 客户端中创建一个钩子,该钩子执行以下操作:

示例 IP 地址:

路由器 192.168.10.1 计算机 192.168.10.2

  • 计算覆盖路由器 IP 地址和计算机接收 IP 地址的最小子网。在示例中,覆盖这些地址的最小子网是192.168.10.0/30
  • 192.168.10.0/30添加通过网络接口转发子网的路由。
  • 删除更宽的DHCP添加的路由。

即使使用此方法,您的家庭网络和您正在使用的网络连接之间仍可能存在地址重叠。我个人已通过172.16/12在家庭网络中使用空间子网解决了此问题。据我所知,它是网络使用最少的前缀,因此冲突的可能性很小。

尽管可以实现缩小本地网络路线,但我不建议这样做,因为它可能会产生严重的副作用。

如果我是你,我会简单地重新编号我的本地网络,这样就不会发生冲突。

答案2

我现在通过创建一个可执行文件解决了这个问题:

#!/bin/bash
ip route del $(ip route | grep "dev ens18 proto kernel scope link" | head -1)

在 /etc/network/if-up.d/ 中。我知道这个解决方案不是很好,但我还没有找到更好的解决方案。

相关内容