Ubuntu 20.04: al agregar un puente a través de netplan, la interfaz en puente permanece enrutable y las entradas de enrutamiento se duplican

Ubuntu 20.04: al agregar un puente a través de netplan, la interfaz en puente permanece enrutable y las entradas de enrutamiento se duplican

SO: Ubuntu 20.04.3, todas las últimas actualizaciones instaladas.

Estoy intentando crear una interfaz puente para esclavizar la corriente (eno1)

Configuración de 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

Cuando ejecuto "netplan try", veo:

** (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

Si reinicio el sistema, los resultados son los siguientes:

$ 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

El sistema sigue siendo utilizable, pero la configuración es 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

¿Cómo puedo esclavizar a eno1 y evitar que cree duplicados de entradas de enrutamiento/dirección IP?

Actualización del 21 de enero: no hay otros archivos de configuración en/etc/netplan

Respuesta1

Solución alternativa del 22 de enero de 2022:

Parece que netplan y/o networkd actualmente tienen demasiados errores para admitir la configuración mencionada sin duplicar IP/rutas.

La solución fue volver a NetworkManager.

  1. En .yaml de netplan, asegúrese de reemplazar la línea del renderizador con

    renderer: NetworkManager
    
  2. Asegúrese de habilitar las interfaces de administración de red en /etc/NetworkManager/NetworkManager.conf (la sección afectada se proporciona a continuación)

    [ifupdown]
    managed=true
    
  3. Defina qué tipos de interfaz se filtran en etc/NetworkManager/conf.d/10-globally-managed-devices.conf:

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

    Nota: Asegúrese de que el archivo /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf esté vacío (tamaño cero).

  4. Reinicie NetworkManager, o mejor, reinicie el sistema:

    sudo systemctl restart network-manager
    

    Nota: es posible que sea necesario deshabilitar el inicio automático para la conexión por cable en Configuración>Red, en caso de que se use el modo GUI, para deshabilitar el constante NetworkManager quejándose de no poder activar la conexión correspondiente.

Respuesta2

@KonstantinBoyandin: Simplemente no hay suficiente información sobre su sistema proporcionada aquí para consultarla.cualquierconclusión. Dicho esto, aquí tienes una suposición fundamentada de lo que has encontrado:

IIRC ya utilizará una instalación predeterminada de 20.04 NetworkManager. Esto significa que, listo para usar, NetworkManagerlo más probable es que ya haya configurado eno1y creado la ruta predeterminada que observó:

default         10.20.0.1       0.0.0.0         UG    0      0        0 eno1

No hay nada que le impida intentar utilizar ambosNetworkManager y systemd-networkd- No puedo pensar en unrazónhacer eso, pero no hay nada que lo detenga. He aprovechado esto para evitar tener que lidiar con NetworkManagerla configuración de interfaces de protección de cables en sistemas que ya están en ejecución NetworkManager. Al hacerlo, usteddebeTenga en cuenta que estas herramientas pueden interactuar entre sí; por ejemplo, ¿qué sucede si el adaptador Ethernet físico administrado por NetworkManagerfalla? Una interfaz virtual que depende de esa interfaz física puede fallar, puede que no... depende de la configuración del adaptador virtual.externoa NetworkManager.

Cuando cambiaste el renderizador NetworkManager, en ese momento todo comenzó a funcionar porque ahora estabas usando netplanpara configurarNetworkManager como único servicio de configuración de red, evitando cualquier "configuración cruzada".

Para cualquier otra persona que se encuentre con este problema, hay un par de formas de resolverlo: puede dejar NetworkManagerde configurar las interfaces que desea configurar con un renderizador diferente o simplemente deshabilitarlo NetworkManagerpor completo. Mi preferencia es activar netplany systemd-networkddesactivar NetworkManagerlos servidores, mientras que en Linux de escritorio dejo NetworkManagery aprovecho otros servicios de red solo cuando es necesario.

En un servidor Ubuntu 20.04 típico, aquí se explica cómo usar netplan y evitar el conflicto en el OP:

  1. Servidor de aprovisionamiento (instalar Ubuntu, etc.)
  2. Cree la configuración de netplan deseada
  3. Edite /etc/network/interfacesy comente cualquier sección que se aplique a la interfaz que configuró en netplan:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
  1. Reiniciar (o detener) NetworkManager:sudo systemctl <restart|stop> NetworkManager.service
  2. Pruebe su netplanconfiguración:sudo netplan try
  3. Si todo parece correcto y funciona, presione Entercuando se le indique

(Opcional)

  • Desactivar NetworkManager:sudo systemctl disable NetworkManager.service

(Nota)

  • Si bien debería ser obvio, lo anterior supone que tiene acceso a la consola local o que su conexión SSH no depende de la interfaz que está configurando, ya que podría desconectarse y, por lo tanto, no poder completar la configuración.

información relacionada