Die ausgehende IP-Adresse zweier IPv6-Docker-Container muss identisch sein

Die ausgehende IP-Adresse zweier IPv6-Docker-Container muss identisch sein

Ich habe ein /64 IPv6-Subnetz auf einem Server. Ich habe Docker so konfiguriert, dass es einen standardmäßigen /80-Teil davon verwendet, und ich habe eine Anwendung, die aus 2 abhängigen Containern besteht. Diese beiden Container befinden sich in einem abcd:1::/80-Netzwerk. Es werden möglicherweise 100 Instanzen dieser Anwendung ausgeführt.

Das Problem ist, dass beide Container die gleiche IP haben müssen. Zumindest muss ich die Anwendung dazu bringen, das zu glauben. Sie bestehen aus zwei Ports appund stellen monitordiese derzeit appzur Verfügung. Einer davon wird monitorvon externen Quellen vom anderen aufgerufen. monitorkommuniziert mit externen Quellen und muss dies mit der gleichen IP tun wieapp

Im Moment ist es wie folgt konfiguriert: appverwendet abcd:1::2und monitorverwendet. abcd:1::3Was ich tun muss, ist, dass die Netzwerkbrücke, die über erstellt wird, den docker network creategesamten Datenverkehr über eine gemeinsame IP-Adresse leitet. Diese IP-Adresse kann eine beliebige des Subnetzes sein. Ich denke, der einfachste Weg wäre, zu zu routen abcd:1:3. abcd:1:2Am Ende ruft man

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

aus den Containern müssen den gleichen Wert zurückgeben. Kann dies irgendwie mit IP-Tabellen erreicht werden, indem die Brücke nach ihrer Erstellung geändert wird? Das aktuelle Hostsystem ist Debian.

Antwort1

Ich bezweifle, dass dies die beste Möglichkeit ist (vielleicht sollte „Monitor“ Anfragen stattdessen über „App“ weiterleiten), aber höchstwahrscheinlich können Sie auf dem Host reguläres ip6tables SNAT verwenden, wie bei IPv4:

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

Möglicherweise lässt sich NETMAPSNAT für alle Adressen automatisieren:

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

verwandte Informationen