host Command liefert leider keinen Hostname fuer Clients die ihre IP per DHSP von einer FritzBox beziehen

  • Fuer raspiBackup muss ich immer wieder eine Raspberry bei mir starten um entweder Problemberichte die per github reingekommen sind nachzustellen oder Tests von neuen Funktionen vorzunehmen.


    Die Raspberry die ich dazu nutze holt sich ihre IP per DHCP von meiner Fritzbox und ist leider immer mal wieder nach laengerer Downtime verschieden.


    Deshalb habe ich ein kleines Script geschrieben welches in meinem Homenetz mir alle IPs meiner aktiven Raspberries anzeigt. Das funktioniert auch soweit ganz gut - nur liefert der host Befehl nur fuer meine Raspberries die eine statische IP Definitionen haben den Hostname fuer die Anzeige zurueck. Deshalb habe ich das Script mittlerweile so erweitert dass man mit einer ConfigDatei eine Beschreibung fuer eine MAC Addresse erstellen kann und somit die jeweilige Raspberry identifizieren kann.


    Das sieht dann z.B. wie folgt aus - die IP 192.168.0.162 ist eine Testraspberriy.

    Code
    findRaspis.sh 
    Scanning subnet 192.168.0.0/24 for Raspberries ...
    
    IP address      Mac address       Hostname (Description)
    192.168.0.10    b8:27:eb:3c:94:90 idefix
    192.168.0.12    dc:a6:32:8f:28:fd asterix
    192.168.0.162   b8:27:eb:f7:28:f5 Unknown (rpi3)
    192.168.0.8     b8:27:eb:b4:e8:74 troubadix

    und wie man sieht steht beim rpi3 nur die manuell konfigurierte Beschreibung zu der jeweiligen Mac die ja unabhaengig von der DHCP Leasetime und der zugehoerigen IP Adresse ist.


    Ich wuerde aber gerne das Unknown durch den Hostnamen ersetzt haben. Die Images der Raspberries haben immer sprechende Hostnamen wie bullseye-light oder auch bullseye-desktop


    Der Befehl der ausgefuehrt wird um den Hostnamen zu erhalten ist host <ipAddress> . Leider sehe ich in meiner Fritte den Hostnamen auch nicht :( . Hat jemand eine Idee wie ich den Hostname auch fuer DHCP Clients rausbekommen kann?


    PS: Der Vollstaendigkeit halber: Das vollstaendige Script steht hier

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:
  • Der Befehl der ausgefuehrt wird um den Hostnamen zu erhalten ist host <ipAddress> . Leider sehe ich in meiner Fritte den Hostnamen auch nicht :( . Hat jemand eine Idee wie ich den Hostname auch fuer DHCP Clients rausbekommen kann?

    Geht es mit arp?


    Code
    ping -c 3 -t 5  192.168.0.162
    
    arp -a | grep -E --ignore-case 'b8:27:eb|dc:a6:32|e4:5f:01|28:cd:c1'

    :rolleyes: sudo !!

  • Leider sehe ich in meiner Fritte den Hostnamen auch nicht :( . Hat jemand eine Idee wie ich den Hostname auch fuer DHCP Clients rausbekommen kann?

    Wenn Du systemd-networkd benutzt und die systemd-Version >/= 223 ist, kannst Du in der *.network-Datei mit einer Section [DHCPV4], das dort konfigurieren:

    Code
    [Network]
    DHCP=ipv4
    
    [DHCPV4]
    SendHostname=true
    Hostname=<hostname>

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Geht es mit arp?

    Code
    arp -a | grep -E --ignore-case 'b8:27:eb|dc:a6:32|e4:5f:01|28:cd:c1'
    asterix (192.168.0.12) at dc:a6:32:8f:28:fd [ether] on wlp3s0
    troubadix (192.168.0.8) at b8:27:eb:b4:e8:74 [ether] on wlp3s0
    ? (192.168.0.164) at dc:a6:32:cb:d9:7e [ether] on wlp3s0
    idefix (192.168.0.10) at b8:27:eb:3c:94:90 [ether] on wlp3s0

    Da steht leider nur ein Fragezeichen :(

    Wenn Du systemd-networkd benutzt und die systemd-Version >/= 223

    Code
    systemd --version
    systemd 247 (247.3-7+rpi1+deb11u1)
    +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified
    
    ps -ef | grep dhcp
    root       535     1  0 09:59 ?        00:00:00 /usr/sbin/dhcpcd -b -q
    pi        1357  1343  0 10:06 pts/0    00:00:00 grep --color=auto dhcp

    Ist ein bullseye small image was offensichtlich den dhcpcd nutzt. Da muss ich mich mal schlau machen wie man den systemd stattdessen nutzen kann :)


    Ist aber irgendwie dumm das der Hostnamen nicht standardmaessig beim DHCP Request mitgeliefert wird :(

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:
  • Ist aber irgendwie dumm das der Hostnamen nicht standardmaessig beim DHCP Request mitgeliefert wird

    Eigentlich sollte der dhcpcd den Hostnamen auch an den DHCP-Server (deine FB) senden.


    Evtl. mit dhcpdump auf deinem PI testen:

    Code
    sudo dhcpdump -i eth0

    und danach ein "sudo systemctl restart dhcpcd". Jetzt schauen ob es eine Ausgabe von dhcpdump gibt und welche Optionen dort gezeigt/verwendet werden.

    Code
    12 (Host name)
    15 (Domainname)

    EDIT:


    BTW: Teste mal mit dem tool kdig oder mit dem tool dig:

    Code
    kdig -x 192.168.0.164 +short @192.168.0.1
    dig -x 192.168.0.164 +short @192.168.0.1

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • danach ein "sudo systemctl restart dhcpcd".

    Interessant. Der DHCP Request enthaelt den Hostnamen (12). Der Reply enthaelt den DNS (6) und den Domainnamen (15)


    Ist also eigentlich alles ok.


    mit dem tool dig:

    Code
    for ip in 192.168.0.103 192.168.0.158 192.168.0.164; do echo $ip; dig -x $ip +short @192.168.0.1; done 
    192.168.0.103
    raspberrypi-bullseye-desktop.fritz.box.
    192.168.0.158
    raspberrypi.fritz.box.
    192.168.0.164
    raspberrypi4-8GB.fritz.box.
    raspberrypi-bullseye-desktop-2.fritz.box.

    D.h. ich koennte auch dig nehmen um den Hostnamen zu werhalten statt arp. Ist aber irgendwie komisch dass arp den Hostnamen nur liefert bei statischer IP.


    Dabei faellt mir gerade was auf im DHCP Replay: Die Server haben einen festen DNS, die FB eingetragen. Alle Systeme die per DHCP ihre IP bekommen mein PiHole als DNS zugewiesen.


    Code
    for ip in 192.168.0.103 192.168.0.158 192.168.0.164; do echo $ip; dig -x $ip +short @192.168.0.8; done 
    192.168.0.103
    192.168.0.158
    192.168.0.164

    Sprich es liegt daran dass mein PiHole keine Hostnamen zurueckgibt :wallbash:


    D.h. ich koennte den Code jetzt so aendern dass immer der Router und nicht Pihole nach dem Hostnamen gefragt wird :) .ich wuerde dann erst mal pruefen ob beim arp der Hostname zurueckkommt und wenn nicht nehme ich an dass das DefaultGW der DNS ist und frage den per dig nach dem Hostnamen.


    Interessant ist in diesem Zusammenhang dass die IP .164 zwei Hostnamen zurueckbekommt. Klar ist der Hostname oft unterschiedlich da ich auch unterschiedliche Images auf ihnen starte. In diesem Falle ist der erste Name der richtige Hostname. D.h. ich nehme falls mehrere Hostnamen zurueckgegeben werden immer den ersten.


    Vielen Dank fuer Eure Hilfe. Manchmal ist es doch ganz gut mal einen tcpdump anzuschmeissen und nachzusehen was genau ueber die Leuting geht denn daurch ist mir erst aufgefallen dass PiHole seine finger im Spiel hat :blush:

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:
  • Welche Pakete muss man denn zusätzlich installieren für die o.a. Befehle?

    Auf keinem meiner Pis ist nmap, dhcpdump oder dig verfügbar?


    Gruss

  • Auf keinem meiner Pis ist nmap, dhcpdump oder dig verfügbar?

    Siehe auch:

    Code
    apt-cache show knot-dnsutils dhcpdump dhcping

    kdig wenn Du auch DoT (Port 853) und DoH (Port 443) mit den kompetenten DNS-Servern testen willst:

    Code
    :~ $ kdig +tls heise.de @1.1.1.1 | grep -i from
    ;; From 1.1.1.1@853(TCP) in 66.2 ms
    Code
    :~ $ kdig +https heise.de @1.1.1.1 | grep -i from
    ;; From 1.1.1.1@443(TCP) in 80.6 ms

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Dabei faellt mir gerade was auf im DHCP Replay: Die Server haben einen festen DNS, die FB eingetragen. Alle Systeme die per DHCP ihre IP bekommen mein PiHole als DNS zugewiesen.


    Sprich es liegt daran dass mein PiHole keine Hostnamen zurueckgibt

    Die A-records für die Hostnamen sind bei der FritzBox registriert worden und nicht beim PiHole, oder? D. h. für ein reverse-lookup müsste der PiHole die FritzBox fragen. Könnte man den PiHole so konfigurieren, dass er das macht?


    Mein dnsmasq im (W)LAN macht das (... d. h. er fragt die FritzBox, die u. a. auch in seiner Konfiguration eingetragen ist) . Z. B.:

    Code
    dig -x 192.168.178.40 +short @127.0.0.1
    <richtiger-hostname als A-record der FB>.

    Und das unabhängig davon, ob die IPv4-Adresse per dhcp zugewiesen ist oder statisch bzw. ohne dhcp.


    BTW: arp ist kein dns-tool, sondern ein tool/Programm für den arp-cache konfigurien/anzeigen/manipulieren/ändern/fehlersuchen, ...

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Hast du die Fritzbox in Pihole unter "Settings - DNS - Use Conditional Forwarding" konfiguriert?

    Funktioniert hier genau so: Pihole als DNS, dort als DHCP-Server eingetragener OpenWRT-Router wird für lokales Netz abgefragt.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited 2 times, last by llutz ().

  • Perfekt. ich wollte gerade anfangen und den Code wie oben geschrieben anpassen. Aber mit Conditional forwarding funktioniert es perfekt :bravo2:

    Code
    findRaspis.sh
    Scanning subnet 192.168.0.0/24 for Raspberries ...
    
    IP address      Mac address       Hostname (Description)
    192.168.0.8     b8:27:eb:b4:e8:74 troubadix (NetzwerkRaspi)
    192.168.0.10    b8:27:eb:3c:94:90 idefix (HomeAutomation)
    192.168.0.12    dc:a6:32:8f:28:fd asterix (LAN Server)
    192.168.0.158   dc:a6:32:ff:4f:9a raspberrypi.fritz.box (cm4)

    Das sollte vielleicht auf der verlinkten Seite von PiHole eingepflegt werden ...

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:

    Edited 4 times, last by framp ().

  • Irgendwie funktioniert der Update noch nicht so ganz.


    Eben habe ich mal eine Raspi3 mit einer SD Karte gestartet und danach dieselbe SD Karte in eine Raspi2 reingesteckt (andere MAC)


    Das Ergebnis:


    Man sieht dass

    Code
    192.168.0.130   b8:27:eb:d6:a6:c9 raspberrypi3.fritz.box (rpi2)

    aber den Hostnamen

    Code
    raspberrypi-bullseye-desktop

    hat :conf:

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:
  • Das sieht fuer die IP .130 besser - sprich aktueller aus . als was beim host Command als Ergebnis geliefert wird :conf:

    Hast Du schon Deine Raspberries gesichert :fies:

    Bei mir erledigt das raspiBackup vollautomatisch jede Woche :shy:
  • Mit dem o.g. Befehl wird aktiv gepingt. Wenn man dem die Option -sn mitgeben würde, käme es aus dem Cache. Vielleicht hätte ich besser nach beiden Befehlen und in der richtigen Reihenfolge, fragen sollen, also erst mit und dann ohne -sn. :blush:



    //Edit

    Das hatte ich falsch in Erinnerung: -sn macht keinen Portscan. Das war der Unterschied.