OPNsense Forum

International Forums => German - Deutsch => Topic started by: Crocogator on September 07, 2019, 10:54:53 AM

Title: Pi-Hole als System-DNS
Post by: Crocogator on September 07, 2019, 10:54:53 AM
Hallo,

Irgendwie hänge ich mit meiner Sense an einem ,,Denk"-Problem fest:

Setup: Ich habe einen Raspi 4 mit dem Pi-Hole (v4.3.1) und lokalem Unbound Service per LocalHost an einem separaten Interface (OPT1, igb2) der Sense (v20.1.a_120-amd64) angeschlossen. Pi-Hole soll sämtliche DNS Anfragen der Sense ,,bearbeiten". Dazu sind auf der Sense ,,Services: Dnsmasq DNS: Settings" sowie ,,Services: Unbound DNS: General" disabled. Als einziger DNS Server ist im Setup der Sense die IP-Adresse des Pi-Holes unter ,,System: Settings: General" eingetragen. Die beiden Optionen unter ,,DNS server options" sowie ,,Gateway switching" sind nicht ,,angekreuzt". Für die DHCP IP-Adressenmetrik ist die MAC-ID des Raspis als statistisches Interface Mapping unter ,,Services:DHCPv4: [OPT1]" eingetragen. Raspi kann sämtliche Netze (LAN, WAN) per Ping erreichen, ebenfalls wird Raspi aus diesen per Ping erreicht.

Problem: Die Sense IGNORIERT für eigene DNS-Anfragen den als System DNS eingetragenen Pi-Hole:

root@OPNsense:~ # host intel.de 192.168.10.9
Using domain server:
Name: 192.168.10.9
Address: 192.168.10.9#53
Aliases:

Host intel.de not found: 2(SERVFAIL)

Grundsätzlich werden allerdings (auch nicht eingetragene) externe DNS-Server erreicht:

root@OPNsense:~ # host intel.de 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

intel.de has address 13.91.95.74
intel.de mail is handled by 100 mtab.intel.com.

Wird hingegen ein externer DNS-Server (z.B. 8.8.8.8) unter ,,System: Settings: General" eingetragen, dann wird die DNS-Anfrage ebenfalls korrekt aufgelöst:

host intel.de
intel.de has address 13.91.95.74
intel.de mail is handled by 100 mtab.intel.com.

Wird der Pi-Hole im Setup unverändert an einem LAN-Switch des Routers (FB) angeschlossen und als DNS-Server verwendet, so funktioniert alles prima, Pi-Hole tut also was er soll.

Auch wenn der Raspi an de Sense-Interface angeschlossen ist, so kann auf der SSH-Console des Raspis sowohl auf die Sense als auch auf das Internet zugegriffen werden. Auch funktioniert die DNS-Auflösung:

