我设置了 Wireguard VPN,用于iptables
将 VPS 上收到的数据包(带有 )转发到服务器,效果很好。但是,eno2
Debian 自动配置的(服务器的)接口会创建 IP 路由,其中一个是x:x:x:x::/64 dev eno2
,即服务器所在的本地网络。
这会产生不必要的行为,因为当我(从本地网络)通过 VPS 向服务器发送数据包时(这意味着服务器将在接口 上接收数据包wg0
),服务器会在本地网络(接口eno2
)上进行回复,因为源 IPv6 地址在 Internet 和本地网络上是相同的,因此与路由匹配x:x:x:x::/64 dev eno2
,即使非本地 IPv6 流量通过 发送wg0
。并且它使用我发送数据包的计算机不知道的 IP 地址进行响应,因为我已使用 Wireguard 设置了 NAT。
正如标题所写,IPv4 不会发生这种情况,因为它使用 NAT,所以源 IP 地址不匹配192.168.1.0/24 dev eno2
。
我始终可以直接连接到服务器而不通过 VPS,或者fe80::/10
在需要时使用本地链接地址进行连接,并使用具有较低度量和较高优先级的路由(例如x:x:x:x::/64 dev wg0 metric 200 pref high
)覆盖自动配置的路由,以保留 Debian 所做的自动配置,但此路由除外。但这没有考虑到网络前缀可能会发生变化。我也能够通过从 VPS 添加 SNAT 规则来使其工作,iptables
但这会破坏需要源 IP 地址的服务(例如 SPF)。
有没有更好的解决方案?也许可以添加一条将数据包从 发送回 的路由wg0
,wg0
并使该路由优先于 路由x:x:x:x::/64 dev eno2
,这样我仍然可以使用其公共 IPv6 地址访问本地网络上的服务器?