Comment récupérer le nom de la machine qui envoie le bail dhcp ?

Comment récupérer le nom de la machine qui envoie le bail dhcp ? - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 09-09-2014 à 14:17:22    

Bonjour,
 
J'aimerai sous Raspbian pouvoir automatiquement mettre le SSID de mon point d'accès à la valeur du nom de la machine qui héberge le serveur dhcp.
 
Je pensais donc utiliser un script éxécuté pendant la demande de bail après que la configuration complète aie été envoyée, donc quand les script dhcp-client sont appelés pour la raison BOUND.
 
Jusque là tout va bien, sauf que quand je regarde ce qu'envoi le serveur dhcp sur le réseau, j'ai la trame suivante (tcpdump) :
 

Code :
  1. tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68))'


 

Code :
  1. 09:08:28.387377 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
  2.     0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from b8:27:eb:38:59:9b (oui Unknown), length 300, xid 0xde09ff3b, Flags [none] (0x0000)
  3.           Client-Ethernet-Address b8:27:eb:38:59:9b (oui Unknown)
  4.           Vendor-rfc1048 Extensions
  5.             Magic Cookie 0x63825363
  6.             DHCP-Message Option 53, length 1: Discover
  7.             Requested-IP Option 50, length 4: 192.168.10.45
  8.             Hostname Option 12, length 11: "raspberrypi"
  9.             Parameter-Request Option 55, length 14:
  10.               Subnet-Mask, BR, Time-Zone, Default-Gateway
  11.               Domain-Name, Domain-Name-Server, Option 119, Hostname
  12.               Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
  13.               NTP
  14.             END Option 255, length 0
  15.             PAD Option 0, length 0, occurs 22
  16. 09:08:29.388620 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 338)
  17.     192.168.10.251.bootps > 192.168.10.45.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 310, xid 0xde09ff3b, Flags [none] (0x0000)
  18.           Your-IP 192.168.10.45
  19.           Client-Ethernet-Address b8:27:eb:38:59:9b (oui Unknown)
  20.           Vendor-rfc1048 Extensions
  21.             Magic Cookie 0x63825363
  22.             DHCP-Message Option 53, length 1: Offer
  23.             Server-ID Option 54, length 4: dhcp.mydomain.tld
  24.             Lease-Time Option 51, length 4: 86400
  25.             Subnet-Mask Option 1, length 4: 255.255.255.0
  26.             BR Option 28, length 4: 192.168.10.255
  27.             Time-Zone Option 2, length 4: -28800
  28.             Default-Gateway Option 3, length 4: 192.168.10.254
  29.             Domain-Name Option 15, length 10: "mydomain.tld"
  30.             Domain-Name-Server Option 6, length 4: 192.168.10.254
  31.             Netbios-Name-Server Option 44, length 4: 192.168.10.100
  32.             NTP Option 42, length 4: 192.168.10.229
  33.             END Option 255, length 0


 
On y voit nettement l'option Server-ID avec la valeur qui m'intéresse dhcp.mydomain.tld (ce qui normalement devrait être l'adresse ip du serveur, sauf que là j'ai bien son nom, mais pas entre " " ), mais impossible de la retrouver dans les variables.
La seule variable concernant le serveur dhcp que j'arrive à récupérer est $new_dhcp_server_identifier qui est l'adresse IP du serveur dhcp (ce qui serait bien si je savais récupérer le nom de la machine avec son IP...)
 
Savez-vous comment récupérer la valeur texte de l'option 54 Server ID ? ($new_server_id ne fonctionne pas)
 
Ce que je veux faire, c'est transformer un raspberry en point d'accès WIFI, avec un SSID qui prendrait automatiquement la valeur du nom de la machine qui aura attribuer la configuration réseau via dhcp au raspberry.
 
En gros, j'ai des machines avec un PC dont le nom est le numéro de série de la machine, sur le PC j'ai un serveur dhcp pour configurer tout ce qu'on peut être amené à connecté à la machine (imprimante wifi, ethernet; tablette, portable... etc)
 
