K8s 上的 OpenVPN-Client Pod - 本地网络无法访问
OpenVPN-Client Pod on K8s - Local network unreachable
我目前正在尝试在 K8s Pod 中获取 OpenVPN 客户端 运行。我试图实现的目标是我能够通过 VPN 连接访问互联网,同时还能够与我的命名空间中的其他容器进行通信。问题是一旦建立 VPN 连接,我就无法与 10.42.0.0、10.43.0.0 网络(对于 pods 和服务)进行交互:(
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:印花布
提前致谢,感谢您的每一个提示,我从几天开始就在努力
正如@anemyte 所写删除 route 10.42.0.0 255.255.0.0
和 route 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
.
我目前正在尝试在 K8s Pod 中获取 OpenVPN 客户端 运行。我试图实现的目标是我能够通过 VPN 连接访问互联网,同时还能够与我的命名空间中的其他容器进行通信。问题是一旦建立 VPN 连接,我就无法与 10.42.0.0、10.43.0.0 网络(对于 pods 和服务)进行交互:(
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:印花布
提前致谢,感谢您的每一个提示,我从几天开始就在努力
正如@anemyte 所写删除 route 10.42.0.0 255.255.0.0
和 route 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
.