cambiando i nomi delle interfacce di rete, debian wheezy


14

Sto cercando di impostare un nome per un'interfaccia, "ethLan" invece di eth0. In questo modo si assicura anche che il nome if rimanga coerente ad ogni riavvio e kernel.

Ho trovato alcuni articoli sull'argomento, ma hanno tutti un paio d'anni:
http://www.debian-administration.org/articles/463
http://www.linuxfromscratch.org/hints/downloads/files/ nameif.txt

Ho fatto come hanno detto e aggiunto il ethLan mac a / etc / mactabs / . A questo punto ho due problemi:
1) Lo if [...] && /sbin/nameifscript che ho inserito in /etc/network/if-pre-up.d/ non viene eseguito. Ho risolto questo aggiungendolo a /etc/init.d/networking , ma perché if-pre-up.d non funziona?
2) L'interfaccia non si carica a meno che non esegua manualmente ifconfig ethLan up , nonostante l'aggiunta a / etc / network / interfaces . Che cosa sto facendo di sbagliato?

Risposte:


17

Gli articoli che hai trovato sono in qualche modo obsoleti. Ora esiste un metodo semplice per assegnare nomi alle interfacce di rete, tramite Udev .

Su Debian e derivati ​​(incluso Ubuntu), cerca un file chiamato /etc/udev/rules.d/70-persistent-net.rules. Questo file è creato da /lib/udev/rules.d/75-persistent-net-generator.rulescon l'aiuto dello script /lib/udev/write_net_rules. Ogni volta che udev vede un nuovo dispositivo di rete, gli assegna un nuovo numero e lo aggiunge a /etc/udev/rules.d/70-persistent-net.rules. In questo modo, i numeri di interfaccia sono persistenti tra i riavvii e persistono dopo una reinstallazione se ripristini /etc.

(Se la tua distribuzione non spedisce questi file, cercali nel pacchetto Debian .)

Se vuoi dare un nome significativo a un'interfaccia e hai /etc/udev/rules.d/70-persistent-net.rules, tutto ciò che devi fare è modificare quel file e cambiare "eth0"in "ethLan". Corri udevadm trigger --sysname eth0per rinominare il dispositivo esistente dopo aver modificato il file (penso che questo richieda la chiusura dell'interfaccia). Se non hai quel file, puoi scrivere tu stesso la corrispondenza di una riga (gli script complicati che Debian aggiunge sono solo per farlo automaticamente):

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", NAME="ethLan"

1
Se desideri un utile elenco di attributi utilizzabili nelle regole udev, puoi provare qualcosa del genere udevadm info -a /sys/class/net/eth0. (vedi udevadm(8)per i dettagli)
Austin Adams,

1
La domanda afferma chiaramente di essere per Wheezy, ma potrebbe valere la pena notare che questa risposta non è più valida per i nuovi Debian e Ubuntu. A partire da systemd 220-7 la denominazione dell'interfaccia deve essere effettuata con altri mezzi.
sampi

@sampi La mia risposta si applica ancora a Debian jessie (l'attuale versione stabile). Non riesce in allungamento o sta solo raccomandando un metodo deprecato? Sai quale versione di Ubuntu è il cutoff?
Gilles 'SO- smetti di essere malvagio'

@Gilles Non ho scavato abbastanza in profondità nei dettagli per sapere se fallisce davvero o è semplicemente una deprecazione raccomandata. Sembra Ubuntu Wily e più recenti utilizzano systemd superiore a 220-7 .
sampi,

6

Per le persone che si imbattono in questo post tramite un motore di ricerca, come me:

In Debian stretch e successivi, è possibile usare i file .link di systemd per fare in modo che udev rinomini i dispositivi. Vedi https://manpages.debian.org/stretch/udev/systemd.link.5.en.html per la manpage.

Un esempio:

cat /etc/systemd/network/10-uplink0.link 
[Match]
MACAddress=00:0d:b9:49:8a:18

[Link]
Name=uplink0

Non dimenticare di eseguire in update-initramfs -useguito per incorporare questi file di configurazione aggiornati nei tuoi initramfs, dove verranno applicati.


Se i file di collegamento sono presenti in un sistema con udev.rules.d quale avrà la precedenza?
vfclists,

1

C'è un modo leggermente più semplice per farlo con un pacchetto chiamato ifrename. Ha un udevfile di configurazione separato (da ) ed è possibile utilizzare gli indirizzi MAC per identificare le interfacce.

È in conflitto con wireless-toolscomunque.


2
Va notato che ifrenameentrerà in conflitto udevse entrambi vengono utilizzati per assegnare alle interfacce nomi persistenti.
Mischa Arefiev,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.