La règle étant qu'une machine étant équipée du wifi, le SSID est son numéro de série ce qui évite les conflits et permet d'identifier la machine à laquelle on se connecte si plusieurs sont dans la même zone.
 
L'idée serait d'avoir le raspberry qui gère le point d'accès de façon automatique sans paramétrage, on le branche à une machine et hop, il reçoit son IP et démarre le wifi avec le bon SSID. Du coup tous les points d'accès sont identiques et la config est dynamique (mot de passe identique).
 
La machine avec serveur dhcp est un PC sous windows (xp ou seven)
 
Mon but actuellement est donc lorsque mon raspberry reçoit une adresse IP, de modifier la conf de hostapd pour modifier le SSID d'après le nom de la machine hébergeant le serveur DHCP.
 
Pour le moment je n'arrive qu'à récupérer son IP, l'idéal serait de pouvoir dans la requête dhcp récupérer son nom, alternativement de le récupérer après coup depuis son IP.
 
J'ai éventuellement la possibilité de créer une option sur mon serveur dhcp pour y mettre son nom, après, il faudrait que je la récupère dans les variables du script dhcpclient, mais si je peux le faire sans modifier le serveur dhcp, ce serait mieux.
 
Merci de votre aide.


Message édité par uncle buzz le 09-09-2014 à 14:19:09
Reply

Marsh Posté le 09-09-2014 à 14:17:22   

Reply

Marsh Posté le 12-09-2014 à 12:57:07    

Avec un code de ce style (fait à l'arraché, pas taper :o ) tu peux récupérer ce que tu veux ?

tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68))' | grep Server-ID | awk -F: '{ print $2 }'


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 14-09-2014 à 11:42:54    

bardiel a écrit :

Avec un code de ce style (fait à l'arraché, pas taper :o ) tu peux récupérer ce que tu veux ?

tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68))' | grep Server-ID | awk -F: '{ print $2 }'



 
 
La solution de bardiel nécessite que tu es lancé cette commande avant d'avoir une addresse ip.
Sinon tu peux regarder  les fichiers *.lease dans /var/lib/dhclient, tu as une option dhcp-server-identifier.


Message édité par roondar le 14-09-2014 à 11:45:30
Reply

Marsh Posté le 14-09-2014 à 16:28:33    

:non: c'est pas forcément necessaire, lors du renouvellement du bail, ou du refresh  ça remonte aussi mais bien sur c'est pas immédiat
 
la solution du fichier dans /var marche pour presque tout les cas mais pas tous.


Message édité par goblin_rieur le 14-09-2014 à 16:29:42

---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Marsh Posté le 14-09-2014 à 17:05:30    

De plus mon code "fonctionne" (enfin après débug) après que tu aies déjà ton IP.
ça ne fait qu'écouter ce qu'il y a sur le réseau et en déduire le nom du DHCP qui parle en permanence.


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 15-09-2014 à 10:51:25    

Bonjour,
 
L'option dhcp-server-identifier est l'adresse IP du serveur dhcp, qu'on reçoit lors de l'attribution du bail dhcp. Je sais la récupérer au moment de l'attribution du bail dhcp, mais je ne sais pas retrouver le nom du serveur avec son IP.
 
J'ai contourné mon problème en ajoutant une option dont je n'ai pas besoin sur le serveur dhcp, ce que j'aurai préféré éviter mais je ne trouve pas de solution simple : on peut transmettre le nom du serveur tftp, par défaut sur mon serveur dhcp, c'est le nom du serveur lui même (ce que je recherche) donc je récupère cette variable à l'attribution du bail dhcp et je corrige ma config hostapd si besoin et redémarre le service (si le SSID a changé).
 
Merci pour vos idées, si vous en avez d'autres je suis preneur, car ma solution fonctionne mais est bancale (configuration du serveur dhcp, option dhcp utilisée incorrectement, et un autre serveur dhcp ne prendra peut-être pas le nom du serveur par défaut donc config manuelle supplémentaire...)


Message édité par uncle buzz le 15-09-2014 à 10:52:58
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed