La dirección IP saliente de dos contenedores Docker IPv6 debe ser la misma

La dirección IP saliente de dos contenedores Docker IPv6 debe ser la misma

Tengo una subred IPv6 /64 en un servidor. Configuré Docker para usar una parte /80 predeterminada y tengo una aplicación que consta de 2 contenedores dependientes. Esos dos contenedores están dentro de una red abcd:1::/80. Hay potencialmente 100 instancias de esta aplicación ejecutándose.

El problema es que ambos contenedores deben tener la misma IP. Al menos necesito engañar a la aplicación para que piense eso. Consisten appy monitorahora appexponen dos puertos. Uno de los cuales será llamado por monitorel otro por fuentes externas. monitorse comunica con fuentes externas y necesita hacerlo con la misma ip queapp

En este momento está configurado de la siguiente manera: appusos abcd:1::2y monitorusos abcd:1::3lo que necesito hacer es que el puente de red que se crea vía docker network createenrute todo el tráfico a través de una IP común. Esta ip puede ser cualquiera de la subred. Creo que la forma más sencilla sería dirigirse abcd:1:3a abcd:1:2. al final llamando

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

de los contenedores debe devolver el mismo valor. ¿Se puede hacer esto de alguna manera con tablas de ip modificando el puente después de su creación? El sistema anfitrión actual es Debian.

Respuesta1

Dudo que esta sea la mejor manera de hacerlo (tal vez 'monitorear' debería enviar solicitudes de proxy a través de 'aplicación'), pero lo más probable es que puedas usar ip6tables SNAT normal en el host, como en IPv4:

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

Podría ser posible utilizar use NETMAPpara automatizar SNAT para todas las direcciones:

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

información relacionada