我在伺服器上有一個 /64 IPv6 子網路。我將 docker 配置為使用預設的 /80 部分,並且我有一個由 2 個依賴容器組成的應用程式。這兩個容器位於 abcd:1::/80 網路內。該應用程式可能有 100 個實例在運行。
問題是兩個容器需要有相同的IP。至少我需要欺騙應用程式來思考這一點。它們由兩個連接埠組成app
,並且monitor
現在app
公開兩個連接埠。其中一個將由外部來源呼叫monitor
另一個。monitor
與外部來源通信,並且需要使用與外部來源相同的 IP 進行通信app
現在它的配置如下:app
使用abcd:1::2
和monitor
使用abcd:1::3
我需要做的是透過建立的網橋透過docker network create
公共IP路由所有流量。這個ip可以是任何子網路。我認為最簡單的方法是路由abcd:1:3
到abcd: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