Fritzbox, Pihole und Client DNS-Konfiguration; auch IPv6

omavoss

Rear Admiral
Registriert
März 2017
Beiträge
6.021
Hallo alle;
ich bin gerade etwas durch den Wind und bitte um "einen Tritt in die Seite".

Der Pihole macht den DNS-Server im LAN. In der Fritzbox ist bei den Zugangsdaten unter DNS-Server der Pihole eingetragen, ebenso unter IPV4-Einstellungen bei DHCP-Server als lokaler DNS-Server. In den LAN-Clients ist unter DNS-Server-Adresse die Adresse der Fritzbox eingetragen. Alles sowohl für IPv4 als auch für IPv6. Das funktioniert auch alles wie gewünscht.

Nun suche ich eine Möglichkeit, mir von einem Client im LAN den gerade benutzten *sekundären* DNS-Server anzeigen zu lassen. Mir ist klar, dass "ipconfig -all" den *primären* DNS-Server anzeigt, hier in diesem Falle meine Fritzbox. Ich möchte aber gern sehen, welchen Weg die DNS-Anfragen im LAN nehmen. Whois, tracert, nslookup zeigen mir aber nicht die von mir gewünschte Information.

Im Augenblick meine ich, dass die DNS-Anfrage vom Client aus folgenden Weg geht:
Client -> Fritzbox -> Pihole -> Google DNS, weil im Pihole so konfiguriert -> weite Welt. Ich bin mir aber dessen nicht völlig sicher.

Welches Tool kann ich wie verwenden, um zu sehen, ob das DNS-Routing wirklich ordnungsgemäß funktioniert, und das mit beiden IP-Protokollen? Muss die IPv6-Adresse des Pihole unter DNSv6-Server im Heimnetz eingetragen werden? Wie müssen die ULA-Einstellungen für IPv6 in der Fritzbox aussehen?

Danke und viele Grüße.
 
Hi,

vielleicht die BIND Tools installieren (sofern kein Linux vorhanden) und via 'dig +trace' schauen, wie die DNS Delegation abläuft.

Andernfalls via Wireshark den DNS-Verkehr anschauen, da siehst du in jedem Fall, wie/wo/was spricht.

Hast du es allerdings so konfiguriert, wie beschrieben (also u.a. dass die Fritzbox allein den Pihole als Forwarder eingetragen hat), sollte es genau so funktionieren.

PS: Wobei die Aussage "Pihole macht den DNS-Server im LAN" genau genommen dann nicht ganz korrekt ist, wenn die Fritzbox sich selbst als Nameserver via DHCP Option 6 an die Clients verteilt. Der Pihole spielt hier Forwarder und zwar für die Anfragen, für welche die Fritzbox selbst nicht zuständig ist (also in der Regel alles außer deiner lokalen Domain). Das ist grundsätzlich auch vollkommen in Ordnung - nur als Hinweis am Rande ;)
 
Zuletzt bearbeitet:
@iSource:
Hallo,
ich habe jetzt auf einem Linux-Client im LAN die dnsutils installiert und den von Dir genannten Befehl "dig +trace" aufgerufen.

Es werden eine ganze Reihe von Zeilen etwa wie "178480 IN NS c.rootservers.net" ausgegeben, darunter vermutlich ein Zertifikat (170498 IN RRSIG viele viele Ziffern und Buchstaben), dann darunter "Received 525 bytes from (hier steht die IP-Adresse meines Pihole#53) in 39 ms"

Dann kommen wieder einige Zeilen, etwa so: "51844 IN NS c.rootservers.net", dann wieder ein Zertifikat,
und als Letztes die Zeile:
"Received 1097 bytes from 192.33.4.12#53(c.root-servers.net) in 105 ms."


Alles vom Bildschirm des Linux-Clients zum Windows-Client abgetippt, weil ich nicht weiß, wie man von der Linux-Konsole einen Inhalt per c&p in ein Browserfenster einfügen kann.

IPv4 scheint also wie gewünscht zu funktionieren.

Wie ist es aber nun mit IPv6?

Danke für den Tipp mit den dnsutils, vll. hast Du bitte noch einen Rat für die Kontrolle darüber, ob der DSN-Weg auch für IPv6 wie gewünscht funktioniert.

Viele Grüße.
Ergänzung ()

So, nun nochmal richtig vom Linux-Client eingefügt:

Code:
omavoss@antix1:~
$ dig +trace

