サーバーに /64 IPv6 サブネットがあります。そのデフォルトの /80 部分を使用するように docker を構成し、2 つの依存コンテナで構成されるアプリケーションがあります。これらの 2 つのコンテナは abcd:1::/80 ネットワーク内にあります。このアプリケーションのインスタンスが 100 個実行される可能性があります。
問題は、両方のコンテナが同じIPを持つ必要があることです。少なくとも、アプリケーションにそう思わせる必要があります。これらは2つのポートで構成されておりapp
、monitor
現在公開されています。そのうちの1つは、外部ソースによってもう1つによってapp
呼び出されます。外部ソースと通信し、同じIPで通信する必要があります。monitor
monitor
app
現在は次のように構成されています:とをapp
使用します。必要なのは、 を介して作成されたネットワークブリッジが、すべてのトラフィックを共通のIP経由でルーティングすることです。このIPはサブネットのどれでもかまいません。最も簡単な方法はにルーティングすることだと思います。最終的に、abcd:1::2
monitor
abcd:1::3
docker network create
abcd:1:3
abcd:1:2
dig +short myip.opendns.com @resolver1.opendns.com
コンテナからは同じ値を返す必要があります。ブリッジを作成した後に IP テーブルを変更することで、これを何とか実現できますか? 現在のホスト システムは debian です。
答え1
これが最善の方法であるかどうかは疑問ですが (おそらく、「monitor」は「app」を介してリクエストをプロキシする必要があります)、IPv4 の場合と同様に、ホスト上で通常の ip6tables SNAT を使用できる可能性が最も高くなります。
-A PREROUTING -s abcd:1::3 -j SNAT --to-source abcd:1::2
NETMAP
すべてのアドレスに対して SNAT を自動化するためにuse を使用できる可能性があります。
-A PREROUTING -s abcd:1::/80 -j NETMAP --to ::2/::f