2つのIPv6 Dockerコンテナの送信IPアドレスは同じである必要があります

2つのIPv6 Dockerコンテナの送信IPアドレスは同じである必要があります

サーバーに /64 IPv6 サブネットがあります。そのデフォルトの /80 部分を使用するように docker を構成し、2 つの依存コンテナで構成されるアプリケーションがあります。これらの 2 つのコンテナは abcd:1::/80 ネットワーク内にあります。このアプリケーションのインスタンスが 100 個実行される可能性があります。

問題は、両方のコンテナが同じIPを持つ必要があることです。少なくとも、アプリケーションにそう思わせる必要があります。これらは2つのポートで構成されておりappmonitor現在公開されています。そのうちの1つは、外部ソースによってもう1つによってapp呼び出されます。外部ソースと通信し、同じIPで通信する必要があります。monitormonitorapp

現在は次のように構成されています:とをapp使用します。必要なのは、 を介して作成されたネットワークブリッジが、すべてのトラフィックを共通のIP経由でルーティングすることです。このIPはサブネットのどれでもかまいません。最も簡単な方法はにルーティングすることだと思います。最終的に、abcd:1::2monitorabcd:1::3docker network createabcd:1:3abcd: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

関連情報