K8s 上的 OpenVPN-Client Pod - 本地网络无法访问

时间:2020-12-29 15:40:53

标签: kubernetes openvpn

我目前正在尝试让 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 命名空间内部,我根本无法访问任何内容。

  • 一旦建立 VPN 连接,DNS 就根本无法工作。使 DNS 工作的唯一方法是在部署 yaml 中设置以下内容:

    dnsConfig:
      nameservers:
        - 1.1.1.1
    

哪个还没有解决与本地网络或本地DNS/Pods等交互的问题?

我正在工作

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

提前致谢,我感谢每一个提示,我从几天开始就在努力

1 个答案:

答案 0 :(得分:1)

正如@anemyte 所写,删除 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

相关问题