xxx@RaspiPi4:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.9  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::dea6:32ff:fe07:XXXX  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:07:XX:XX  txqueuelen 1000  (Ethernet)
        RX packets 82766  bytes 10538900 (10.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86669  bytes 14082819 (13.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Lokale Schleife)
        RX packets 512837  bytes 123663752 (117.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 512837  bytes 123663752 (117.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

xxx@RaspiPi4:~ $ route -n
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.1    0.0.0.0         UG    0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
xxx@RaspiPi4:~ $ cat /etc/resolv.conf
# Dynamic resolv.conf file for glibc resolver generated by resolvconf
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search localdomain

Auch die lokale DNS-Auflösung auf dem an der Sense angeschlossenen Raspi funktioniert:

xxx@RaspiPi4:~ $ dig intel.de @127.0.0.1 -p 5353

; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> intel.de @127.0.0.1 -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19619
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;intel.de.                      IN      A

;; ANSWER SECTION:
intel.de.               3600    IN      A       13.91.95.74

;; Query time: 198 msec
;; SERVER: 127.0.0.1#5353(127.0.0.1)
;; WHEN: Fr Sep 06 20:21:16 CEST 2019
;; MSG SIZE  rcvd: 53

Warum verweigert die Sense den als System-DNS eingetragenen Pi-Hole? Wo ist der Wurm drin?
Title: Re: Pi-Hole als System-DNS
Post by: dsecure on September 08, 2019, 04:07:13 AM
Moin,

Du musst oder solltest sämtlichen DNS Traffic auf das Pi-Hole umleiten, per FW Rules versteht sich.

schau dir mal den Link an -> https://forum.opnsense.org/index.php?topic=9245.msg41626#msg41626

Title: Re: Pi-Hole als System-DNS
Post by: Crocogator on September 08, 2019, 01:03:18 PM
Moin moin dsecure,

Zunächst einmal Danke für den Link, allerdings geht s so nicht bei mir:
Sobald ich nur den Pi-Hole als System-DNS eintrage, ist alles andere egal, die Sense macht keine DNS-Abfragen mehr!
Erst mal vielen Dank, gibt es weitere Vorschläge?
Title: Re: Pi-Hole als System-DNS
Post by: dsecure on September 08, 2019, 06:05:00 PM
Wie hast du die FW Regeln definiert, es wundert mich das einerseits der Raspi rauskommt und DNS resolven kann aber die Sense nicht über den Raspi.

Hast du auch mal versucht den raspi ohne sense zu betreiben, worauf ich hinaus will ist, dass evtl. der Pi für sich selbst resolven kann aber ein Problem mit der Weiterreichung an den Client besteht.
Title: Re: Pi-Hole als System-DNS
Post by: Crocogator on September 08, 2019, 07:41:28 PM
Bezüglich der Regeln bin ich gerade dabei, diese komplett neu zu gestalten und zu testen. Wird noch etwas dauern.

Ohne Sense (z.B. an einer Fritzbox) funktioniert der Pi problemlos.

Ich vermute allerdings auch, das die vom Pi ausgelösten Unbound DNS Requests (via LocalHost auf dem Pi) nur von der Sense durchgereicht werden (Pi kann ja DNS korrkt auflösen), aber NICHT für die Sense-interne Namensauflösung verwendet werden. Damit bekommt der Pi seine korrekte DNS-Auflösungsantwort, aber die Sense benutzt die Antwort nicht.

Paket Transport Weg:

LAN-Client (Windows) --> DNS Router (Fritzbox) --> DNS Gateway Sense (via DHCP) --> Forwarded to Pi@OPT1 Port --> Pi-Hole Filter --> Pi@127.0.0.1 (Unbound) --> DNS Standard-Gateway Sense für UDP-Port 53 Pakete --> Redirektion to VPN Tunnel --> Tunnelaustritt beim VPN Provider --> authoritative/Root Server DNS Server Kontakt (und dann die Kette wieder retour).

Ich versuche das Problem weiter zu verstehen ...
Title: Re: Pi-Hole als System-DNS
Post by: dsecure on September 08, 2019, 09:45:39 PM
Oke, hat es einen Grund warum du einen Fritz DNS Router vor der Sense hast oder verbindest du 2 Netzwerke via VPN miteinander?

Verstehe nicht den Grund das es kompliziert sein muss, würde sowie so keine Fritzbox hinter der FW betreiben...

Wäre das nicht einfacher?
Client -> Sense -> PiHole -> VPN/Fritz -> ISP    (So habe ich es gelöst)

oder per VPN Einwahl:
Client -> GW/VPN -> Sense -> PiHole -> Sense -> GW

mach mal einen nslookup bzw. dif vom client, der Sense und vom Pihole selbst, damit du sehen kannst wer deine DNS auflöst.

Es gibt eine Einstellung, die es verbietet einen override zu machen bei der DNS konfig, bin gerade beschäftigt aber ich kann gerne nach her nochmal nachsehen ob ich die Einstellung finde.


Edit:

Bei mir liefert ein  -> dig intel.de @127.0.0.1 -p 53                                   
; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> intel.de @127.0.0.1 -p 53
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44143
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;intel.de.                      IN      A

;; ANSWER SECTION:
intel.de.               900     IN      A       13.91.95.74

;; Query time: 412 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: So Sep 08 21:51:59 CEST 2019
;; MSG SIZE  rcvd: 53


Ich denke dein Raspi macht das was er soll, das Problem müsste wo anders liegen

Edit2:

Dein Dnsmasq auf der Sense hast du als forwarder konfiguriert?
Title: Re: Pi-Hole als System-DNS
Post by: Crocogator on September 09, 2019, 02:59:12 PM
So, das Testen der Sense hat doch sehr viel mehr Zeit gefressen als gedacht, aber nun habe ich zumindest jeden Menüeintrag einmal gesehen ...

Mein zentrales Problem scheint zumindest ansatzweise gelöst, aber der Reihenfolge nach:

Zur Architektur nochmals Folgendes:
Damit sollte auch die Frage geklärt sein, wer den DNS-Server stellt: Es ergibt sich hier die per DHCP aufgebaute Zuordnungskette:Wesentlich, die entscheidende Einstellung war (u.a.):
Unter Firewall: NAT: Port Forward:
Interface: LAN, Protocol: TCP/UDP, Destination Invert, Destination : LAN address, Dest Port Range : DNS, Redirect target IP : 127.0.01 (verstehen ich allerdings NOCH nicht), Redirect target port: DNS.Unter Setup ,,System:Settings:General":Pi-Hole als einzigen DNS Server mit Gateway ,,none" eintragen.
DNS-Server Options: Kreuz machen bei ,,do not use the local DNS ...", Rest ungekreuzt. Damit verschwindet LocalHost als Namensauflöser (DNSMASQ oder Unbound).

Dnsmasq ist im Forward-Mode. Folgende Optionen sind gekreuzt:Nachdem das jetzt läuft, müssen noch die restlichen Firewall Regeln aktiviert bzw. geprüft werden.