通过OpenVPN docker路由流量

时间:2020-06-17 23:43:11

标签: docker kubernetes iptables openvpn

我想设置一个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不起作用吗?

谢谢

0 个答案:

没有答案