两个 IPv6 Docker 容器的传出 IP 地址必须相同

两个 IPv6 Docker 容器的传出 IP 地址必须相同

我在服务器上有一个 /64 IPv6 子网。我将 docker 配置为使用其中的默认 /80 部分,并且我有一个由 2 个依赖容器组成的应用程序。这两个容器位于 abcd:1::/80 网络中。可能有 100 个此应用程序实例正在运行。

问题是两个容器都需要有相同的 IP。至少我需要欺骗应用程序让它认为是这样的。它们由两个端口组成,app现在monitor公开app两个端口。其中一个端口将被monitor另一个端口通过外部源调用。monitor与外部源通信,需要使用与app

目前其配置如下:app使用abcd:1::2monitor使用abcd:1::3我需要做的是通过创建的网络桥docker network create将所有流量路由到公共 IP。此 IP 可以是任何子网。我认为最简单的方法是路由abcd:1:3abcd:1:2。最后调用

dig +short myip.opendns.com @resolver1.opendns.com

来自容器的必须返回相同的值。创建网桥后,可以通过 ip 表修改网桥来实现这一点吗?当前主机系统是 debian。

答案1

我怀疑这是否是最好的方法(也许“监控”应该通过“应用程序”代理请求),但最有可能的是你可以在主机上使用常规的 ip6tables SNAT,就像在 IPv4 中一样:

-A PREROUTING -s abcd:1::3 -j SNAT --to-source abcd:1::2

可以使用它NETMAP来自动化所有地址的 SNAT:

-A PREROUTING -s abcd:1::/80 -j NETMAP --to ::2/::f

相关内容