Estoy enfrentando algunos problemas al intentar conectar directamente los contenedores docker a la red del host.
La configuración es la siguiente: Un host tiene una interfaz (eth0) en la subred, por ejemplo, 10.0.15.0/24. La IP en eth0 es 10.0.15.5/24. Personalicé el puente docker0 para usar una subred dentro de la subred disponible desde eth0, a saber, 10.0.15.64/26. Entonces, Docker puede usar direcciones IP de este /26 para dar a los contenedores, y quiero que se pueda acceder directamente a los contenedores desde el resto de la red. El puente docker también tiene un conjunto de IP, a saber, 10.0.15.65/26.
Cuando se crea un contenedor, obtiene una IP, digamos 10.0.15.66/26. Ahora, hice algunas pruebas con ping:
El reenvío de IP está activado
[root@HOSTNAME~]# cat /proc/sys/net/ipv4/ip_forward 1¿Que me estoy perdiendo aqui? Los contenedores conectados al puente docker0 deberían ser accesibles desde la red, creo.
Comportamiento esperado Se debe poder hacer ping a los contenedores desde cualquier lugar de la red, al igual que el puente docker0, etc.
¡Cualquier idea o ayuda sería muy apreciada!
Finalmente descubrí por qué no funcionaba para nosotros. La máquina en la que estaba ejecutando el contenedor docker era una máquina virtual en un hipervisor. El hipervisor solo acepta una dirección MAC de la NIC adjunta a la máquina virtual. En otras palabras, la NIC de la máquina virtual no se configuró en modo promiscuo.
Lo que hice para solucionar este problema fue simplemente usar una máquina completa. Otra solución sería configurar manualmente la NIC en modo promiscuo, de modo que acepte todos los paquetes, en lugar de solo los paquetes para su propia MAC.