我有一个与远程位置的服务器的 VPN 连接。我希望其他 PC 能够通过 VPN 连接器访问远程位置的 Web 服务器。但我无法到达我想要的地方。
情况如下:
VPN Server (and also the webserver): 10.0.0.2
^
|
Router: 192.168.1.127 & 10.0.0.1 (openssh port is forwarded to 10.0.0.2)
^
|
|
VPN Connector: 192.168.1.148
^
|
Client pc: 192.168.1.129
另外,VPN 网络(称为 tun0)的 ip 是:VPN 服务器:192.168.2.1 VPN 连接器:192.168.2.6
因此,如果我登录到 VPN 连接器并执行 wget 192.168.2.1:4848,它可以正常工作。
很好,vpn 连接正常。
但我想要做的是:在客户端电脑上打开浏览器并转到 192.168.1.148:4848。(这是 vpn 连接器)。然后连接器应将其转发到 vpn,向我显示 192.168.2.1 上的 Web 服务器(vpn 服务器)。
这是我的 IPTables 设置:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.148 --dport 4848 -m state --state NEW,ESTABLISHED,RELATED -j DNAT -to 192.168.2.1:4848
iptables -t nat -A POSTROUTING -o tun0 MASQUERADE
那么,我对 iptables 还很陌生,我遗漏了什么?
如果我在 tun0 上的 vpn 连接器上执行 tcpdump,我可以看到数据包通过了吗?
13:31:02.850057 IP 192.168.1.129.52870 > 192.168.2.1.1337: Flags [S], seq 538959383, win 8192, options [mss 1460,nop,nop,sackOK], length 0
但是如果我在 tun0 上的 VPN 服务器上执行 tcpdump,什么也不会发生。
抱歉,这篇文章太长了,但我做错了什么?请帮忙!
答案1
在您的 VPN 连接器上,尝试按如下方式配置伪装规则
iptables -t nat -I POSTROUTING -o tun0 -j SNAT --源 192.168.2.6