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 app
y monitor
ahora app
exponen dos puertos. Uno de los cuales será llamado por monitor
el otro por fuentes externas. monitor
se comunica con fuentes externas y necesita hacerlo con la misma ip queapp
En este momento está configurado de la siguiente manera: app
usos abcd:1::2
y monitor
usos abcd:1::3
lo que necesito hacer es que el puente de red que se crea vía docker network create
enrute 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:3
a 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 NETMAP
para automatizar SNAT para todas las direcciones:
-A PREROUTING -s abcd:1::/80 -j NETMAP --to ::2/::f