Ubuntu 18.04: retorne para / etc / network / interfaces

44

Começando por volta Ubuntu 18.04, os devs Ubuntu parou de usar o clássico /etc/init.d/networkinge /etc/network/interfacesmétodo de configurar a rede e ligado a alguma coisa chamada netplan. Isso deixou muita gente com muita raiva e foi amplamente considerada uma péssima jogada. É possível remover netplane usar o /etc/network/interfacesmétodo correto para configurar a rede?

jdgregson
fonte
2
Por que não apenas configurar com o netplan? Na maioria das situações, é bem direto.
Chili555
3
@ chili555 Pode ser que eu apenas tenha que aceitar a mudança e aprender algo novo. Gostaria apenas de saber se é trivial voltar ao modo como deveria ser. Bem parecido systemd, eu entendo que mudanças disruptivas às vezes podem ser benéficas e serem adotadas. No entanto, esse certamente não é um daqueles momentos em que a mudança foi necessária ou benéfica.
jdgregson
1
Não é trivial e não é facilmente reversível em caso de erro. Se você gostaria de viver perigosamente, ficarei feliz em propor uma resposta. Por outro lado, podemos configurar o netplan em alguns minutos. Qual você prefere? PS - Não pretendo entender completamente como o netplan, com exclusão de /etc/network/interfaces, se encaixa no quadro geral do sistema. Tudo o que posso fazer é confiar que aqueles que introduziram a mudança sabem por que ela se encaixa melhor.
Chili555
1
Ou, apenas configure corretamente o netplan e pronto.
Chili555
1
@ chili555 O Netplan não suporta interfaces de rede virtual. Veja aqui: askubuntu.com/questions/990825/virtual-interface-in-netplan
user3751385

Respostas:

43

O procedimento a seguir funciona no Ubuntu 18.04 (Bionic Beaver)

I. Reinstale o pacote ifupdown :

# apt-get update
# apt-get install ifupdown

II Configure seu arquivo / etc / network / interfaces com sub-rotinas de configuração, como:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
  address 192.168.1.133
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  # Only relevant if you make use of RESOLVCONF(8)
  # or similar...
  dns-nameservers 1.1.1.1 1.0.0.1

III Torne a configuração eficaz (não é necessário reiniciar):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking

IV Desative e remova os serviços indesejados:

# systemctl stop systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl disable systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl mask systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# apt-get --assume-yes purge nplan netplan.io

Então, você está pronto.

Nota: Obviamente, você DEVE adaptar os valores de acordo com o seu sistema (rede, nome da interface ...).

V. Resolvedor de DNS

Como o Ubuntu Bionic Beaver (18.04) utiliza o resolvedor de stub DNS fornecido pelo SYSTEMD-RESOLVED.SERVICE (8), você também deve adicionar o DNS a ser contatado no arquivo /etc/systemd/resolved.conf. Por exemplo:

....
DNS=1.1.1.1 1.0.0.1
....

e, em seguida, reinicie o serviço resolvido pelo systemd uma vez feito:

# systemctl restart systemd-resolved

As entradas DNS no arquivo ifupdown INTERFACES (5), conforme mostrado acima, são relevantes apenas se você usar RESOLVCONF (8) ou similar.

