web-dev-qa-db-fra.com

Comment régénérer 70-persistent-net.rules sans redémarrer?

Le fichier /etc/udev/rules.d/70-persistent-net.rules est généré automatiquement sur un système Linux avec udev, s'il n'existe pas, lors du redémarrage. Mais je voudrais savoir comment créer ce fichier de règles (avec une commande) sans redémarrer le serveur.

J'ai fait des recherches sur Google pendant un certain temps et j'ai constaté que le fichier de règles était généré par ce script:

/lib/udev/write_net_rules

Cependant, il est impossible d'exécuter ce script à partir de la ligne de commande, car (je suppose) qu'il veut être démarré par udev, avec certaines variables d'environnement définies correctement. Le démarrer manuellement imprime le message d'erreur "$ INTERFACE manquante". Même si j'ai défini la variable env INTERFACE = eth0 avant le démarrage du script, il affiche toujours l'erreur "correspondance valide manquante". Sans oublier que j'ai deux interfaces (eth0 et eth1) et je veux que le fichier de règles soit généré pour les deux.

Je pensais également déclencher des événements udev comme celui-ci, en espérant que cela démarrerait le script à partir d'udev lui-même, mais rien ne change:

udevadm trigger --type=devices --action=change

Alors, est-ce que quelqu'un sait comment régénérer les règles de réseau persistant dans le fichier /etc/udev/rules.d/70-persistent-net.rules sans redémarrage?

14
Tomas M

Selon la page de manuel --action=change est la valeur par défaut de udevadm.

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

Par conséquent, vous feriez mieux d'essayer --action=add au lieu. Cela devrait aider:

/sbin/udevadm trigger --type=devices --action=add
5
rush

Dans Ubuntu Server 16.04LTS, le 70-persistent-net.rules n'existe pas.

je n'ai fait que courir:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Créez ensuite le fichier en utilisant

Sudo vi /etc/systemd/network/10-internet.link

et ajoutez ce qui suit

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq pour enregistrer le fichier

puis redémarrez et ajustez votre fichier/etc/network/interfaces. Redémarrez ensuite à nouveau.

1
jadey1412

J'ai eu le même problème, mais j'ai remarqué que je pouvais toujours voir les interfaces dans le ip addr liste. J'ai utilisé ce qui suit (en tant que root):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

Répétez l'opération pour chaque interface. Cela a été utilisé pour "récupérer" mon fichier. (Remarque: une invocation répertoriera toutes les interfaces + ajoutera un renommage pour correspondre à une, donc je vous recommande de jeter un œil au fichier de sortie après une invocation)

Il existe certainement des différences entre les systèmes d'exploitation et les implémentations UDEV actuelles et les scripts de support. À noter, j'utilisais CentOS 6.8 lorsque j'ai réussi.

Crédit - J'ai surtout référencé ce site. Il y a un commentaire quelques discussions qui parlent de modifier le script, mais j'ai préféré utiliser des variables d'environnement car c'était plus propre: https://access.redhat.com/discussions/124021

0
gravy21