;  DiG 9.10.3-P4-Debian  +trace
;; global options: +cmd
.            170489    IN    NS    a.root-servers.net.
.            170489    IN    NS    b.root-servers.net.
.            170489    IN    NS    c.root-servers.net.
.            170489    IN    NS    d.root-servers.net.
.            170489    IN    NS    e.root-servers.net.
.            170489    IN    NS    f.root-servers.net.
.            170489    IN    NS    g.root-servers.net.
.            170489    IN    NS    h.root-servers.net.
.            170489    IN    NS    i.root-servers.net.
.            170489    IN    NS    j.root-servers.net.
.            170489    IN    NS    k.root-servers.net.
.            170489    IN    NS    l.root-servers.net.
.            170489    IN    NS    m.root-servers.net.
.            170489    IN    RRSIG    NS 8 0 518400 20171230170000 20171217160000 46809 . cuAJ7FDvJFMwnnzkHQ/nBfCtJQzptJbVZI4Nyr9N8MEcNRNmQUKz8UJ5 ..................................................................................................................................................................................................................................................................................................zBAeeFG77HUSY6CbGCDh79IvcLQ7Dgt+0e1WGgUxJAWVttRopbSxhBHC ybhTaQ==
;; Received 525 bytes from 192.168.115.30#53(192.168.115.30) in 39 ms

.            518400    IN    NS    j.root-servers.net.
.            518400    IN    NS    m.root-servers.net.
.            518400    IN    NS    h.root-servers.net.
.            518400    IN    NS    l.root-servers.net.
.            518400    IN    NS    i.root-servers.net.
.            518400    IN    NS    k.root-servers.net.
.            518400    IN    NS    f.root-servers.net.
.            518400    IN    NS    g.root-servers.net.
.            518400    IN    NS    e.root-servers.net.
.            518400    IN    NS    d.root-servers.net.
.            518400    IN    NS    b.root-servers.net.
.            518400    IN    NS    c.root-servers.net.
.            518400    IN    NS    a.root-servers.net.
.            518400    IN    RRSIG    NS 8 0 518400 20180102170000 20171220160000 46809 . BM8mZKlfiZ6EVuIvcvVj+5VMiFC4o6OTTqLZ5QBZnf0dCeKtnbT8DfTL .....................................................................................................................................................................................................................................................................................................................................................................................................................................................dFW/NWK2IOUtzWPI4R+oiH1bkjt4y4uRbHgmvqbUQg0FrXpZ31iFW1Y4 MjaPhQ==
;; Received 1097 bytes from 192.33.4.12#53(c.root-servers.net) in 105 ms

omavoss@antix1:~
$

Ich habe die Zertifikate ein wenig anonymisiert, weil ich Unfug befürchte.
Nun noch IPv6 ...
Ergänzung ()

Hey alle, vor allem danke an @iSource!
Ich habe das Ganze hinbekommen, auch für IPv6. Ich hatte vorher in der Fritzbox unter Zugangsdaten lediglich die empfohlene Einstellung (Native IPv4-Anbindung verwenden) aktiviert, damit kann der Pihole nichts mit IPv6 anfangen. Die Aktivierung von "Native IPv6-Anbindung verwenden" hat es dann gebracht.

dig +trace gibt aus:

Code:
Received 525 bytes from 192.168.115.30#53(192.168.115.30) in 39 ms
...
...
...
Received 1097 bytes from 2001:500:2d::d#53(d.root-servers.net)  in 126 ms

wobei 192.168.115.30 mein Pihole ist.

Ich hoffe nun, dass das alles so in Ordnung geht und auch die IPv6-DNS-Abfragen über den Pihole laufen. So ganz sicher bin ich mir aber dabei immer noch nicht. Wenn jemand von euch da draußen noch Tipps hat, wie das Ganze zu prüfen ist, bitte immer her damit. Wireshark gucke ich mir noch an. Da sind ein Haufen undefinierbare Ausgaben, ich muss mich erstmal reinfitzen.

Viele Grüße.
 
Zuletzt bearbeitet:
Das Packet Capturing (z.B. mit Wireshark) sollte im besten Fall auf dem System stattfinden, auf welchem dein Pihole Service läuft. Vielleicht tust du dich auch mit tcpdump leichter (ist bei der ein oder anderen Linux Distributionen Default, also vorinstalliert). Leichter wird es, wenn zu dem Zeitpunkt nichts bzw. nur wenig anderes an Geräten und Systemen im Netzwerk rumfunkt ;)

Dann lässt du dir mit tcpdump -i <NIC> udp port 53 alles auf dem Pihole anzeigen, was DNS (Port 53) spricht. Für <NIC> trägst du natürlich entsprechend den Namen deiner Netzwerkschnittstelle ein, also zum Beispiel 'ens160' oder 'eth0'. Aussehen kann das dann wie folgt:

