我在 Docker-Swarm 上使用 Weave 网络插件。
我创建了一个具有特定 IP 范围的 docker 网络,不同于默认的 Weave 网络,我从内部网络路由到该网络。
为了使容器更易于访问,我使用 weave 附加 DNS 名称,例如 containername.auto.mycompany.de。现在我想从我的公司网络访问那些。问题是,weave 只允许从本地主机访问 weave DNS。
就像在我的一个集群节点上一样,我可以这样做:
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)
但是我没有找到一种方法可以让 weave 容器可以从这个(10.40.130/24)docker 网络中的一个 IP 上访问,或者将端口暴露给 swarm 节点。
我能想到但不喜欢的唯一方法是做这样的事情:
iptables -t nat -A DOCKER -p tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53
(这不起作用,这只是想法)
或者篡改 weave 脚本,使其在 weave 容器启动时暴露端口。
有人知道更好的解决方案吗?