Ing*_*dau 12 linux dns docker docker-swarm weave
我在Docker-Swarm上使用Weave网络插件.
我创建了一个具有特定IP范围的docker网络,与我从内部网络路由的默认Weave网络不同.
为了使容器更易于访问,我使用weave附加DNS名称,如containername.auto.mycompany.de.现在我想访问我公司的网络.问题是,编织只允许从本地主机访问编织DNS.
就像在我的一个swarm节点上一样,我可以这样做:
host foobar.auto.mycompany.de 172.17.0.1
Using domain server:
Name: 172.17.0.1
Address: 172.17.0.1#53
Aliases:
foobar.auto.mycompany.de has address 10.40.13.3
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)
Run Code Online (Sandbox Code Playgroud)
但我找不到一种方法可以在这个(10.40.130/24)泊坞网络中的一个IP上访问编织容器,或者将端口暴露给群集节点.
我能想到但却不喜欢的唯一方法就是这样做:
iptables -t nat -A DOCKER -p tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53
Run Code Online (Sandbox Code Playgroud)
(这不起作用,这只是想法)
或者篡改编织脚本以使其在编织容器的开始处暴露端口.
有人知道更好的解决方案吗?
事实上制定规则
iptables -A DOCKER -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53
iptables -A DOCKER -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.1:53
Run Code Online (Sandbox Code Playgroud)
可以。当我第一次尝试时,我只是错过了,我的请求将来自服务器“外部”工作,而不是从内部发送到环回设备。
仍然不是一个很好的解决方案,但它可以完成工作。我期待看到你们更好的解决方案。
(赏金站!)