NOTA: O cliente LXC no computador é capaz de usar instâncias remotas do LXC. Qualquer coisa entre colchetes
[ ]
nas informações de uso aqui deve ser ignorada, pois explicarei o que fazer ao lado dela. Eu também uso os comandoslaunch
fornecidos pela pergunta do OP, mas você pode usar qualquer imagem do sistema operacional para iniciar o que quiser.
Em vez de usar brctl
diretamente e depois mexer com configurações de contêiner individuais, considere usar lxc network create
para fazer isso e deixar o LXD gerenciar essas pontes. Isso torna a criação de pontes realmente fácil e não nos dá dores de cabeça. (Isso é o que eu faço em vários ambientes LXD).
A partir do uso:
lxc network create [<remote>:]<network> [key=value...]
Create a network.
Efetivamente, basta fazer lxc network create lxcbr1
ou o que você quiser nomear.
O problema é que você tem que especificar isso em algum lugar. Eu pessoalmente uso perfis de configuração para isso, especialmente se eu tiver que me ligar a várias pontes.
Agora, normalmente eu tenho perfis individuais para pontes individuais, e não coloquei dois na mesma caixa, mas no seu caso você terá duas definições de ponte LXD. Então, vamos precisar criar um perfil de configuração para eles.
Se você precisar de várias pontes no contêiner ao mesmo tempo ...
Comece copiando o default
config para um multibridge
config:
lxc profile copy default multibridge
Depois disso, precisamos editar o novo arquivo multibridge, para que ele tenha vários dispositivos de rede.
lxc profile edit multibridge
Você verá algo assim no arquivo:
devices:
eth0:
nictype: bridged
parent: lxdbr0
type: nic
Crie uma nova linha em branco depois da linha type
e adicione linhas para que fique assim:
devices:
eth0:
nictype: bridged
parent: lxdbr0
type: nic
eth1:
nictype: bridged
parent: testing
type: nic
Não edite mais nada no arquivo e salve-o.
Agora, precisamos dizer ao LXD para criar um novo contêiner, mas usar o perfil multibridge
:
lxc launch images:centos/7/amd64 MyCentos -p multibridge
Isso dirá ao LXD para usar o perfil multibridge
que acabamos de configurar como o perfil de configuração para o novo contêiner, e deve usar lxdbr0
e lxdbr1
on eth0
e eth1
respectivamente dentro do recipiente.
Uma advertência principal: O sistema não é inteligente e não configura eth1
corretamente. Como tal, você precisa entrar em seu sistema CentOS e configurar a configuração para eth1
, para configurá-lo para DHCP ou IPs estáticos dentro dos intervalos de IPs do lxdbr1
config. Caso contrário, essa interface nunca será criada. Como esta configuração irá variar de SO para SO, não posso dar uma resposta clara aqui sobre como configurar cada interface de rede em cada imagem. Há outros recursos disponíveis para isso.
Se você precisa apenas da nova ponte e de não várias pontes em um contêiner de cada vez ...
Então precisamos criar um perfil para isso especificamente.
lxc profile copy default lxdbr1
... E edite esse novo perfil.
lxc profile edit lxdbr1
... e uma vez lá, encontre onde lxdbr0
está especificado e mude para lxdbr1
.
E, como acima, inicie o seu contêiner LXD e especifique o perfil lxdbr1
para ele.
lxc launch images:centos/7/amd64 MyCentos -p lxdbr1
Você não precisará fazer nenhuma configuração especializada para a interface de rede, pois o padrão é definir a primeira interface para o DHCP e a autoconfiguração correta.
Apenas algumas notas de pós-configuração agora:
Você também pode revisar todos os elementos de rede individuais se conhecer as configurações para inserir editando a configuração de rede lxdbr1
sem usar brctl
e apenas chamar lxc network edit lxdbr1
e adicionar as configurações individuais. Isso permite que lxd
realmente manipule tudo e não faça com que você tenha que configurar manualmente a ponte com brctl
(e permite que o LXD gerencie a ponte).
Você pode querer configurar a rede similar a abaixo, o que desativa o NAT automático e faz com que você configure como os dados fluem para a Internet manualmente para sua segunda ponte (você pode fazer alterações na configuração da ponte via lxc network edit lxdbr1
se você quisesse usar lxdbr1
como nome. Observe o uso de ipv4.nat: "false"
aqui, que desativa a regra iptables
' MASQUERADE
que faz com que pareça que o próprio sistema está alcançando a saída:
config:
ipv4.address: 10.75.251.1/24
ipv4.dhcp: "true"
ipv4.dhcp.ranges: 10.75.251.200-10.75.251.250
ipv4.nat: "false"
Também há comandos equivalentes ao IPv6, mas o IPv4 é mais fácil de trabalhar, então omito isso aqui. Feito isso, você precisa reinicializar os contêineres. Especialmente desde que definimos tudo para dhcp
.