Reimpostare eth0 e wlan0 su Debian Stretch

Chi ha provato Debian Stretch (versione 9), l’attuale versione stabile, avrà notato dei cambiamenti radicali per quanto riguarda il riconoscimento delle interfacce di rete (eth0, wlan0, ecc…), non hanno più i nomi di un tempo, ma dei biosdevname, in pratica i nomi assegnati direttamente dal BIOS, che cambiano di macchina in macchina.

Questa nuova funzionalità è stata implementata in systemd, ed il suo nome è v197, ossia Predictable Network Interface Names.

Il nostro amato file /etc/udev/rules.d/70-persistent-net.rules generato da udev è sparito.

Se volete ripristinare i vecchi device di rete ed il file sopra citato su Debian Stretch state seguendo la guida giusta.

I dispositivi di rete vengono mappati in questa cartella qui /sys/class/net/ nel mio caso vengono chiamate eno1 e wlo1.

Possiamo scoprire i nomi dei nostri dispositivi di rete in due modi, digitando:

# ls /sys/class/net/

oppure digitando

# ip link

Ricordo che per riavere il comando ifconfig bisogna installare il seguente pacchetto:

# apt-get install ethtool net-tools

Nel mio caso la ethernet viene chiamata eno1 e l’interfaccia wifi invece wlo1.

I dispositivi di rete USB invece vengono mappati in questo file: /lib/udev/rules.d/73-usb-net-by-mac.rules

Per ripristinare i vecchi nomi delle interfacce di rete digitiamo quindi:

# nano /etc/default/grub

E troveremo una riga di codice di questo tipo:

GRUB_CMDLINE_LINUX=""

Sostituiamola con questa riga di codice:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

Salviamo il file ed aggiorniamo il GRUB digitando:

# update-grub

C’è un file chiamato /lib/systemd/network/99-default.link che contiene le policy dei singoli devices o addirittura suddivisi in classi. Potete reperire più informazioni sulle sue pagine man, digitando:

$ man systemd.link

Le policy in quel file possonoessere cambiate solo se non disabilitiamo il net.iframes nelle impostazioni del GRUB, cosa che abbiamo fatto poco fa, ed il file /lib/systemd/network/01-mac-for-usb.link mappa i dispositivi di rete USB usando i MAC ADDRESS degli stessi.

Adesso disabilitiamo il file dove andranno generate le interfacce di rete del bios digitando:

# ln -s /dev/null /etc/systemd/network/99-default.link

Adesso andiamo a rinominare le interfacce di rete del bios con quelle normali in /etc/network/interfaces/

Rigeneriamo l’initramfs digitando:

# update-initramfs -u

E riavviamo.

Adesso possiamo ricreare il nostro file su /etc/udev/rules/ chiamandolo però 76-persistent-net.rules anzichè 70-persistent-net.rules.

Il nome del rules file deve avere un prefisso (numero) minore di 80, in modo da poter avviarsi prima di /lib/udev/rules.d/80-net-setup-link.rules e più grande di 75 in modo che si avvia dopo il file /lib/udev/rules.d/75-net-description.rules.

Un esempio di file /etc/udev/rules/76-persistent-net.rules è questo qui:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="wlan0"

oppure

SUBSYSTEM=="net", ACTION=="add", ENV{ID_VENDOR_ID}=="0x1234", \
       ENV{ID_MODEL_ID}=="0x5678", NAME="wlan0"

I VENDOR_ID ed i MODEL_ID per i dispositivi PCI li troviamo digitando il comando:
discover –vendor-id –model-id pci | uniq

Nel mio caso l’output sarà:

8086 1e20 Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller 
168c 0032 Atheros Communications Inc. AR9485 Wireless Network Adapter 
8086 1e3a Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 
10ec 8136 Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller 
8086 1e57 Intel Corporation HM77 Express Chipset LPC Controller 
8086 1e10 Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 
8086 282a Intel Corporation 82801 Mobile SATA Controller [RAID mode] 
8086 1e14 Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 
8086 1e31 Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller 
8086 0166 Intel Corporation 3rd Gen Core processor Graphics Controller 
8086 1e26 Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 
8086 1e2d Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 
8086 1e12 Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 
8086 0154 Intel Corporation 3rd Gen Core processor DRAM Controller 
8086 1e22 Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller 

I primi quattro numeri sono il VENDOR_ID, gli altri quattro invece i MODEL_ID.

Nel caso dei dispositivi USB invece il comando sarà:

# discover --vendor-id --model-id usb | uniq

Ulteriori informazioni potete trovarle nelle pagine man di udev digitando:

$ man udev

Ogni volta che apportiamo modifiche al file /etc/udev/rules/76-persistent-net.rules dobbiamo rigenerare l’initramfs digitando:

# update-initramfs -u

Ulteriori informazioni sui Predictable Network Interface Names le possiamo trovare qui: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

Author: davenull

Ho 28 anni (ad aprile 29) e vengo da Taranto (Puglia, Italia) e sono:

Sistemista/Programmatore Unix (Debian, OpenMediaVault, OpenWrt, FreeBSD, NetBSD, Lineage OS);

Prototipatore con Raspberry Pi.

Esperto di Sicurezza Informatica, scrivo exploit da poco piì di dieci anni, circa quindici;

Esperto di microarchitetture embedded, specialmente bcm63, ar7 ed armhf (6 e 7);

Fondamentalista del Free Software (Free as in Freedom)

Relatore ed organizzatore di svariati Linux Day a Taranto e a Francavilla Fontana (Brindisi);

Sistemista di svariate sale server che ora non vi sto ad elencare;

Co-Founder di JonixLUG: https://www.jonixlug.altervista.org

Founder di FreeNIX Security Labs: https://www.freenixsecurity.net

Collaboratore esterno dell’Associazione Fare Zero Makers: http://www.farezero.org