Ubuntu 20.04: ao adicionar ponte via netplan, a interface em ponte permanece roteável, entradas de roteamento duplicadas

Ubuntu 20.04: ao adicionar ponte via netplan, a interface em ponte permanece roteável, entradas de roteamento duplicadas

SO: Ubuntu 20.04.3, todas as atualizações mais recentes instaladas.

Estou tentando criar uma interface bridge, para escravizar corrente (eno1)

Configuração do Netplan:

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd

  ethernets:
    eno1:
      dhcp4: false
      dhcp6: false

  bridges:
    br0:
      interfaces: [eno1]
      addresses: [10.20.0.21/24]
      gateway4: 10.20.0.1
      nameservers:
        search: [example.com]
        addresses: [10.20.0.1,10.20.0.10]
      dhcp4: false
      dhcp6: false

Quando executo "netplan try", vejo:

** (generate:2332): WARNING **: 12:54:41.673: Problem encountered while validatingdefault route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in br0 but also in eno1

Se eu reiniciar o sistema, os resultados serão os seguintes:

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.20.0.1       0.0.0.0         UG    0      0        0 br0
default         10.20.0.1       0.0.0.0         UG    0      0        0 eno1
10.20.0.0        0.0.0.0        255.255.255.0   U     0      0        0 br0
10.20.0.0        0.0.0.0        255.255.255.0   U     0      0        0 eno1

O sistema permanece utilizável, mas a configuração é obviamente anormal.

$ networkctl

networkctl 
IDX LINK TYPE     OPERATIONAL SETUP     
  1 lo   loopback carrier     unmanaged 
  2 eno1 ether    routable    configured
  3 br0  bridge   routable    configured

$ ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.21/24 brd 10.1.0.255 scope global eno1
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.21/24 brd 10.1.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::700e:94ff:fea6:fc98/64 scope link 
       valid_lft forever preferred_lft forever

Como posso tornar o eno1 escravizado e evitar que ele crie duplicatas de entradas de roteamento/endereço IP?

Atualização de 21 de janeiro: Não há outros arquivos de configuração em/etc/netplan

Responder1

Solução alternativa de 22 de janeiro de 2022:

Parece que netplan e/ou networkd estão com muitos bugs para suportar a configuração mencionada sem duplicar IPs/rotas.

A solução foi voltar para o NetworkManager.

  1. No .yaml do netplan, certifique-se de substituir a linha do renderizador por

    renderer: NetworkManager
    
  2. Certifique-se de habilitar interfaces de gerenciamento de rede em /etc/NetworkManager/NetworkManager.conf (a seção afetada fornecida abaixo)

    [ifupdown]
    managed=true
    
  3. Defina quais tipos de interface serão filtrados em etc/NetworkManager/conf.d/10-globally-owned-devices.conf:

    [keyfile]
    
    unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
    

    Nota: Certifique-se de que o arquivo /usr/lib/NetworkManager/conf.d/10-globally-gestion-devices.conf esteja vazio (tamanho zero).

  4. Reinicie o NetworkManager, ou melhor, reinicie o sistema:

    sudo systemctl restart network-manager
    

    Nota: pode ser necessário desabilitar a inicialização automática para conexão com fio em Configurações> Rede, caso o modo GUI seja usado, para desabilitar as constantes reclamações do NetworkManager por não conseguir ativar a conexão correspondente.

Responder2

@KonstantinBoyandin - Simplesmente não há informações suficientes sobre o seu sistema fornecidas aqui para você acessarqualquerconclusão. Dito isto, aqui está um palpite sobre o que você encontrou:

NetworkManagerO IIRC já estará usando uma instalação padrão do 20.04 . Isso significa pronto para uso, NetworkManagerprovavelmente já terá configurado eno1e criado a rota padrão que você observou:

default         10.20.0.1       0.0.0.0         UG    0      0        0 eno1

Não há nada que impeça você de tentar usar ambosNetworkManager e systemd-networkd- Não consigo pensar emrazãofazer isso, mas não há nada que o impeça. Aproveitei isso para evitar ter que lidar com NetworkManagera configuração de interfaces wireguard em sistemas que já estão em execução NetworkManager. Ao fazer isso, vocêdeveesteja ciente de que essas ferramentas podem interagir entre si, por exemplo, o que acontece se o adaptador Ethernet físico gerenciado por NetworkManagerfalhar? Uma interface virtual que depende daquela física pode falhar, ou não... depende da configuração do adaptador virtualexternopara NetworkManager.

Quando você mudou o renderizador para NetworkManager, nesse ponto tudo começou a funcionar porque agora você estava usando netplanpara configurarNetworkManager como o único serviço para configuração de rede, evitando qualquer "configuração cruzada".

Para qualquer pessoa que esteja enfrentando esse problema, existem algumas maneiras de resolvê-lo: você pode parar NetworkManagerde configurar as interfaces que deseja configurar com um renderizador diferente ou simplesmente desativá-las NetworkManagercompletamente. Minha preferência é mudar netplanpara systemd-networkde desabilitar NetworkManagernos servidores, enquanto no Linux para desktop eu deixo NetworkManagere aproveito outros serviços de rede somente quando necessário.

Em um servidor Ubuntu 20.04 típico, veja como usar o netplan e evitar conflitos no OP:

  1. Servidor de provisionamento (instalar Ubuntu, etc.)
  2. Crie a configuração netplan desejada
  3. Edite /etc/network/interfacese comente todas as seções que se aplicam à interface que você configurou netplan:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
  1. Reinicie (ou pare) NetworkManager:sudo systemctl <restart|stop> NetworkManager.service
  2. Teste sua netplanconfiguração:sudo netplan try
  3. Se tudo parecer correto e estiver funcionando, clique Enterconforme solicitado

(Opcional)

  • Desativar NetworkManager:sudo systemctl disable NetworkManager.service

(Observação)

  • Embora deva ser óbvio, o que foi dito acima pressupõe que você tenha acesso ao console local ou que sua conexão SSH não dependa da interface que você está configurando, pois você pode ser desconectado e, portanto, incapaz de concluir a configuração.

informação relacionada