Netplan não se aplica na inicialização

12

Instalei o Ubuntu 17.10 com as atualizações mais recentes em uma máquina virtual vmware. O Netplan não configura minhas 2 ethernet.

Aqui está o meu /etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    lan:
      match:
        macaddress: 00:12:34:a8:29:e8
      set-name: lan
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 10.10.0.48/24
        - 1701:5740:5000:3301::48/64

    failover:
      match:
        macaddress: 00:45:57:89:27:e8
      set-name: failover
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 17.25.111.30/27
        - 1701:5740:5000:3300::30/64
      gateway4: 17.25.111.1
      gateway6: 1701:5740:5000:3300::1

      nameservers:
        search:
          - example.at
          - intern.example.at
        addresses:
          - 10.10.0.1
          - 1701:5740::66

Voltei a dispositivos previsíveis como eth0 e, após a inicialização, todos os dispositivos são nomeados corretamente, mas não configurados.

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: lan: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:12:34:a8:29:e8 brd ff:ff:ff:ff:ff:ff
3: failover: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:45:57:89:27:e8 brd ff:ff:ff:ff:ff:ff

Após o login e a ativação do systemctl, reinicie os dispositivos systemd-networkd que estão configurados. O netplan apply também faz o trabalho.

Eu brinquei tanto com o systemd-networkd.service e systemd-networkd.timer, mas nada ajudou.

É muito frustrante configurar a rede manualmente após cada reinicialização. Alguém sabe como resolver isso?

Thomas Aichinger
fonte
2
No momento da inicialização, qual é o conteúdo de / run / systemd / network e / run / systemd / netif?
slangasek
Agora isso deve ser corrigido no Bionic com o netplan 0.36.3. Você poderia testá-lo e nos informar?
Dj 19/07/19
2
Eu uso 18.04 e estou enfrentando o mesmo problema. Você tem alguma solução ?
Gtzinos

Respostas:

3

Eu acho que você atingiu o LP: # 1770082 - "systemd-networkd não renomeando dispositivos na inicialização".

Basicamente, quando o sistema estiver inicializando, o dispositivo de rede será exibido como eth0/ eth1etc. A ordem não é previsível; portanto, o udev renomeia os dispositivos para coisas como ens3ou enp2s0na fase inicial da inicialização. (Você poderá ver isso cumprimentando a saída de dmesg.)

Você tem uma set-nameestrofe em seu YAML do netplan. Posteriormente na inicialização, isso set-namegera uma regra de renomeação em um arquivo de link systemd , que é lido pelo udev. No entanto, um arquivo de link não fará com que um dispositivo seja renomeado se já tiver sido renomeado. No seu caso, o dispositivo não será renomeado porque provavelmente foi renomeado anteriormente no initrd.

Abri um bug no systemd ( problema # 9006 - "udev: nome da interface no arquivo de link não aplicado") sobre isso. Também propus uma alteração ao netplan ( PR # 31 - "Gerar arquivos de regras do udev para renomear dispositivos") que fará com que um arquivo de regras do systemd seja criado, bem como um arquivo de link, pois um arquivo de regras é respeitado mesmo se o dispositivo tiver já foi renomeado.

Como solução alternativa, tente inicializar com net.ifnames=0na linha de comando do kernel. Para uma solução de longo prazo, espero que minha alteração no netplan seja portada para a Bionic e lançada no próximo mês.

dja
fonte
Isto agora é fixo com NetPlan 0.36.3
dja
Isso resolveu o problema para mim no Ubuntu 18.04.1 atualizado, incluindo atualizações de backports propostas e segurança em 17/09/2018. Desativei as set-namediretivas por enquanto, não tentei o net.ifnames=0cmdline do kernel. Com set-name, os dispositivos foram renomeados, mas não apresentados.
precisa saber é o seguinte
2

Eu tenho exatamente o mesmo problema no Ubuntu 18.04, mas a solução de R. Pietsch não resolve :(

sudo crontab -e
@reboot /usr/sbin/netplan apply

Eu também tentei habilitar o usuário root, que está desabilitado por padrão no Ubuntu, mas sem sorte.

A única maneira de obter conectividade é:

  1. faça login na máquina usando seu próprio teclado;
  2. digite "sudo netplan apply";
  3. finalmente sou capaz de fazer o SSH na máquina.

Se eu não "sudo netplan apply", não tenho conexão com a máquina. Como é possível colocar em uma versão LTS uma peça de software tão quebrada?

Gostaria de acrescentar mais detalhes sobre o meu cenário, para que outras pessoas sejam úteis para reconhecer os fenômenos sobre os quais estamos falando. Isto é o que estava acontecendo no meu caso:

  • Eu instalei o Ubuntu 18.04 no meu Intel NUC usando o netinstall;
  • Eu configurei o arquivo YAML do netplan para obter um endereço IP estático quando conectado sem fio;
  • Eu o apliquei com "sudo netplan apply";
  • Eu reiniciei meu NUC;
  • Lancei um "ping-t" na minha máquina Windows;
  • Uma vez reiniciado, o NUC mostrou o prompt de login do LXDE;
  • Nesse ponto, o NUC estava inacessível de acordo com o ping;
  • Eu entrei, digitei "sudo netplan apply" e depois de alguns segundos, ele se tornou acessível.

Acho que o netplan é uma boa melhoria em comparação com o / etc / network / interfaces, mas esse comportamento deve ser corrigido o mais rápido possível :)

ATUALIZAR:

Eu depurei o problema usando os seguintes comandos:

$ journalctl --no-pager -lu systemd-networkd
$ networkctl

Parece que o painel do Network Manager no LXDE estava interferindo nele. Mesmo se as conexões foram exibidas como "não gerenciadas", desmarquei a opção "Ativar rede" e parece que isso corrigiu o problema.

Podemos fechar este :)

