我工作的地点之一正在阻止所有到“众所周知的”VPN 服务的流量,包括我使用的 VPN 服务。
我现在想将 openVPN 流量通过/跨过/通过我自己的 VPS(其 IP 未被阻止)“反弹”到我的 VPN 服务 - 然后再返回。像这样:
|me| <-UDP-> |my VPS| <-UDP-> |VPN service|
从而启动如下虚拟/逻辑连接:|me| <-UDP-> |VPN service|
。
iptables
我在工作中有以下规则(196.196.yyy.yyy
是我的 VPN 提供商的服务器 IP):
iptables -t nat -A PREROUTING -p udp -i venet0:0 --dport 1194 -j DNAT --to-destination 196.196.yyy.yyy:1194
iptables -A FORWARD -p udp -d 196.196.yyy.yyy --dport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i venet0:0 --dport 443 -j DNAT --to-destination 196.196.yyy.yyy:443
iptables -A FORWARD -p tcp -d 196.196.yyy.yyy --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
但是,openvpn
无法建立连接(50.3.xxx.xxx
是我的 VPS 的 IP 地址):
$ sudo /some/dir/sbin/openvpn --config /some/dir/hoppingvpntcp.ovpn --verb 6
(...)
Fri Sep 28 14:48:57 2018 us=785094 Attempting to establish TCP connection with [AF_INET]50.3.xxx.xxx:443 [nonblock]
Fri Sep 28 14:48:58 2018 us=785837 TCP connection established with [AF_INET]50.3.xxx.xxx:443
Fri Sep 28 14:48:58 2018 us=785887 TCP_CLIENT link local: (not bound)
Fri Sep 28 14:48:58 2018 us=785908 TCP_CLIENT link remote: [AF_INET]50.3.xxx.xxx:443
Fri Sep 28 14:48:58 2018 us=786112 TCP_CLIENT WRITE [86] to [AF_INET]50.3.xxx.xxx:443: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #1 ] [ ] pid=0 DATA len=0
Fri Sep 28 14:48:58 2018 us=814033 Connection reset, restarting [0]
Fri Sep 28 14:48:58 2018 us=814157 TCP/UDP: Closing socket
Fri Sep 28 14:48:58 2018 us=814272 SIGUSR1[soft,connection-reset] received, process restarting
Fri Sep 28 14:48:58 2018 us=814373 Restart pause, 5 second(s)
^CFri Sep 28 14:49:01 2018 us=543743 SIGINT[hard,init_instance] received, process exiting
$
(全贴这里)。
直接连接(当然是从另一个位置,但以上也是从开放位置测试的)是有效的,因此两个端点上的配置和网络的内部运作似乎都很好。