Nuxwin
fonte
9
Bem, foda-se eles. Apenas apt-get installquando você não tem configuração de rede. Que idéia brilhante, canônica.
21318
1
@Velkan Você sempre pode pré-configurar sua rede com o netplan e depois voltar para ifupdown mais tarde;) Mas eu concordei com você. De alguma maneira canônica, toma decisões erradas. Por exemplo, eles quebram softwares que dependem de ifupdown para configuração de rede (nenhum provedor para netplan). Este é o caso para o nosso software do painel de controle (série estável), onde nós não queremos adicionar novo provedor de configuração de rede ...
Nuxwin
3
@StephenBoston Concordo totalmente com você. No entanto, mesmo que a Canonical tente avançar com a introdução de novas tecnologias, isso poderá ser feito de maneira menos invasiva. Quero dizer, a escolha deve ser deixada para o usuário final. Para estações de trabalho, a mudança de ifupdown para netplan certamente não é grande coisa, mas quando você tem que lidar com servidores Ubuntu, isso é outra história porque a maioria dos softwares estáveis ​​não fornece necessariamente adaptadores ... Essa tem sido a mesma história para o systemd. Eu tenho que lidar com o Debian e o Ubuntu todos os dias. O problema com o Ubuntu é que eles não se importam muito com a compatibilidade com versões anteriores.
Nuxwin
1
Correção menor: # systemctl unmak networking-># systemctl unmask networking
Santosh
1
Além disso, se você usar dns-domaine dns-searchno arquivo de interfaces, deverá configurar o Domainsparâmetro em resolved.conf, acho? Enfim, um ótimo trabalho ao juntar tudo isso aqui, provavelmente me salvou muito tempo :) #
OttoEisen
10

A equipe da Netplan postou uma resposta oficial em suas perguntas frequentes aqui :

Como voltar para ifupdown

...

Em um sistema em execução, o netplan pode ser removido instalando ifupdown e configurando / etc / network / interfaces manualmente, como os usuários fizeram anteriormente.

No momento da instalação, um usuário pode optar por usar ifupdown pré-configurando netcfg / do_not_use_netplan = true. Isso é feito adicionando a linha preseed à linha de comando ao inicializar a mídia de instalação (ou seja, no menu de inicialização da mídia de instalação, pressione F6, digite 'e' e adicione à linha de comando).

Veja a resposta do Nuxwin para obter instruções mais completas.

jdgregson
fonte
9

Netplan e yaml são, na melhor das hipóteses, frágeis no ambiente apenas de servidor (erros de indentação custarão você). O Interfaces perdoava o suficiente, facilitando bastante o gerenciamento das configurações de rede em um servidor.
A Netplan apresenta novas camadas. Mas o verdadeiro problema é que o U18 interrompe a desativação e não termina o trabalho com o NetPlan. Se você retornar ao / etc / network / interfaces reinstalando o ifupdown, o gerenciamento do DNS não funcionará mais no arquivo de interfaces. Quaisquer entradas dns-nameservers são ignoradas. Em vez disso, o dns é definido em /etc/resolv.conf. Mas você não pode editar esse arquivo porque ele é reescrito toda vez que a máquina é inicializada. WTF? O Netplan foi projetado para ser gerenciado por uma GUI, para que aqueles de nós no campo apenas de servidores permaneçam com um sistema frágil que temos que andar na ponta dos pés. Ubuntu não é bom!
por que não nos fornecer uma maneira de redirecionar as configurações em / etc / network / interfaces para o netplan na inicialização para nos ajudar enquanto você finaliza o netplan?

