我想设置一个VPN服务器并通过VPN路由所有客户端流量。
为此,我使用OpenVPN docker镜像kylemanna/openvpn
运行VPN服务器。我的Docker在Kubernetes上运行,并且不共享主机网络。我还添加了NET_ADMIN功能并启用了特权模式。
为了将docker映像配置为网关,我使用iptables配置了NAT(在docker内部)
iptables -I FORWARD -i tun0 -o eth0 -s 192.168.255.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 192.168.255.0/24 -j MASQUERADE
很不幸,出现了问题。我可以完美地连接到VPN并ping任何公共IP。我还可以卷曲到任何HTTP流量而不会出现任何问题。如果我curl http://ifconfig.co
,我还可以看到我的IP已更改为服务器的IP。所以直到这里一切都按预期工作。
但是它仅适用于HTTP流量,如果我尝试使用HTTP卷曲Google,则会收到响应,但是使用HTTPS时,我不会获得任何响应。我用tcpdump将其签出,然后数据包返回到客户端。
当我在详细模式下卷曲google时,这就是挂起之前发生的情况:
curl -v https://www.google.com
* Trying 172.217.20.100:443...
* TCP_NODELAY set
* Connected to www.google.com (172.217.20.100) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
有人知道如何调试此功能/为什么HTTP不能正常工作时HTTPS不起作用吗?
谢谢