Como configuro um convidado LXC para que ele obtenha um endereço dhcp para que eu possa acessá-lo na minha rede?

15

Eu configurei o LXC usando:

lxc-create -t ubuntu -n lxcguest1

Mas não consigo acessar nenhum serviço em execução na minha LAN, parece ter NAT. Como faço para configurá-lo para que eu possa acessá-lo (provavelmente precisará obter o endereço dhcp do meu roteador Linksys)?

Obrigado.

Benjamin Bryan
fonte
Possível duplicata de askubuntu.com/questions/256304/…
bekce

Respostas:

5

Acabei de lidar com esse problema. Basicamente, você precisa configurar uma ponte e vincular sua placa de rede e contêiner a ela. Aqui está o artigo que segui:

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

Parece que, como eu, você precisa da solução 'bridge' em vez da solução NAT. Também desliguei a configuração da ponte LXC padrão (que é NAT). Para fazer isso, edite o arquivo: /etc/default/lxce mude USE_LXC_BRIDGE="TRUE"para USE_LXC_BRIDGE="FALSE"e reinicie.

user108168
fonte
11
Estou um pouco confuso com esta solução: diz que ele precisa configurar uma ponte e depois diz que a solução é desativar a configuração padrão da ponte. Certamente ele deve ativar uma configuração de ponte. A segunda coisa com a qual preciso de ajuda é que o Usuário diz que a configuração da ponte é NAT, certamente é feita uma ponte (para que os contêineres estejam na mesma rede que o host) ou seja NAT (em uma rede diferente e requer roteamento). Meu entendimento é que estes são mutuamente exclusivos?
John pouco
11
Isso tudo é inválido agora com as versões atuais. / etc / default / lx * desapareceu completamente.
Spyderdyne
5

Minha configuração nos hosts Ubuntu 14.04.1 LTS (Trusty Tahr)

Adicionar ao /etc/network/interfaceshost

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

(reinicie após alterações)

E nos arquivos de configuração do contêiner ( /var/lib/lxc/containername/config) eu definolxc.network.link = br0

Com isso, o contêiner obterá endereços IP públicos do servidor dhcp, assim como o host.

Epeli
fonte
@JonathanY. O br0 deve aparecer após adicioná-lo ao / etc / network / interfaces conforme indicado na resposta. Você pode precisar de uma reinicialização.
Epeli
3
Obrigado. O que faltava era a necessidade de adicionar <username> veth br0 2 a /etc/lxc/lxc-usernetpara usar br0com recipientes sem privilégios.
Jonathan Y.
2

Usei as configurações padrão do Ubuntu LXC e configurei meu roteador para enviar todo o tráfego no 10.0.3.xxx para a máquina Ubuntu. Em um roteador habilitado para DD-WRT, as configurações são semelhantes à captura de tela abaixo. Substitua 192.168.1.137pelo IP da máquina executando o LXC. Outros roteadores devem ter opções semelhantes para configurar uma rota estática (aqui estão as instruções de rota estática para a Linksys , por exemplo).

Configurações de DD-WRT para roteamento estático para LXC

Isso não tem relação, mas eu também usei o serviço DNSMasq para apontar um nome de host para o endereço IP do contêiner LXC. Dessa forma, eu posso acessar o contêiner em http://gitlab/qualquer lugar da rede. Na minha opinião, é muito mais fácil usar um nome de host para acessar um contêiner do que lembrar o endereço IP.

Configurações de DNS-Masq DD-WRT

terceiro
fonte
11
Boa abordagem - tente. Afirmativo! Adicionar rota estática funciona - e o próprio roteador pode executar ping em máquinas em contêineres! Mas com muitos encaminhamento de porta ISP fornecido roteadores não irá funcionar devido a: Error code: 4937 The IP address is not in the same subnet with LAN IP address. Please input another one. (router detém 192.168 sub-rede, enquanto LXD / LXC estão em 10.0.xx sub-rede)
stamster
11
Sim, seu roteador precisará aceitar uma máscara de sub-rede para que minha solução funcione. Eu gosto de comprar um roteador e adicione um firmware after-market para fazer configurações loucos possível :-P
thirdender
11
Estou usando o MikroTik em casa e no escritório, mas isso foi para uma instalação em que o roteador era fornecido pelo ISP. Portanto, sua ideia é muito simples, mas muito eficaz - princípio do KISS :) Gosto e usarei com certeza, pois não consigo entender como esses contêineres ainda não têm uma solução para expô-los ao mundo externo.
Stamster