Dan Desjardins
fonte
1
como isso responde a pergunta?
Pierre.Vriens
@ Dan Desjardins Veja a resposta aceita sobre o problema do resolvedor de DNS. Basicamente, as entradas DNS que você coloca no arquivo ifupdown INTERFACES (5) são relevantes apenas quando você usa resolvconf (8) ou similar. Para o resolvedor de stub DNS fornecido por SYSTEMD-RESOLVED.SERVICE (8, você precisa adicionar seu DNS ao arquivo /etc/systemd/resolved.conf. Isso os tornará persistentes. Outra solução é desativar o SYSTEMD-RESOLVED. Serviço SERVICE (8) e instalação / configuração do resolvconf (8.) Na esperança de que eu seja claro o suficiente #
Nuxwin
2

Por que não apenas configurar com o netplan?

Bem, como é configurado no 18.04-Desktop, é uma única linha que entrega o controle a todas as interfaces do NetworkManager.

Embora isso seja provavelmente adequado para 95% dos usuários, lembre-se de que o NetworkManager só será executado quando você estiver conectado a uma sessão.

Se você deseja que sua máquina atue como servidor / área de trabalho, por exemplo, comece a servir arquivos para máquinas locais, atue como servidor VNP, etc ... ou qualquer coisa "sofisticada" antes que alguém faça login, apenas pelo simples fato de ser ativado, você terá problemas com a configuração do padrão 18.04-Desktop.

Obviamente, a alternativa seria usar a configuração server-Netplan, que, até onde eu li (não verificado por mim), passa o controle para systemd-networkd. Nesse caso, é melhor você aprender como o systemd faz as coisas como uma substituição do antigo init do System V.

Se você seguir esse caminho, ainda precisará fazer alterações no netplan yaml, pois em uma versão para desktop o controle é dado ao NetworkManager.

Zakhar
fonte
3
Existe pelo menos um motivo: o Netplan não suporta openvswitch.
Kamilion
5
O netplan não suporta aliases de IP (estilo eth0: 0). Eu não posso acreditar como essa coisa poderia encontrar o seu caminho no servidor Ubuntu!
Hamid Fadishei
Porque meus netplandiretórios estão vazios!
dsgdfg 16/01
O serviço NetworkManager é iniciado muito cedo e não requer uma sessão ou um usuário conectado.
thaller
1

A chave é saber que esse cloud.inité o programa de controle real.
Dito isto, a linha no netplanarquivo de configuração "opcional: true" é obrigatória.
Saber disso facilitou.

Acabei de remover 01-network-manager-all.yamle copiei para /root/save/. Em seguida, coloque uma configuração válida conhecida em vez dela 50-cloud-init.yaml: seu conteúdo a seguir:

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match: 
        name: enp*
        optional: true
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.2.5/24]
      gateway4: 192.168.2.1
      nameservers:
        addresses: [127.0.0.1, 8.8.4.4]          
      parameters:
        mode: 0          
        mii-monitor-interval: 100

Em seguida, reinicie e deve estar funcionando bem.

A configuração válida conhecida veio da rede 802.3ad ligada configurada usando netplan no Ubuntu 18.04 .

pksings
fonte
1
A questão aqui é como voltar para ifupdown;) No futuro, você deve tentar responder às perguntas sem poluir-los, mesmo com ele nem sempre é fácil para furar a matéria inicial;)
Nuxwin
0

De acordo com esta resposta, a solução é remover todos os arquivos .yaml operacionais: Ubuntu 17.10 disable netplan

Eu não removeria nada sem fazer backup. Podemos fazer isso facilmente movendo os arquivos para o lado. Primeiro, localize os arquivos:

sudo updatedb
locate netplan | grep yaml

No meu sistema 18.04, parece que o único arquivo operacional é /etc/netplan/01-network-manager-all.yaml. Vamos movê-lo:

mkdir ~/netplan
sudo mv /etc/netplan/01-network-manager-all.yaml  /home/user/netplan

... onde usuário é seu nome de usuário.

Agora verifique se o arquivo foi realmente removido:

ls /etc/netplan

Agora faça suas adições ao / etc / network / interfaces conforme necessário.

Reinicie.

Alguma melhoria?

Nota de rodapé: O processo exato para fazer isso é difícil de encontrar. Podemos precisar refinar um pouco à medida que avançamos.

chili555
fonte
Vou ter que tentar isso e ver como vai. A única outra questão seria como aplicar as alterações sem reiniciar. No passado, você poderia usar ifup/ ifdown, /etc/init.d/networking restart, service networking restart, e os métodos Systemd, como systemctl restart networking, systemctl restart Network-Manager.serviceetc, mas nenhuma delas fosse possível para mim depois de instalar o Ubuntu 18.04.
jdgregson
Qual é o resultado de: sudo ip link set eth0 downseguido por: sudo ifup -v eth0Obviamente, substitua sua interface pelo eth0 mítico.
Chili555
ifupdownnão está instalado por padrão; portanto, quando você o chama ifup, apenas informa como instalá-lo. No entanto, sudo ip link set eth0 downseguido por sudo ip link set eth0 updesligar e ligar a interface novamente.
jdgregson
Impressionante! Então você está resolvido e pronto?
Chili555
Cuidado, nem todos os arquivos * .yaml estão relacionados ao netplan, portanto, remova-os apenas nos diretórios relacionados ao netplan!
JanC 05/05