numbworks
fonte
2

Agora eu tentei com o Ubuntu 18.04 e acho que esse bug foi corrigido.
Trabalha para mim agora.

Thomas Aichinger
fonte
Deve ser corrigido com o netplan 0.36.3
dja 26/07/18
1
Não, eu entendi hoje #
Dario Fumagalli
e ... a partir de hoje, tenho um servidor Ubuntu 18.04 novo e atualizado e isso ainda acontece!
Dario Fumagalli
0

Corrigi esse problema inserindo

@reboot /usr/sbin/netplan apply

no crontab da raiz. Não é a solução real para o problema, mas uma solução alternativa que o corrigiu.

R. Pietsch
fonte
0

Com o ubuntu 18.04, o netplan também era bastante novo para mim, segui um guia para criar o /etc/netplan/01-netcfg.yamlarquivo e executar sudo netplan applye, como você, em qualquer reinicialização, a conectividade desapareceu.

A execução manual sudo netplan applyfez com que funcionasse novamente. Mas isso foi chato.

No meu caso, a solução foi editar /etc/network/interfacese comentar todas as sub-rotinas enp0 ** (verifique como elas são chamadas no seu sistema).

Então reinicie.

Basicamente, a configuração antiga em / etc / nwtwork / interfaces estava em conflito com o netplan.

firepol
fonte
Isso não responde à pergunta que está sendo feita.
Thomas Ward
0

Eu tive um problema em que precisava reativar os eventos. Essencialmente, o netplan fez tudo corretamente, mas o networkd o ignorou. A substituição dos dispositivos como "netplan apply" resolveria isso.

Portanto, para alguns, a solução pode ser:

$ echo virtio0 | sudo tee /sys/bus/virtio/drivers/virtio_net/virtio0/driver/unbind
$ echo virtio0 | sudo tee /sys/bus/virtio/drivers/virtio_net/bind
(or other devices / drivers in your case)

Talvez isso ajude alguns a procurar esse problema.

Como eu acho que esse é realmente um bug, eu arquivei esse bug .

Christian Ehrhardt
fonte
0

Ok, melhor resposta que eu corrigi, volte para ifupdown até que o netplan seja corrigido. sudo apt install ifupdown e configure a interface sudo nano / etc / network / interfaces

auto enp3s0 iface enp3s0 endereço estático inet 192.168.1.100 máscara de rede 255.255.255.0 rede 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.0,8.8.8.8

e quem implementou isso em uma versão do servidor LTS obviamente não o testou

steve rider
fonte
0

Como esse é um problema contínuo, tenho outra abordagem para resolver esse problema:

Crie um timer do sistema e aplique as configurações de rede após a inicialização.

Aqui está o script: check_network. Você precisa substituir a interface ens32 pela sua.

#!/bin/bash
#
CMD="$(ip address | egrep -c "^[\s\t]*inet .* ens32$")"
if [ ${CMD} -eq "0" ]
then
   echo "check network not configured, configuring now..." | systemd-cat -p info
   netplan apply
else
   echo "check network ok" | systemd-cat -p info
fi

Esta é a unidade de serviço check_network.service

[Unit]
Description=check if netplan configured network

[Service]
ExecStart=/root/jobs/check_network

[Install]
WantedBy=multi-user.target

E este é o timer do sistema check_network.timer chamado 30 segundos após a inicialização e, a cada hora

[Unit]
Description=check_network timer

[Timer]
OnBootSec=30s
OnUnitActiveSec=3600s
Persistent=true
Unit=check_network.service

[Install]
WantedBy=timers.target

Copie o check_network para / root / jobs

Copie o check_network.service para / etc / systemd / system

Copie o check_network.timer para / etc / systemd / system

E, em seguida, habilite o serviço e o timer

systemctl enable check_network.service
systemctl enable check_network.timer
Thomas Aichinger
fonte
0

netplan user on 18.04.1 Suponha que a configuração do netplan seja lida na reinicialização do networkd - isso por si só foi um pouco problemático, porque existem 10 serviços de rede diferentes que o systemctl conhece. Nenhum deles trouxe o resultado desejado, então recorri à reinicialização de toda a máquina. Para nenhum proveito. Eventualmente, descobri que o 'netplan apply' ajuda aqui não apenas na aplicação, mas também na indicação de falhas de sintaxe. Então, após a mudança, parece que você precisa aplicar o netplan e pronto. Isso não é descrito no manual, a menos que eu tenha perdido, então eu incluo isso aqui para outros pequenos vermes pobres como eu.

Hans Kloss 23rd
fonte