Isso pode lançar alguma luz: dispositivo Virtual Ethernet . Pode dar-lhe algo como este : Claro que você não tem alguma configuração em /var/lib/lxc/
with lxc.network.type = veth
?
grep -r 'veth' /var/lib/lxc/
Eu tenho uma ponte configurada entre eth0
e br0
, a bridge funciona bem, mas às vezes, por razões e circunstâncias desconhecidas, eu continuo recebendo essas interfaces off vethXXXXXX adicionadas à bridge. Quando isso acontece, minhas instâncias do LXC não podem falar com a Internet.
Quando executo brctl delif br0 vethNbUtXk && brctl delif br0 vethYqTf0F
, tudo está bem novamente.
Alguma ideia de onde essas interfaces de aparência estranha estão vindo?
root@ubuntuserver:/var/lib/lxc# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.080027ca5f7a no eth0
vethNbUtXk
vethYqTf0F
lxcbr0 8000.000000000000 no
virbr0 8000.000000000000 yes
Exemplo ifconfig quando um desses adaptadores ímpares vethXXXXXX foi criado
vethPBkvAC Link encap:Ethernet HWaddr fe:14:5c:cb:62:d6
inet6 addr: fe80::fc14:5cff:fecb:62d6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3194 errors:0 dropped:0 overruns:0 frame:0
TX packets:3214 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:309019 (309.0 KB) TX bytes:311213 (311.2 KB)
Isso pode lançar alguma luz: dispositivo Virtual Ethernet . Pode dar-lhe algo como este : Claro que você não tem alguma configuração em /var/lib/lxc/
with lxc.network.type = veth
?
grep -r 'veth' /var/lib/lxc/
Para futuros leitores, eu escrevi este e-mail para alguns dos meus colegas que estão trabalhando comigo na configuração do LXC e descobrindo a ponte.
Bom, eu passei a maior parte do dia hoje mexendo com o trabalho em rede no LXC, e agora as coisas estão bem mais claras, então pensei em repassar o que aprendi.
Primeiro, algumas definições, então nós sabemos para o que estamos olhando (eu realmente não entendi a diferença entre uma ponte como br0 ou virbr0 e uma interface como eth0, e eu definitivamente não sabia o que essas interfaces como vethILNaLo
foram para).
Ponte
Uma ponte é mostrada como uma interface no ifconfig, mas uma ponte não faz nada além de conectar 2 outras redes, não é uma interface de rede. Você pode ver e alterar pontes usando brctl show
e configurá-las permanentemente em / etc / networking / interfaces.
Uma ponte é melhor pensada como um interruptor.
Exemplos de pontes que vemos:
Interface de rede
As interfaces são realmente atribuídas a um único host, uma única interface não pode ser atribuída a vários hosts. O host envia e recebe tráfego de rede para uma interface. A interface escolhida depende da tabela de roteamento, route
mostrará isso.
A razão pela qual precisamos de bridging é que a eth0 está fisicamente conectada ao sistema operacional host e também não pode ser conectada a um contêiner ou outra máquina virtual.
Exemplos de interfaces físicas que vemos:
Algumas notas sobre o segundo: vethILNaLo
lxc.network.type=veth
no arquivo de configuração LXC, ele cria outra dessas interfaces físicas e o anexa no contêiner, você pode usar lxc.network.name = eth0
para definir o nome da interface dentro do contêiner (o padrão de eth0, eth1, etc geralmente funciona) Conectando vethILNaLo a uma rede usando uma ponte
Lembre-se de que uma bridge é como um switch baseado em software. Se você conectar duas interfaces, elas serão conectadas da mesma maneira que um switch conecta computadores físicos.
Em /etc/network/interfaces
definimos e criamos br0, basicamente definimos um switch. Nesse mesmo arquivo nós também conectamos eth0 ao nosso “switch” br0:
iface br0 inet static
bridge_ports eth0
No arquivo de configuração do LXC, conectamos a interface física dos containers ao mesmo swtich:
lxc.network.type=veth
lxc.network.link=br0
/etc/network/interfaces
é configurado quando o computador é iniciado (isso faz sentido, a interface eth0 do host deve estar sempre conectada ao nosso "switch"), e o LXC cuida da criação da porta física do nosso contêiner LXC e a conecta nosso "switch" chamado br0 (a diferença entre uma bridge e um switch é muito pequena, então para isso é bom pensar neles como o mesmo, um switch é apenas um pouco mais inteligente que uma bridge).
O que é lxcbr0 e virbr0?
lxcbr0 e virbr0 são adicionados automaticamente pelo LXC, ambos são a mesma coisa (o virbr0 é uma versão mais antiga mantida para compatibilidade com versões anteriores, lxcbr0 é mais recente, mas faz exatamente a mesma coisa). Essas duas pontes (também conhecidas como “switches”) também fornecem recursos de NAT / roteamento. Então, se você conectasse sua máquina virtual a essas pontes, seria como conectá-la a um roteador.
Como não precisamos de outro roteador (todos os nossos contêineres LXC terão seu próprio IP na rede), removi as duas pontes não usadas do sistema operacional host no documento de compilação
Tags networking lxc ubuntu bridge