Não há provisão para o tratamento específico de interfaces duplas virtuais type veth
. Então, um pouco de ajustes está em ordem principalmente usando a opção pre-up
. Eu mantive veth0
e veth1
aqui, mas você deve considerar escolher qualquer outro nome (por exemplo, veth-br0
e veth-lanbr0
), porque esses são os nomes padrão escolhidos se não forem fornecidos (por exemplo: ip link add type veth
), e eles podem se chocar.
Para as interfaces veth
:
iface veth0 inet manual
pre-up ip link add veth0 type veth peer name veth1 || :
hwaddress 02:00:00:01:00:00
iface veth1 inet manual
pre-up ip link add veth1 type veth peer name veth0 || :
hwaddress 02:00:00:01:00:01
Isso ativa a interface ao exibir qualquer uma delas. O || :
está aqui para não falhar porque a interface peer já foi configurada pela interface "other". Por favor, note que para o estado interno de ifup
, ambos devem ser trazidos até no final, mesmo se abrir um, fará o outro aparecer. Para o uso pretendido, o hwaddress
é provavelmente opcional e pode, de qualquer maneira, ser definido para qualquer outro valor correto. A bridge pega o endereço MAC da primeira interface escrava.
Agora use-os nas pontes. Não vou colocar toda a sua configuração (porque você realmente não deu), apenas as partes relacionadas a veth
. Você terá que adaptar o que eu não pude adivinhar e onde deixei algum XXXX
ou ...
(por exemplo, é inet XXXX
inet manual
inet static
ou inet dhcp
?)
auto br0
iface br0 inet XXXX
pre-up ifup veth0
bridge_ports eth0 veth0
...
auto lanbr0
iface lanbr0 inet XXXX
pre-up ifup veth1
bridge_ports veth1 eth1
address xx.xx.xx.xx
netmask 255.255.255.0
...
Note que eu coloquei um comando ifup vethX
dentro, porque senão ele vai reclamar que a interface não existia, vai trazer a bridge sem essa interface e considerá-la feita. Eu não tive que usar || :
aqui porque criar uma interface que já é logicamente (significando ifupdown
) não é um erro.
Após concluir as partes ausentes, coloque-as em arquivos de configuração separados (ou não) em /etc/network/interfaces.d
(ou mesmo /etc/network/interfaces
) e isso deve estar funcionando.
Se não funcionou no começo, tente derrubar logicamente todas as interfaces (logicamente, quero dizer usar ifdown
) e tente novamente: isso seria devido a um estado lógico incorreto que impedia que algumas interfaces fossem (re) configuradas corretamente.
Observe também que pode haver interações com outros gerentes de rede, como ... NetworkManager. Provavelmente existem opções para que eles ignorem algumas interfaces, mas isso está fora do escopo desta resposta.