¿Cómo configuro un invitado LXC para que obtenga una dirección dhcp y pueda acceder a ella en mi red?

15

Configuré LXC usando:

lxc-create -t ubuntu -n lxcguest1

Pero no puedo acceder a ningún servicio que se ejecute desde mi LAN, parece ser NAT. ¿Cómo lo configuro para poder acceder (probablemente necesite obtener su dirección dhcp de mi enrutador Linksys)?

Gracias.

Benjamin Bryan
fuente
Posible duplicado de askubuntu.com/questions/256304/…
desde el

Respuestas:

5

Acabo de resolver este problema yo mismo. Básicamente, necesita configurar un puente y vincular su tarjeta de red y contenedor. Aquí está el artículo que seguí:

http://bj0z.wordpress.com/2011/08/19/howto-build-a-base-lxc-container-in-ubuntu-11-04/

Suena como si fuera yo, necesita la solución 'puente' en lugar de la solución NAT. También apagué la configuración predeterminada del puente LXC (que tiene NAT). Para ello acaba de editar el archivo: /etc/default/lxcy el cambio USE_LXC_BRIDGE="TRUE"a USE_LXC_BRIDGE="FALSE"y reiniciar el sistema.

usuario108168
fuente
1
Estoy un poco confundido con esta solución: dice que necesita configurar un puente, luego dice que la solución es desactivar la configuración predeterminada del puente. Seguramente debe encender una configuración de puente. La segunda cosa con la que necesito ayuda es que el Usuario dice que la configuración del puente es NAT, seguramente está puenteada (por lo que los contenedores están en la misma red que el host) o NAT (en una red diferente y requiere enrutamiento). Tengo entendido que estos son mutuamente excluyentes?
John Little
1
Todo esto no es válido ahora con las versiones actuales. / etc / default / lx * se ha ido por completo.
spyderdyne
5

Mi configuración en los hosts Ubuntu 14.04.1 LTS (Trusty Tahr)

Agregar a /etc/network/interfacesen el host

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 0.0.0.0

auto br0
iface br0 inet dhcp
    bridge_ports eth0

(reiniciar después de los cambios)

Y en los archivos de configuración del contenedor ( /var/lib/lxc/containername/config) configurélxc.network.link = br0

Con esto, el contenedor obtendrá direcciones IP públicas del servidor dhcp al igual que el host.

Epeli
fuente
@JonathanY. El br0 debería aparecer después de agregarlo a / etc / network / interfaces como se indica en la respuesta. Es posible que necesite reiniciar.
Epeli
3
Gracias. Lo que me faltaba era la necesidad de agregarlo <username> veth br0 2 para /etc/lxc/lxc-usernetpoder usarlo br0con contenedores sin privilegios.
Jonathan Y.
2

Utilicé la configuración predeterminada de Ubuntu LXC y configuré mi enrutador para enviar todo el tráfico en 10.0.3.xxx a la máquina Ubuntu. En un enrutador habilitado para DD-WRT, la configuración se parece a la siguiente captura de pantalla. Reemplace 192.168.1.137con la IP de la máquina que ejecuta LXC. Otros enrutadores deben tener opciones similares para configurar una ruta estática (aquí hay instrucciones de ruta estática para Linksys , por ejemplo).

Configuración DD-WRT para enrutamiento estático a LXC

Esto no está relacionado, pero también utilicé el servicio DNSMasq para apuntar un nombre de host a la dirección IP del contenedor LXC. De esta manera puedo acceder al contenedor en http://gitlab/cualquier lugar de la red. En mi opinión, es mucho más fácil usar un nombre de host para acceder a un contenedor que recordar la dirección IP.

Configuración DD-WRT DNSMasq

Thirdender
fuente
1
Buen enfoque, inténtalo. ¡Pulgares hacia arriba! Agregar rutas estáticas funciona, ¡y el enrutador mismo puede hacer ping a las máquinas en contenedores! Pero con muchos enrutadores suministrados por el ISP, el reenvío de puertos no funcionará debido a: Error code: 4937 The IP address is not in the same subnet with LAN IP address. Please input another one. (el enrutador contiene la subred 192.168.xx, mientras que LXD / LXC están en la subred 10.0.xx)
stamster
1
Sí, su enrutador deberá aceptar una máscara de subred para que mi solución funcione. Me gusta comprar un enrutador y agregar un firmware de mercado secundario para hacer posibles configuraciones locas :-p
thirdender
1
Estoy usando MikroTik tanto en casa como en la oficina, pero esto fue para una configuración donde tenían un enrutador simple suministrado por ISP. Entonces, su idea es muy simple pero muy efectiva: el principio KISS :) Me gusta y lo usaré con seguridad ya que no puedo entender cómo esos contenedores aún no tienen una solución para exponerlos al mundo externo.
stamster