Code:
tcpdump -i ens160 udp port 53

Du kannst die Ausgabe auch als Datei schreiben lassen, damit du sie später mit anderen Werkzeugen durchsuchen kannst:

Code:
tcpdump -i ens160 udp port 53 -w my.dnscapture.pcap

Läuft das Capturing nun, setzt du auf einem anderen System eine DNS-Abfrage ab (auf Windows mit nslookup, auf Linux mit dig):
Code:
nslookup computerbase.de
Code:
dig computerbase.de ANY
Hinweis: 'ANY' bewirkt, dass er u.a. auch die AAAA Records abfragt. Außerdem solltest du für einen sauberen Test eine Namen abfragen, den du bisher nicht oder länger nicht abgefragt hast (Hintergrund: Resource Record TTLs, genaueres würde hier aber den Rahmen sprengen). 'computerbase.de' eignet sich daher vermutlich eher nicht ;)

Da die Clients wie du beschrieben hast via DHCP die Fritzbox als Nameserver verteilt bekommen, die Fritzbox jedoch deinen Pihole als Forwarder verwendet, solltest du in dem Moment sehen, dass dein Pihole diese Anfrage erhält und verarbeitet.


PS: Mal so ganz nebenbei bemerkt könntest du für eine erste, oberflächliche Kontrolle auf das WebUI des Pihole schauen. Dort sieht man ja auch ganz gut, ob AAAA Records (also IPv6) bearbeitet werden.
 
@iSource:
Großes Dankeschön für Deine Mühe!

Zunächst habe ich Deinen Tipp mit dem WebUI befolgt, in Wireshark muss ich mich noch einarbeiten. Tcpdump sollte also auf dem Raspi unter Raspbian laufen, richtig?

Hier ein Screenshot vom WebUI des Pihole. AAAA-Records werden offensichtlich verarbeitet.

Danke nochmal und viele Grüße.
Ergänzung ()

Hm,
tcpdump auf dem Raspi mit Pihole ist installiert, kommt aber ein Fehler:

Code:
pi@raspberrypi:~ $ tcpdump -i eth0 udp port 53 -w my.dnscapture.pcap
tcpdump: eth0: You don't have permission to capture on that device
(socket: Operation not permitted)
pi@raspberrypi:~ $

Ich habe als User pi nicht die ausreichenden Rechte. Was nun? Entweder ich muss "root" werden oder sudo ...

OK, mit sudo hat es funktioniert. Auch ein nslookup gestartet.

Code:
pi@raspberrypi:~ $ sudo tcpdump -i eth0 udp port 53 -w my.dnscapture.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

Nun kann ich tcpdump mit strg+c abbrechen, wie kann ich das mitgeschnittene Protokoll auswerten? Oder besser gesagt: wie kriege ich das mitgeschnittene File "my.dnscapture.pcap" zum Windows-Rechner, um es mit Wireshark auswerten zu können? WinSCP? Wo hat der Raspi das File "my.dnscapture.pcap" hingeschrieben?

Code:
pi@raspberrypi:~ $ sudo tcpdump -i eth0 udp port 53 -w my.dnscapture.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C282 packets captured
282 packets received by filter
0 packets dropped by kernel
pi@raspberrypi:~ $

Bitte weitere Hinweise, vielen Dank.

OK, hab das File gefunden, liegt unter /home/pi/ .


So, ein voraussichtlich letztes mal zum Thema:

Habe jetzt per WinSCP das File my.dnscapture.pcap nach Windows rüberkopiert und mit Wireshark geöffnet. Ich hänge hier noch einen Screenshot des Ergebnisses an und hoffe nun, dass alle DNS-Anfragen, egal ob IPv4 oder IPv6 über den Pihole laufen. Wenn es Einwände oder Hinweise gibt, bitte immer her damit!
 

Anhänge

  • 2017-12-21 12_03_30-Pi-hole Admin Console - MX5 5.1.3.2000 - max5.png
    2017-12-21 12_03_30-Pi-hole Admin Console - MX5 5.1.3.2000 - max5.png
    320,8 KB · Aufrufe: 485
  • 2017-12-21 13_57_28-my.dnscapture.pcap.png
    2017-12-21 13_57_28-my.dnscapture.pcap.png
    142,6 KB · Aufrufe: 445
Zuletzt bearbeitet: (Ergänzungen und typo)
Zurück
Oben