运行 VPN 服务器的 Ubuntu VPS 不转发数据包

运行 VPN 服务器的 Ubuntu VPS 不转发数据包

我在这里问了一个相关的问题 -无法从 VPS 路由回 ipsec 隧道- 但我已经回答了这个问题并且继续了下去。

我想要实现的最终目标是:

我们有一堆 4G 路由器,按照英国的标准,它们位于几层运营商级 NAT 后面,因此无法公开寻址。我们需要能够从 AWS 上的服务器与这些路由器进行通信。我的想法是设置一个具有静态 IP 地址的 VPS,并从 4G 路由器到 VPS 建立 VPN。然后,我们可以通过 VPS 上的公共 IP 与 4G 路由器通信,该 IP 将被设置为将流量转发回 VPN 隧道。

我所在的位置:

我在 Digital Ocean 上设置了一个 VPS,并使用此脚本设置了一个 libreSwan IPSec VPN -https://github.com/philplckthun/setup-simple-ipsec-l2tp-vpn- 并成功从路由器到 VPS 建立了 VPN。我可以从 VPS ping 到路由器以及连接到路由器的其他设备(这是我最初遇到的问题)。路由器设置为使用 VPN 隧道作为默认路由,当我从路由器 ping VPS 时,我可以看到数据包从路由器的本地地址到达(与连接到路由器的设备相同),但现在我遇到一个问题,如果我从路由器 ping 互联网地址(例如 8.8.8.8),我可以看到数据包到达 VPS,但它们没有被转发到互联网(通过在互联网上 ping 另一台机器并观察 TCPdump 来证明)。我已经在 /etc/sysctl.conf ( net.ipv4.ip_forward = 1) 中设置了转发并在 iptables () 中启用了 MASQUERADE -A POSTROUTING -o eth0 -j MASQUERADE。我还尝试了在网上找到的其他几个 iptables 规则,但都无济于事。

网络图:

laptop (used for testing) --- 4G router --- Internet/VPN tunnel --- DO VPS
192.168.0.159                192.168.0.1                           public IP

如果我从笔记本电脑 ping 8.8.8.8,VPS 上的 TCPdump 会看到以下内容:

14:24:58.713759 IP 192.168.0.159 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 714, length 40

但是笔记本电脑没有收到回复,正如我所说,我已经确认数据包没有得到进一步传输。

VPS 的路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         178.62.64.1     0.0.0.0         UG        0 0          0 eth0
178.62.64.0     *               255.255.192.0   U         0 0          0 eth0

我做错了什么(除了起床和上班)?

谢谢。

答案1

回答我自己的问题;在服务器上的 ipsec.conf 中,我们有left=<server's subnet>。更改它以left=0.0.0.0/0使转发按预期工作。

相关内容