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.
En .yaml de netplan, asegúrese de reemplazar la línea del renderizador con
renderer: NetworkManager
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
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).
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, NetworkManager
lo más probable es que ya haya configurado eno1
y 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 NetworkManager
la 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 NetworkManager
falla? 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 netplan
para 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 NetworkManager
de configurar las interfaces que desea configurar con un renderizador diferente o simplemente deshabilitarlo NetworkManager
por completo. Mi preferencia es activar netplan
y systemd-networkd
desactivar NetworkManager
los servidores, mientras que en Linux de escritorio dejo NetworkManager
y 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:
- Servidor de aprovisionamiento (instalar Ubuntu, etc.)
- Cree la configuración de netplan deseada
- Edite
/etc/network/interfaces
y comente cualquier sección que se aplique a la interfaz que configuró ennetplan
:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
- Reiniciar (o detener)
NetworkManager
:sudo systemctl <restart|stop> NetworkManager.service
- Pruebe su
netplan
configuración:sudo netplan try
- Si todo parece correcto y funciona, presione
Enter
cuando 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.