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

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) :

tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68))'
09:08:28.387377 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    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)
          Client-Ethernet-Address b8:27:eb:38:59:9b (oui Unknown)
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Requested-IP Option 50, length 4: 192.168.10.45
            Hostname Option 12, length 11: "raspberrypi"
            Parameter-Request Option 55, length 14:
              Subnet-Mask, BR, Time-Zone, Default-Gateway
              Domain-Name, Domain-Name-Server, Option 119, Hostname
              Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
              NTP
            END Option 255, length 0
            PAD Option 0, length 0, occurs 22
09:08:29.388620 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 338)
    192.168.10.251.bootps > 192.168.10.45.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 310, xid 0xde09ff3b, Flags [none] (0x0000)
          Your-IP 192.168.10.45
          Client-Ethernet-Address b8:27:eb:38:59:9b (oui Unknown)
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Offer
            Server-ID Option 54, length 4: dhcp.mydomain.tld
            Lease-Time Option 51, length 4: 86400
            Subnet-Mask Option 1, length 4: 255.255.255.0
            BR Option 28, length 4: 192.168.10.255
            Time-Zone Option 2, length 4: -28800
            Default-Gateway Option 3, length 4: 192.168.10.254
            Domain-Name Option 15, length 10: "mydomain.tld"
            Domain-Name-Server Option 6, length 4: 192.168.10.254
            Netbios-Name-Server Option 44, length 4: 192.168.10.100
            NTP Option 42, length 4: 192.168.10.229
            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)

Merci

je comprends pas trop ton problème, les noms de machine sont censés être statiques, ce qui permet d’allouer dynamiquement les adresses ip sans problème, alors je vois pas pourquoi écrire un tel script. à mon avis juste un peu de config est largement suffisant.
sachant qu’avec un serveur comme dnsmasq les hostname dhcp sont automatiquement ajoutés au relais dns.

my 2cent ^^

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é 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 requete 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.
Edité le 09/09/2014 à 12:39

je pense pas qu’obtenir les hostname soit possible pour les clients dhcp, uniquement le serveur.

peut etre tenter un whois sur l’ip du serveur pour obtenir son nom s’il fait aussi relais dns
Edité le 09/09/2014 à 14:05

cela dit ton idée me parait curieuse. le ssid peut être simplement unique au pi, ce qui éviterais en passant de devoir enregistrer de nouveaux réseaux pour le même ap. et le pi est assez véloce pour faire tout ce que ton pc devrais faire.

J’ai trouvé un moyen de tricher, mon serveur dhcp envoie par défaut son nom en tant que serveur TFTP si j’active l’option tftp… c’est pas propre, mais ça fait ce que je veux…

Sinon pas de serveur DNS d’installé non

il s’agit pas d’un “vrai” serveur dns mais d’un relais, tu peux vérifier en regardant l’adresse de serveur dns que donne ton serveur dhcp à tes clients, si ce sont celles publiques de ton fai ou la sienne.

il s’agit d’un réseau local non connecté, juste un PC, une imprimante wifi, un portable parfois, une tablette d’autres… Le SSID doit être unique car il se peut que plusieurs “systèmes” se côtoient, le choix du numéro de série était le plus simple, et comme c’est déjà le nom du PC, il “suffit” que le raspberry y accède…

L’idée est d’avoir une image disque pour la carte sd, et on peut créer simplement un nouveau point d’accès pour un nouveau système juste en duplicant la carte sd, aucune config à faire il suffit de le brancher à un PC et il s’adapte automatiquement.