MrE*_*MrE 9 dns vpn docker kubernetes
我docker-openvpn在我的(本地)Kubernetes集群中旋转了一个容器,以便安全地访问我的服务并在本地调试相关服务.
我可以通过openVPN服务器连接到集群.但是我无法通过DNS解析我的服务.
我设法在VPN服务器上设置路由后达到了这一点:
subnet 10.2.0.0/16subnet 10.3.0.0/1610.3.0.10curl到服务 的IP,并得到我所需要的数据.但是当我nslookup kubernetes或任何服务,我得到:
nslookup kubernetes
;; Got recursion not available from 10.3.0.10, trying next server
;; Got SERVFAIL reply from 10.3.0.10, trying next server
Run Code Online (Sandbox Code Playgroud)
我仍然缺少从DNS服务器返回的数据,但无法确定我需要做什么.
如何SERVFAIL在Kubernetes DNS中调试此问题?
编辑:
我注意到并希望了解的事情:
nslookup 用于解析除openvpn Pod之外的任何窗格中的服务名称nslookup在其他Pod中工作,ping但没有.traceroute在那些其他Pods导致法兰绒层10.0.2.2然后停在那里.从这个我想ICMP必须在法兰绒层被阻止,这并没有帮助我找出DNS被阻止的地方.
EDIT2:
我终于想出了如何让nslookup工作:我不得不将DNS搜索域推送到客户端
push "dhcp-option DOMAIN-SEARCH cluster.local"
push "dhcp-option DOMAIN-SEARCH svc.cluster.local"
push "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
Run Code Online (Sandbox Code Playgroud)
添加图像中的-p选项docker-openvpn
所以我最终得到了
docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig \
-u udp://192.168.10.152:1194 \
-n 10.3.0.10 \
-n 192.168.10.1 \
-n 8.8.8.8 \
-n 75.75.75.75 \
-n 75.75.75.76 \
-s 10.8.0.0/24 \
-d \
-p "route 10.2.0.0 255.255.0.0" \
-p "route 10.3.0.0 255.255.0.0" \
-p "dhcp-option DOMAIN cluster.local" \
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" \
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
Run Code Online (Sandbox Code Playgroud)
现在,nslookup工作,但curl仍然没有
最后我的配置看起来像这样:
docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig \
-u udp://192.168.10.152:1194 \
-n 10.3.0.10 \
-n 192.168.10.1 \
-n 8.8.8.8 \
-n 75.75.75.75 \
-n 75.75.75.76 \
-s 10.8.0.0/24 \
-N \
-p "route 10.2.0.0 255.255.0.0" \
-p "route 10.3.0.0 255.255.0.0" \
-p "dhcp-option DOMAIN-SEARCH cluster.local" \
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" \
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
Run Code Online (Sandbox Code Playgroud)
-u 用于VPN服务器地址和端口
-n 供所有DNS服务器使用
-s 定义VPN子网(默认为Kubernetes已经使用的10.2.0.0)
-d 禁用NAT
-p 将选项推送到客户端
-N 启用NAT:对Kubernetes的这种设置似乎至关重要
最后一部分,将搜索域推送到客户端,是获得nslookup等工作的关键.
请注意,curl最初没有工作,但似乎在几秒钟后开始工作.所以它确实有效,但curl需要一点时间才能解决.
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |