O endereço IP de saída de dois contêineres Docker IPv6 deve ser o mesmo

O endereço IP de saída de dois contêineres Docker IPv6 deve ser o mesmo

Eu tenho uma sub-rede /64 IPv6 em um servidor. Configurei o docker para usar uma parte /80 padrão dele e tenho um aplicativo que consiste em 2 contêineres dependentes. Esses dois contêineres estão dentro de uma rede abcd:1::/80. Há potencialmente 100 instâncias deste aplicativo em execução.

O problema é que ambos os containers precisam ter o mesmo IP. Pelo menos preciso enganar o aplicativo fazendo-o pensar isso. Eles consistem appe monitoragora appexpõem duas portas. Um dos quais será chamado pelo monitoroutro por fontes externas. monitorse comunica com fontes externas e precisa fazê-lo com o mesmo ip queapp

No momento está configurado da seguinte forma: appusa abcd:1::2e monitorusa abcd:1::3o que preciso fazer é que a ponte de rede que é criada via docker network createroteia todo o tráfego através de um ip comum. Este ip pode ser qualquer uma da sub-rede. Acho que a maneira mais fácil seria rotear abcd:1:3para abcd:1:2. No final ligando

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

dos contêineres deve retornar o mesmo valor. Isso pode ser feito de alguma forma com tabelas IP modificando a ponte após ela ter sido criada? O sistema host atual é o debian.

Responder1

Duvido que esta seja a melhor maneira de fazer isso (talvez 'monitor' deva fazer proxy de solicitações por meio de 'app'), mas provavelmente você pode usar ip6tables SNAT regular no host, como em IPv4:

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

Pode ser possível usar NETMAPpara automatizar o SNAT para todos os endereços:

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

informação relacionada