web-dev-qa-db-fra.com

Comment voir ce que fait le client DHCP?

  • Le client DHCP sous Linux écrit-il des journaux?
  • Sinon, les journaux peuvent-ils être activés et comment?
  • S'il écrit les journaux, où peuvent-ils être trouvés?
  • À quoi ressemble un journal typique d'un client DHCP lors de l'obtention d'une adresse IP et de serveurs de noms auprès d'un serveur DHCP?
  • Où puis-je trouver le code source du client DHCP?

Au cas où il y aurait des différences significatives entre Linux: Je suis intéressé par Debian 8.1 (installation minimale par défaut AMD64).

14
Gustave

Le client DHCP d'ISC est généralement appelé dhclient dans la plupart des distributions Linux. De man dhclient:

Le client n’imprime normalement aucune sortie au cours de sa séquence de démarrage. Il peut être fait pour émettre des messages détaillés contenant les événements de séquence de démarrage jusqu'à ce qu'il ait acquis une adresse en fournissant l'argument de ligne de commande -v. Dans les deux cas, le client enregistre les messages à l'aide de la fonction syslog (3).

Il existe deux manières de lire votre journal système. Sur la plupart des systèmes qui utilisent systemd, vous devez utiliser journalctl, alors que cat /var/log/syslog est valable pour les systèmes qui utilisent encore un système init traditionnel.

Par conséquent, si votre système utilise la fonction de journalisation de systemd, vous pouvez utiliser journalctl | grep -Ei 'dhcp' pour obtenir les journaux du client DHCP. Sinon, entrez cat /var/log/syslog | grep -Ei 'dhcp'.

Voici à quoi ressemble mon journal de client DHCP:

Jul 20 14:17:39 trueclient1 NetworkManager[2622]: <info> (wlan1): canceled DHCP transaction, DHCP client pid 3325
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> Activation (wlan1) Beginning DHCPv4 transaction (timeout in 45 seconds)
Jul 20 14:17:42 trueclient1 dhclient: Internet Systems Consortium DHCP Client 4.2.2
Jul 20 14:17:42 trueclient1 dhclient: For info, please visit https://www.isc.org/software/dhcp/
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> (wlan1): DHCPv4 state changed nbi -> preinit
Jul 20 14:17:42 trueclient1 dhclient: DHCPREQUEST on wlan1 to 255.255.255.255 port 67
Jul 20 14:17:42 trueclient1 dhclient: DHCPACK from 10.8.8.1
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> (wlan1): DHCPv4 state changed preinit -> reboot
5
Larssend

Un moyen peu commode (mais efficace) de déboguer dhclient sur de nombreuses plates-formes Linux consiste à activer le traçage de bash dans /sbin/dhclient-script .

dhclient exécute ce script sur la plupart des variantes de système d'exploitation que j'ai vérifiées (RedHat, Debian, etc.).

Ajouter simplement -x au Shebang (première ligne) dans ce script devrait permettre de suivre chaque ligne vers la console, par exemple:

#!/bin/bash -x

Ensuite, vous pouvez exécuter, par exemple

dhclient -r #release lease
dhclient #re-acquire lease

Et vous devriez voir beaucoup de résultats, non seulement de dhclient-script, mais de tous les scripts .d inclus dans/etc/dhcp *.

La sortie de trace devrait vous permettre de comprendre ce qui se passe et les décisions prises par le code (référencez le script lui-même lorsque vous regardez la sortie).

Vous pouvez généralement déduire les entrées (par exemple, les paramètres tels que IP, GATEWAY, etc.) du script reçu à partir de cette sortie. Sinon, vous pouvez ajouter temporairement quelque chose comme ceci au script juste avant la sortie:

   env | logger -t dhclient-debugging

Puis vérifiez votre journal après avoir exécuté dhclient (/ var/log/messages ou/var/log/syslog)

2
akom