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.
No .yaml do netplan, certifique-se de substituir a linha do renderizador por
renderer: NetworkManager
Certifique-se de habilitar interfaces de gerenciamento de rede em /etc/NetworkManager/NetworkManager.conf (a seção afetada fornecida abaixo)
[ifupdown] managed=true
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).
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:
NetworkManager
O IIRC já estará usando uma instalação padrão do 20.04 . Isso significa pronto para uso, NetworkManager
provavelmente já terá configurado eno1
e 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 NetworkManager
a 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 NetworkManager
falhar? 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 netplan
para 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 NetworkManager
de configurar as interfaces que deseja configurar com um renderizador diferente ou simplesmente desativá-las NetworkManager
completamente. Minha preferência é mudar netplan
para systemd-networkd
e desabilitar NetworkManager
nos servidores, enquanto no Linux para desktop eu deixo NetworkManager
e 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:
- Servidor de provisionamento (instalar Ubuntu, etc.)
- Crie a configuração netplan desejada
- Edite
/etc/network/interfaces
e comente todas as seções que se aplicam à interface que você configurounetplan
:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
- Reinicie (ou pare)
NetworkManager
:sudo systemctl <restart|stop> NetworkManager.service
- Teste sua
netplan
configuração:sudo netplan try
- Se tudo parecer correto e estiver funcionando, clique
Enter
conforme 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.