我的Linux服务器有关于VPN和端口转发的问题。 我也是这个领域的初学者,所以请原谅我的任何错误。
首先,让我来描述你的基础设施。 我已经正确configuration了openvpn的Linux VPS服务器( S1 ),并且使用Linux( C1 )的计算机也configuration了openvpn。 使用端口号1194连接。 这基本上是这个计划:
S1 [ip: XXX221] [tun0 ip: 10.8.0.1] C1 [ip: YYY19] [tun0 ip: 10.8.0.6]
当我说这是所有正确的configuration是因为我可以从C1成功ping 10.8.0.1。
现在,它出现了问题…我有一个服务P1在S1端口1800上运行,并在C1服务客户端。 我可以成功地给C1的客户端IP地址XXX221:1800 ,但我希望客户端通过VPN连接访问P1 。 这是一种方法吗?
起初我以为这只是一个端口转发问题,而我所需要做的就是将端口1194的每个请求都转发到端口1800 ,并且我发现这个命令做到了(顺便说一下 , venet0是我的接口):
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 1194 -j REDIRECT --to-port 1800
但是这不行。
任何帮助? 谢谢 :)
EDIT1:
在S1中发出netstat -rn和10.8.0.6结果:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0 traceroute to 10.8.0.6 (10.8.0.6), 30 hops max, 60 byte packets 1 10.8.0.6 (10.8.0.6) 116.769 ms 119.000 ms 120.618 ms
在C1中发出netstat -rn和traceroute 10.8.0.1结果:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 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 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 traceroute to 10.8.0.1 (10.8.0.1), 30 hops max, 38 byte packets 1 10.8.0.1 (10.8.0.1) 83.825 ms 83.639 ms 86.877 ms
编辑2:
S1的configuration文件(我相信什么开始于;不考虑):
;local abcd port 1194 proto udp dev tun ;dev-node MyTap ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ;push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 ;learn-address ./script push "dhcp-option DNS 8.8.8.8" push "dhcp-option WINS 8.8.4.4" ;client-to-client ;duplicate-cn keepalive 10 120 ;tls-auth ta.key 0 # This file is secret ;cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ;max-clients 300 user root group root persist-key persist-tun status openvpn-status.log ;log openvpn.log ;log-append openvpn.log verb 3 ;mute 20
C1的configuration文件
client remote 176.9.192.221 1194 ca ca.crt cert client.crt key client.key cipher BF-CBC comp-lzo dev tun proto udp nobind persist-key persist-tun user root group root
您可以在C1上手动删除现有的静态路由为10.8.0.1和10.8.0.5 ; 例:
route del -net 10.8.0.1 gw 10.8.0.5 netmask 255.255.255.255 dev tun0
然后在C1上添加一个新的路由使用:
route add -net 10.8.0.1 gw 10.8.0.6 netmask 255.255.255.255 dev tun0
看看是否有效。 记得跟踪你的旧路线,以防你需要重新添加它们。 这应该可以解决您的VPN路由问题。
您的其他问题是您的VPNnetworking无法与OpenVPN服务器的NIC所在的networking进行通信。 您可以通过在这些networking的每一边添加一个新的静态路由来解决这个问题。
在C1上:
route add -net XXX221 gw 10.8.0.6 netmask 255.255.255.255 dev tun0
在S1:
route add -net YYY19 gw 10.8.0.6 netmask 255.255.255.255 dev tun0
注意:除非您可以恢复您的更改,否则我不会推荐这个选项。 万一它不起作用。
您也可以尝试在OpenVPNconfiguration中使用push route选项。 例如:
push "route XXX221 255.255.255.0"
最后,如果这些都不起作用,则可以尝试在IPTABLES中添加一些内容,以将stream量从您的VPNnetworking(NAT)转发到S1上的本地networking。 就像是:
iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -A PREROUTING -s 10.8.0.6 -p tcp --dport 1800 -j DNAT --to-destination XXX221:1800
因此,您的服务S1必须在VPN IP 10.8.0.1上进行监听,并且您的客户端C1需要连接到10.8.0.1:1800 …只要您的VPN完全正常工作。
看起来你的S1服务configuration不是监听tun接口。 路由没有问题。 你的服务是什么? 你可以显示它的configuration吗? 无论如何 – 试试
S1上的telnet Xxx221 1800 telnet 10.8.0.1 1800上的S1上的telnet Xxx221 1800 。 如果您将在其中一种情况下收到答案 – 在服务configuration文件中search问题。