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