兩個 IPv6 Docker 容器的傳出 IP 位址必須相同

兩個 IPv6 Docker 容器的傳出 IP 位址必須相同

我在伺服器上有一個 /64 IPv6 子網路。我將 docker 配置為使用預設的 /80 部分,並且我有一個由 2 個依賴容器組成的應用程式。這兩個容器位於 abcd:1::/80 網路內。該應用程式可能有 100 個實例在運行。

問題是兩個容器需要有相同的IP。至少我需要欺騙應用程式來思考這一點。它們由兩個連接埠組成app,並且monitor現在app公開兩個連接埠。其中一個將由外部來源呼叫monitor另一個。monitor與外部來源通信,並且需要使用與外部來源相同的 IP 進行通信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

我懷疑這是最好的方法(也許“monitor”應該透過“app”代理請求),但很可能您可以在主機上使用常規 ip6tables SNAT,如 IPv4 中所示:

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

可以使用 useNETMAP來自動執行所有位址的 SNAT:

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

相關內容