web-dev-qa-db-fra.com

Changer automatiquement de MAC 16.04

Donc, je suis tombé sur le problème commun de eth0 appelé autre chose (enpXsX) avec systemd. J'ai donc essayé de créer le fichier /etc/udev/rules.d/10-network.rules. Cela fonctionne très bien. Le problème est que je dois prendre cette copie exacte de mon serveur et utiliser une carte SD pour la déplacer régulièrement entre plusieurs serveurs physiques à des fins de test. Parce que 10-network.rules a besoin de l'adresse MAC, il change constamment de fois lorsque je connecte la carte à un nouveau périphérique. J'ai créé un script qui le modifie automatiquement et je l'exécute en tant que service (changeMAC.service) au démarrage.

Ce service fonctionne bien. Malheureusement, malgré la modification de l'adresse MAC avant le démarrage de networking.service, la mise en réseau échoue toujours. Pour que cela fonctionne, je dois redémarrer. J'en ai besoin pour démarrer correctement au premier démarrage.

En utilisant le tracé systemd-analyse, je peux dire que changeMAC.service s’achève en réalité avant networking.service. Je pensais que le problème était peut-être qu'il fallait commencer plus tôt. Cependant, j'ai actuellement une carte SD sur laquelle il parvient à démarrer en une fois. Mais lorsque je prends cette image et la mets sur mon ordinateur pour qu'elle s'exécute dans VirtualBox, il est nécessaire de redémarrer. Je ne trouve pas les différences entre la carte SD et le vhd.

J'ai également essayé d'utiliser ifup, ifdown, /etc/init.d/networking restart, systemctl start networking.service pour forcer la mise en réseau à réévaluer sa situation et à consulter 10-network.rules. Les trois premiers produisent des erreurs et ne s'exécutent pas, le dernier s'exécutera mais network.service ne démarrera plus.

J'ai donc besoin de savoir comment faire en sorte que le service changeMAC.service s'exécute à temps pour que quiconque a besoin de règles de réseau 10, puisse l'obtenir, ou j'ai besoin de savoir comment forcer ceux qui ont besoin de règles de réseau 10 à le redémarrer sans avoir à réinitialiser l'ensemble. système.

2
khm

Vous pouvez ajouter une option à GRUB_CMDLINE_LINUX_DEFAULT dans /etc/default/grub pour désactiver les noms prédictifs.

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0" 

et vous pouvez garder les autres options sur cette ligne. De cette façon, vous n'avez pas à vous inquiéter d'avoir un fichier 10-network.rules avec des adresses MAC définies.

Assurez-vous de mettre à jour le fichier grub après avoir modifié cette ligne avant de redémarrer l'hôte.

Sudo update-grub

J'espère que cela t'aides!

2
Terrance