Warm tip: This article is reproduced from serverfault.com, please click

kubernetes-K8s上的OpenVPN-Client Pod

(kubernetes - OpenVPN-Client Pod on K8s)

发布于 2020-12-29 15:40:53

我目前正在尝试使OpenVPN客户端在K8s Pod内运行。我要实现的目标是,我可以通过VPN连接访问互联网,同时还可以同时与我的命名空间上的其他容器进行通信。问题是,一旦建立VPN连接,即时通讯就无法与10.42.0.0、10.43.0.0网络(用于Pod和服务)进行交互:(

smb可以给我提示有关在与VPN连接时如何与上述两个网络进行交互的提示吗?

我的客户端配置(可能非常错误)

client
dev tun
proto udp
remote some.vpnserver.com 443
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
redirect-gateway def1 bypass-dns
dhcp-option DOMAIN-SEARCH cluster.local
dhcp-option DOMAIN-SEARCH svc.cluster.local
dhcp-option DOMAIN-SEARCH default.svc.cluster.local
dhcp-option DNS 10.43.0.10
pull-filter ignore block-outside-dns
pull-filter ignore redirect-gateway
pull-filter ignore explicit-exit-notify
pull-filter ignore "dhcp-option DNS"

verify-x509-name some.vpnserver.com name
auth-user-pass
comp-lzo
keepalive 10 60
verb 3
auth SHA256
cipher AES-256-CBC
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA

<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>

我还向我的部署yaml中添加了以下内容:

  capabilities:
    add:
      - NET_ADMIN
      - SYS_MODULE
  dnsConfig:
    nameservers:
      - 10.43.0.10 # K8s CoreDNS
    options:
      - name: ndots
        value: "2"
      - name: edns0
  • 连接后,Ping 8.8.8.8对我有效。但是在K8s命名空间中,im根本无法访问任何内容。

  • 建立VPN连接后,DNS根本不起作用。使DNS工作的唯一方法是在部署yaml上进行以下设置:

    dnsConfig:
      nameservers:
        - 1.1.1.1
    

哪个仍然不能解决与本地网络或本地DNS / Pod等交互的问题?

我正在尝试

  • OpenVPN 2.5.0
  • K8s 1.19.4
  • CNI:印花布

在此先感谢你,我非常感谢你的每一个提示,从那时起我一直在努力

Questioner
sunwave121
Viewed
0
community wiki 2020-12-30 17:26:12

就像@anemyte写道remove route 10.42.0.0 255.255.0.0route 10.43.0.0 255.255.0.0那些意味着要将VPN用于子网,你想要相反。
默认情况下,本地网络流量不使用redirect-gateway..进行路由 。然后尝试恢复路由,但这次将其添加net_gateway 到每个路由 的末尾。这使路由使用默认网关而不是VPN。这应该看起来像这样 route 10.42.0.0 255.255.0.0 net_gateway

看一下:openvpnclient-podopenvpn-kubernetes