É bem conhecido que o systemd altera os nomes da interface de rede de, por exemplo, eth0 para enp0s25, e isso é chamado de "Nomes de interface de rede previsíveis".
No meu sistema, eth0 é chamado de "enp0s31f6".
E lamento dizer isso, mas também concordo com este usuário que diz "Eu vejo pouca ironia na palavra "previsível"" https://askubuntu.com/questions/704361/why-is-my-network-interface -named-enp0s25-em vez-de-eth0
Voltando ao tópico:
No meu sistema (Debian 9.8 com um adaptador Ethernet PCI físico), de repente descobri que o DHCP não funciona mais.
Eu preciso executar manualmente o dhclient para obter um IP.
Então, eu olho em /etc/network/interfaces e vejo:
auto eth0
iface eth0 inet dhcp
Isso não deveria ser enp0s31f6?
No entanto, como posso saber o que colocar lá, e se mudar novamente, por exemplo, se eu mover a placa PCI Ethernet para um slot diferente?
Eu realmente deveria editar este arquivo manualmente e alterar eth0 para o que o systemd decidir chamar minha interface?
Certamente devo estar perdendo alguma informação crucial aqui sobre como o systemd funciona, como o Debian funciona ou como as interfaces de rede previsíveis funcionam. Talvez uma combinação desses.
Devo me referir a uma interface de rede abstrata em /etc/network/interfaces? Alguma string abstrata que sempre significa "a primeira placa de interface de rede" (não é apenas eth0?)? Ou por algum UID? Por seu domínio PCI:bus:dispositivo?
Isso é muito confuso, e muita documentação se refere ao que eu consideraria uma bagunça de scripts legados, systemd moderno, e muitas distribuições parecem usar uma combinação de scripts de estilo antigo e funcionalidade systemd que é difícil de entender.
Perguntas:
Por que parou de funcionar?
O que eu fiz errado?
Por que sempre foi eth0 no meu /etc/network/interfaces, quando o Debian usa systemd e interfaces de rede previsíveis?
Qual é a maneira correta de corrigir isso?
É difícil dizer o que aconteceu "de repente". Revise seus logs
/var/log/syslog
ou/var/log/messages
para DHCP na hora em que parou de funcionar e você poderá descobrir. Verifique também o tempo de modificação emstat /etc/network/interfaces
.Este é o novo padrão desde o trecho Debian. Se você instalou seu sistema anteriormente e o seu
/etc/network/interfaces
se originou de jessie (ou wheezy...), então ele foi criado pelo instalador (netcfg
) usando o esquema de nomenclatura antigo.O que for melhor para você.
Se você espera ter várias interfaces Ethernet nesta máquina, pense em como gostaria de diferenciá-las. Lembre-se de que a ordem ethX deles não seria estável/previsível. PredictableNetworkInterfaceNames oferece várias opções, escolha de acordo com seu caso de uso.
Se esta máquina tiver apenas uma única interface Ethernet, você poderá
ln -s /dev/null /etc/systemd/network/99-default.link
, só não esqueça de regenerar seu initramfs depois comupdate-initramfs -u
);/etc/network/interfaces
completamente e mude para systemd-networkd com uma configuração compatível com todos comoin
/etc/systemd/network/dhcp.network
(escolha um nome de arquivo arbitrário). Desculpe, não consigo acertar o recuo...