Tengo una computadora portátil con Ubuntu 14 Desktop. El portátil tiene conexión WLAN a mi LAN y es administrado por el administrador de red . De hecho, el portátil también es agradable (eth0), pero no está conectado. Yo uso esta computadora portátil como un host LXC. Tengo varios contenedores que sirven aplicaciones. Con la configuración básica de LXC (configuraciones predeterminadas como el uso de dnsmasq, red puenteada).
La salida de ifconfig
muestra 4 interfaces: eth0
, lo
, wlan
y lxcbr0
. Hasta ahora, todavía no se ha realizado una configuración especial de iptables. Es un sistema nuevo instalado
Ahora, configurando NAT en mi host LXC ...
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 21404 -j DNAT --to 10.0.3.180:3142
... Puedo acceder a servicios en mis contenedores, cuando accedo desde otra máquina en mi LAN, por ejemplo:
foo@LANMachine2: wget -O - http://lxc-host:21404 #it works
Sugerencia: lxc-host
es un nombre DNS para la computadora portátil administrada por mi enrutador.
Ahora, lo que quiero hacer es permanecer en mi máquina y acceder al servicio de un contenedor desde el propio host LXC y otros contenedores alojados que usan el mismo nombre DNS, así:
bar@lxc-host: wget -O - http://lxc-host:21404
#or
bar@lxc-container: wget -O - http://lxc-host:21404
#both not working and leading to output:
Connecting to lxc-host (lxc-host)|The.IP.shown.here|:21404... failed: Connection refused.
¿Cómo hacer que esto funcione? ¿Es posible, en absoluto? Lo más importante para mí sería poder conectarme desde otros contenedores a los servicios de otros contenedores enrutando a través del host LXC. (Esto me permitiría estandarizar la configuración de mis contenedores)
Respuestas:
Los paquetes del mismo host nunca llegan a la tabla PREROUTING (o cualquier otra tabla nat), ya que no se enrutan de una interfaz a otra.
Para la red de contenedor a contenedor, puede usar un puente compartido (que no necesita ser el mismo que el que comparten con el host) o realmente usar el enrutamiento y la tabla iptables de PREROUTING, si están en diferentes interfaces.
fuente