Lorsque je connecte un adaptateur USB-to-Ethernet (qui a déjà été utilisé), je reçois une adresse MAC, puis s'il y a quelque chose de connecté à l'autre extrémité, je reçois également une adresse IP (192.168.1.1 dans mon cas, configuré dans statique dans NetworkManager). De l'autre extrémité, divers instruments attendent que le serveur DHCP s'exécute sur ce PC pour leur donner une adresse IP.
Le problème est que le serveur DHCP refuse de démarrer si le sous-réseau n'est pas trouvé, il ne peut donc pas être lancé avant la mise en place de la connexion. Comment puis-je faire systemctl restart isc-dhcp-server.service
Après avoir reçu le IP 192.168.1.1 de NetworkManager?
J'ai pensé à utiliser une règle Udev avec ATTR{address}=="f0:1f:af:3d:6c:e7" RUN+="systemctl restart isc-dhcp-server.service"
Mais il fonctionne avant l'attribution de la propriété intellectuelle. Y a-t-il une option Udev que je peux utiliser ou dois-je utiliser une autre méthode via SystemD ou NetworkManager ou autre?
Enfin passé du temps à ce problème et résolu avec un script que j'ai nommé restart-dhcpd.sh
et placé dans /etc/NetworkManager/dispatcher.d/
. (Remarque: vous devrez peut-être avoir besoin de systemctl restart network-manager.service
et/ou systemctl daemon-reload
ensuite):
#! /bin/bash
IF=$1
STATUS=$2
case "$2" in
dhcp4-change|up)
logger -s "NM Script $STATUS $IF triggered"
if [ "$1" = "enx6cf0496c6947" ]; then
/bin/systemctl restart isc-dhcp-server.service
fi
;;
esac
Votre système est configuré avec SystemD.
Donc, une solution consiste à ajouter une dépendance entre isc-dhcp-server
et le périphérique USB.
systemctl | grep -i sys-subsystem-net-devices.*6c.*e7
pS 6c & E7 Les 2 derniers octets de votre Mac de votre périphérique USB
vous devez avoir quelque chose comme
sys-subsystem-net-devices-enxf01faf3d6ce7.device
isc-dhcp-server
export EDITOR=emacs # <= change to what you want
systemctl edit isc-dhcp-server.service
et ajoutez ces lignes
[Unit]
After=sys-subsystem-net-devices-enxf01faf3d6ce7.device
Wants=sys-subsystem-net-devices-enxf01faf3d6ce7.device
redémarrer
vérifiez l'état et la configuration de isc-dhcp-server
en exécutant ces commandes
systemctl show --property=After isc-dhcp-server.service
systemctl status isc-dhcp-server.service
Udev déclenchant un service SystemD est le moyen de le faire.
vous pouvez correspondre à votre adaptateur USB par USB ID, c'est trop tard lorsque vous pouvez voir une adresse MAC.
cet article a les instructions
https://unix.stackexchange.com/questions/229987/udev-rule-to-match-any-usb-storage-device