VPN 连接和路由问题 - 本地服务器通过云托管服务器连接到互联网 - wget/apt 出站连接

VPN 连接和路由问题 - 本地服务器通过云托管服务器连接到互联网 - wget/apt 出站连接

我遇到了网络/连接/路由问题,需要通过 VPN 隧道实现与托管 VPN 服务器/网关的云连接服务器的公共互联网连接。本地服务器位于偏远地区,ISP 选项受限,没有入站网络连接设施 [因此需要使用此架构]。

Local ISP                    ┌──------ wg1 10.8.90.1/24
10.8.0.2/24          network/internet            │   VPN network
        wg1│             xxxxxx           ┌──────┴─┐
         ┌─┴──┐         xx    xx  ──────--┤ VPN gw |
         |    |        xx      xx    ens3 │        |
         │    ├─eno1  xx        xx        └────────┘
         │    │        xx      xx           Cloud
         │    │         xx    xx            Server
         └────┘          xxxxxx           [WG Server]
         Local
         Server
       [WG Client]

本地服务器托管许多需要远程访问的数据服务。按照配置,到本地服务器的入站连接正常工作。同样,来自本地服务的响应通过云服务器正确路由。到目前为止,一切正常。不寻常的是,当 VPN 隧道接口启动时,来自本地服务器的“wget”和“apt update”请求不起作用。

需要明确的是,Wireguard 服务器/客户端配置已检查正确。并且 iptables SNAT/DNAT 方向也已检查正确。本地服务器和云服务器均运行 Ubuntu 22.04 并且完全是最新版本。

指导https://ubuntu.com/server/docs/wireguard-vpn-defaultgw已跟进。并且已检查 netplan 配置。

随着 Wireguard 隧道的启动,来自本地服务器的 ping 和 traceroute 测试按照预期正确通过隧道并通过云服务器路由到互联网。

该问题似乎与本地服务器硬件/软件配置有关。使用类似配置的 Multipass/Ubuntu 客户端进行测试,使用类似的连接,结果如预期一样,并且“wget”和“apt”请求正常工作。

我目前的想法是,问题可能是以下之一:特定的以太网硬件驱动程序问题,路由/ netplan 问题或 MTU/碎片问题。

欢迎提出进一步调查和隔离此问题的建议。非常感谢。

[附言:可能相关的是,使用 openvpn 隧道而不是 wireguard 隧道时也会发生此问题,因此我认为这是与本地服务器相关的特定硬件/软件问题]

答案1

好的。看来我上面的问题不应该发布在这里,因为它不仅仅与 Ubuntu 有关。

经过进一步的研究,我找到了问题的根本原因。虽然我正确使用了 iptables DNAT/SNAT 规则,但它们并没有提供完整的解决方案。

GitHub 上有一个很棒的仓库https://github.com/mochman/Bypass_CGNAT#readme讨论并提供我遇到的相同问题的解决方案。

相关内容