changer les noms des interfaces réseau, debian wheezy

14

J'essaie de définir un nom pour une interface, "ethLan" au lieu de eth0. Cela garantit également que le nom de l'if restera cohérent à chaque redémarrage et noyau.

J'ai trouvé quelques articles sur le sujet, mais ils ont tous quelques années:
http://www.debian-administration.org/articles/463
http://www.linuxfromscratch.org/hints/downloads/files/ nameif.txt

J'ai fait ce qu'ils ont dit et j'ai ajouté le mac ethLan à / etc / mactabs / . À ce stade, j'ai deux problèmes:
1) Le if [...] && /sbin/nameifscript que j'ai mis dans /etc/network/if-pre-up.d/ ne fonctionne pas. J'ai résolu ce problème en l'ajoutant à /etc/init.d/networking , mais pourquoi if-pre-up.d ne fonctionne -t-il pas ?
2) L'interface ne se chargera que si je fais manuellement ifconfig ethLan up , malgré l'ajout à / etc / network / interfaces . Qu'est-ce que je fais mal?

utilisateur
la source

Réponses:

17

Les articles que vous avez trouvés sont quelque peu dépassés. Il existe désormais une méthode simple pour attribuer des noms aux interfaces réseau, via Udev .

Sur Debian et ses dérivés (y compris Ubuntu), recherchez un fichier appelé /etc/udev/rules.d/70-persistent-net.rules. Ce fichier est créé par /lib/udev/rules.d/75-persistent-net-generator.rulesà l'aide du script /lib/udev/write_net_rules. Chaque fois que udev voit un nouveau périphérique réseau, il lui attribue un nouveau numéro et lui ajoute ce numéro /etc/udev/rules.d/70-persistent-net.rules. De cette façon, les numéros d'interface sont persistants lors des redémarrages et persisteront après une réinstallation si vous effectuez une restauration /etc.

(Si votre distribution ne livre pas ces fichiers, recherchez-les dans le paquet Debian .)

Si vous voulez donner un nom significatif à une interface et que vous l'avez /etc/udev/rules.d/70-persistent-net.rules, il vous suffit de modifier ce fichier et de le changer "eth0"en "ethLan". Exécutez udevadm trigger --sysname eth0pour renommer le périphérique existant après avoir modifié le fichier (je pense que cela nécessite la fermeture de l'interface). Si vous n'avez pas ce fichier, vous pouvez écrire vous-même la correspondance sur une ligne (les scripts compliqués que Debian ajoute ne le font que automatiquement):

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", NAME="ethLan"
Gilles 'SO- arrête d'être méchant'
la source
1
Si vous voulez une liste pratique d'attributs utilisables dans les règles udev, vous pouvez essayer quelque chose comme udevadm info -a /sys/class/net/eth0. (voir udevadm(8)détails)
Austin Adams
1
La question indique clairement qu'elle s'adresse à Wheezy, mais il convient de noter que cette réponse n'est plus valide pour Debian et Ubuntu plus récents. En commençant par systemd 220-7 , la dénomination de l'interface doit être effectuée par d'autres moyens.
sampi
@sampi Ma réponse s'applique toujours à Debian Jessie (la version stable actuelle). Échoue-t-il sur étirement ou recommande-t-il simplement une méthode déconseillée? Savez-vous quelle version d'Ubuntu est la coupure?
Gilles 'SO- arrête d'être méchant'
@Gilles Je n'ai pas fouillé assez profondément dans les détails pour savoir s'il échoue réellement ou s'il s'agit simplement d'une dépréciation recommandée. Il semble qu'Ubuntu Wily et les versions plus récentes utilisent systemd supérieur à 220-7 .
sampi
6

Pour les personnes rencontrant ce message via un moteur de recherche, comme moi:

Dans Debian stretch et plus récent, vous pouvez utiliser les fichiers systemlink .link pour que udev renomme les périphériques. Voir https://manpages.debian.org/stretch/udev/systemd.link.5.en.html pour la page de manuel.

Un exemple:

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

[Link]
Name=uplink0

N'oubliez pas d'exécuter update-initramfs -uensuite pour incorporer ces fichiers de configuration mis à jour dans vos initramfs, où ils seront appliqués.

Michael
la source
Si les fichiers de liens sont présents dans un système avec udev.rules.d lequel sera prioritaire?
vfclists
1

Il existe un moyen légèrement plus simple de le faire avec un package nommé ifrename. Il a unudev fichier de configuration ) et vous pouvez utiliser des adresses MAC pour identifier les interfaces.

Cela entre wireless-toolscependant en conflit .

Mischa Arefiev
la source
2
Il convient de noter que cela ifrenameentrera en conflit udevsi les deux sont utilisés pour donner aux interfaces des noms persistants.
Mischa Arefiev