Como conectar 2 pontes virtuais para que o tráfego vá de um para o outro?

0

Sistema Debian, situação atual, configurado via etc / network / interfaces

bridge "br0" possui 2 interfaces físicas de ethernet  eth0 (lado WAN, conectado ao modem / roteador ISP)  eth1 (lado da LAN indo para um comutador físico)

O tráfego entre eth0 e eth1 está passando pelo firewall IPtables e pelo Suricata como um IPS. Esta configuração está funcionando corretamente.

Agora, quero adicionar "pi-hole" a essa configuração por meio de um contêiner do Linux. O container linux precisa de uma bridge virtual para adicionar sua interface ethernet virtual.

Então, quero alcançar o seguinte:

Ponte virtual "br0"     - com eth0 (WAN)

< - >

conectado à ponte virtual "lanbr0"     - com eth1 (LAN)     - com veth0 (interface ethernet virtual para LXC)

Dessa forma, posso adicionar mais interfaces à ponte "lanbr0", se necessário, no futuro.

editar Eu consegui fazer isso através dos seguintes comandos ip link add veth0 tipo veth peer nome veth1

adicionando veth0 a br0 e veth1 a lanbr0 + movendo a eth1 de br0 para lanbr0 depois de trazer todas as interfaces para cima

No entanto, como faço isso via / etc / network / interfaces (para que seja carregado durante a inicialização como este?

    
por WU7 11.08.2018 / 20:26

2 respostas

0

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.

    
por 12.08.2018 / 19:42
0

Para referência, aqui está o script de interfaces completo (adicionando xx para alguns endereços):

# The loopback network interface
auto lo
iface lo inet loopback

# IPv4 address
auto enp8s0
iface enp8s0 inet manual
        offload-gro off
        offload-lro off

auto enp0s31f6
iface enp0s31f6 inet manual

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

# Bridge setup
auto br0
iface br0 inet static
    pre-up ifup veth0
    bridge_ports enp8s0 veth0
    bridge_fd 0
    bridge_maxwait 0
        address 192.168.xx.xx
        broadcast 192.168.xx.xx
        network 192.168.xx.xx
        netmask 255.255.255.0
        gateway 192.168.xx.xx
        dns-nameservers xx.xx.xx.xx xx.xx.xx.xx

auto lanbr0
iface lanbr0 inet manual
    pre-up ifup veth1
    bridge_ports veth1 enp0s31f6

Obrigado novamente A.B

    
por 13.08.2018 / 20:24