我有在 VPN 客户端计算机上运行的 VNC 服务器,端口为 5900,它将连接到我的 VPN 服务器 (ppp),可通过 Internet 用户访问。VPN 服务器是 CentOS 6.8 x64。
但是,当前的 VPN 客户端 ISP(不是 VPN 服务器)不允许来自外部/互联网的传入连接。换句话说,他们已经保护了防火墙并采取了一些措施。目前,我的 VPN 客户端能够:
- 无需 VPN 服务器即可连接到互联网
- 使用 VPN 服务器连接到互联网
- 端口 5900 为 VNC 服务器开放,以便每个人都可以从 LAN/MAN/WAN 进行连接
- 由于 ISP 阻止了端口,因此能够接收 5900(仅限 LAN)
我的 VPN 服务器能够: - 从 VPN 和互联网接收和传输
在 VPN 服务器(即 Centos 6.8)中,这些是我的 VPN 客户端能够通过 VPN 服务器访问互联网的 iptables:
-A POSTROUTING -o eth0 -j MASQUERADE
-A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT
-A FORWARD -d 210.48.222.2/32 -i eth0 -o ppp+ -p tcp -m tcp --dport 5900 -j ACCEPT
-A FORWARD -i ppp+ -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o ppp+ -j ACCEPT
这些是 CentOS 中的 ifconfig
eth0 Link encap:Ethernet HWaddr 04:01:4C:C5:81:02
inet addr:128.199.210.115 Bcast:128.199.255.255 Mask:255.255.192.0
inet6 addr: 2400:6180:0:d0::45c:c001/64 Scope:Global
inet6 addr: fe80::601:4cff:fec5:8701/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:163888 errors:0 dropped:0 overruns:0 frame:0
TX packets:171866 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:178131279 (169.8 MiB) TX bytes:179452807 (171.1 MiB)
eth1 Link encap:Ethernet HWaddr 04:01:4C:C5:67:01
inet addr:10.130.133.116 Bcast:10.130.255.255 Mask:255.255.0.0
inet6 addr: fe80::601:4cff:fec5:8702/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:566 (566.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:24797 errors:0 dropped:0 overruns:0 frame:0
TX packets:24797 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2914752 (2.7 MiB) TX bytes:2914752 (2.7 MiB)
ppp0 Link encap:Point-to-Point Protocol
inet addr:128.199.210.115 P-t-P:210.48.222.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:33106 errors:0 dropped:0 overruns:0 frame:0
TX packets:43985 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:3997842 (3.8 MiB) TX bytes:39318955 (37.4 MiB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 -00
inet addr:10.50.0.1 P-t-P:10.50.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
我已经审查过iptables:如何将目标端口为 80 的数据包从 eth0 转发到 eth1?,它确实从 eth0 到 eth1 有效,并尝试从 eth0 到 ppp+ 应用,但它不起作用。或者也许我需要在 iptables 中添加更多内容。
对于 VPN,我按照文章中的步骤操作https://www.photonvps.com/billing/knowledgebase.php?action=displayarticle&id=58可以工作(VPN 客户端能够连接到 VPN 服务器)
但是,如果不连接 VPN 服务器,我仍然无法从互联网/其他 ISP 连接到我的 VPN 客户端的 VNC(端口 5900)。iptables 中是否有任何错误或缺失?
这些是我的计划:-
My PC (not the VPN user) > Remotely Access to > CentOS + VPN Server > Client (connected to the CentOS VPN)
答案1
没关系,问题解决了,它工作正常(通过 VPN 使服务器在被阻止的 ISP 上公开访问)我只需要在 /etc/sysconfig/iptables 中添加这些:
-A PREROUTING -p tcp -m tcp --dport 5900 -j DNAT --to-destination 210.48.222.2:5900
-A POSTROUTING -o ppp+ -j MASQUERADE