更新

更新

我似乎无法弄清楚这一点。服务器在具有私有网络的 VPS 上运行。我需要通过 OpenVPN 服务器从客户端访问同一数据中心的另一个 VPS。服务器的 LAN IP 是 10.128.182.211,我需要访问的框是 10。我可以从客户端 ping 服务器的 LAN。我正在推送路由,我可以在客户端中看到它:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.5        128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.2.1     0.0.0.0         UG    303    0        0 wlan0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.8.0.5        128.0.0.0       UG    0      0        0 tun
192.168.2.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
192.168.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

我在服务器上尝试了以下两条规则:

iptables -A FORWARD -i tun0 -o ens4v1 -j ACCEPT
iptables -A FORWARD -i ens4v1 -o tun0 -j ACCEPT

但仍然没有结果。我目前通过 VPN 路由所有客户端的流量,并且 IP 转发已启用并正常工作。

更新

搞清楚了……真的太明显了。我需要一个 MASQUERADE 规则,就像我上网时使用的规则一样。

-A POSTROUTING -o ens3 -j MASQUERADE
-A POSTROUTING -o ens4v1 -j MASQUERADE

答案1

我需要一个化装舞会规则

使用 MASQUERADE 是最简单的方法,但您也可以通过向所有 LAN 机器添加 VPN 路由来设置路由。

看:http://openvpn.net/index.php/open-source/documentation/howto.html#scope

服务器在 VPS 上运行

有些 VPS 无法执行 MASQUERADE,因此您可以执行以下操作:

iptables -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 12.34.56.78

--to-source选项将是输出接口的地址

相关内容