我想使用云提供的 VPS 作为 NAS 来写入数据副本。因此我需要将其集成到我的本地网络中。作为 Wireguard 服务器对等体的 VPS 具有接口 wg0,内部地址为 192.0.0.1。唯一的客户端对等体具有 Wireguard 接口 wg1,内部地址为 192.0.0.2。同时,它具有本地网络地址 192.168.1.11。它还启用了 ip 转发,并将 iptables 规则设置为-A FORWARD -i wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o enxb82 -j MASQUERADE

Wireguard 连接正在建立并按预期工作。我还预期,我可以在 192.168.1.0/24 网络中的机器上挂载在 VPS 上创建的 NFS 共享,但它不起作用,从此网络 ping VPS 也不起作用。

出于测试目的,机器 192.168.1.50 具有静态路由192.0.0.1 via 192.168.1.11 dev eth0,从该机器执行 Ping 操作未收到任何回复。同时,客户端对等接口的 tcpdumpwg1给出以下输出:

19:31:00.785941 IP 192.168.1.50 > 192.0.0.1: ICMP echo request, id 70, seq 3, length 64

服务器的公共互联网接口以 UDP 数据报的形式接收这些 IMCP 请求,但它们无法到达wg0接口。如果我将我的 LAN 地址添加到 AllowedIPs 部分以进行wg0ping 运行,但我不希望 VPS 知道我的 LAN,反之亦然。我假设问题出在伪装中,当对等方没有将 LAN 请求替换为其 Wireguard 对应方时,但在互联网上找不到任何类似的例子来修复它。

1

  • 1
    1. 不要使用 192.0.0.0/24。它不是 RFC1918,破坏某些功能。2. 除非迫不得已,否则不要使用伪装。不要。请进行正确的路由。


    – 


最佳答案
1

正如@vidario 所说。

不要192.0.0.0/24 用于您的 VPN,因为它不是 RFC1918 地址。

它是互联网上特殊子网。

您的 VPN 的 IP 范围选项如下:

IP 范围 可用 IP 地址
10.0.0.0/8 10.0.0.0 – 10.255.255.255
172.16.0.0/12 172.16.0.0 – 172.31.255.255
192.168.0.0/16 192.168.0.0 – 192.168.255.255

您不需要使用整个可用子网范围。将可用范围划分为较小的子网是完全合法的。:-)

因此,您示例中最好的替代方案可能是使用10.0.0.0/24VPN,因为您只需要在 VPN 配置中替换一个数字。

那是:

  • 服务器内部 IP 将是:10.0.0.1
  • 客户端 IP 将是:10.0.0.2

但是我对您的静态路由有点困惑。

如果您有如下设置,则仅需要静态路由:

要么router需要PC2有静态路由才能 ping 通 VPN 服务器的内部 IP 地址。

如果您只想访问 NFS 共享,PC1则不需要静态路由,因为PC1通过 VPN 直接连接到 VPN 服务器

但这仅关注路由的一个方向。

为了让 VPN 服务器能够与子网上除 VPN 客户端之外的任何其他主机进行通信192.168.1.0/24,您需要在 VPN 服务器上添加静态路由,告知子网192.168.1.24/24可通过主机访问10.0.0.2

而且您还需要enable ip forwarding在主机 192.168.1.11 上,这可能有点棘手,具体取决于机器上的操作系统。

你需要告诉防火墙PC1

  • 允许从 192.168.1.0/24 到 10.0.0.0/24 的流量
  • 允许从 10.0.0.0/24 到 192.168.1.0/24 的流量

完成所有这些更改后,LAN 上的所有机器都可以 ping 服务器上的 VPN IP,反之亦然。