DNSMASQ on only two defined subnets

Hallo Community,

zuerst kurz zu meinem Setup:
Ich habe PiHole in einer VM installiert, die in meinem LAN ist mit der IP 192.x.x.x .
Nun habe ich einen OpenVPN Server auf einer seperaten VM erstellt, um auf mein Netzwerk aus der Ferne zugreifen zu können. Als netten Nebeneffekt pushe ich darüber meinen PiHole als neuen DNS-Server. Der OpenVPN Server erstellt ein eigenes Subnetz mit dem IP Bereich 10.x.x.x . Nach langem Suchen habe ich herausgefunden, dass der PiHole bzw DNSMASQ nur auf bestimmte Subnetze reagiert. Ich habe nun eingestellt, dass der PiHole alle Anfragen von allen Interfaces und Quellen akzeptiert, dies möchte ich gerne etwas einschränken, nämlich auf die beiden Subnetze des LANs und des OpenVPN Servers. Ich habe gelesen, dass man in der Datei /etc/dnsmasq.conf eine Option namens listen-address dafür verwenden kann. Allerdings ist der PiHole ja nicht im OpenVPN Subnetz und hat somit auch keine IP aus diesem Netz zugewiesen, es wird lediglich vom Router zwischen diesen beiden geroutet.
Kann ich die gewünschte Einstellung trotzdem irgendwie erreichen?
Die Anfragen der OpenVPN Clients möchte ich ungern durch den Server maskieren lassen.

Vielen Dank für die Hilfe
Peter

Wie puschst Du denn Pi-hole als DNS-Server, wenn er in Deinem OpenVPN-Netz überhaupt keine IP-Adresse hat, sprich: überhaupt nicht erreichbar ist?

Normalerweise würde das ein Eintrag in /etc/openvpn/server.conf erledigen, der z.B. ähnlich aussehen könnte wie push "dhcp-option DNS 10.x.x.x", wo 10.x.x.x die Adresse Deines Pi-holes wäre. Geht aber nur, wenn Pi-hole auch eine solche Adresse hat.

Lass uns mal schauen, welche IP-Adressen Dein Pi-hole denn tatsächlich verwendet, indem Du folgendes Kommando auf einer Pi-hole-Konsole eingibst:
ip -4 a

Nur für die dadurch aufgelisteten Interfaces (z.B. lo, eth0, tun0) und IP-Adressen macht eine Anpassung der dnsmasq-Konfiguration auf Deinem Pi-hole überhaupt Sinn.
Dafür solltest Du aber nicht /etc/dnsmasq.conf verwenden, sondern besser eine neue Datei unter /etc/dnsmasq.d/ anlegen, z.B.

sudo nano /etc/dnsmasq.d/99-listen-address.conf

# Nur Anfragen an folgende Adressen berücksichtigen
listen-address=::1,127.0.0.1,192.168.1.16

Die Loopback-Adressen sollten bei listen-address explizit angegeben werden, da dnsmasq diese nur unter bestimmten Umständen automatisch einbindet. Sicherheitshalber habe ich deswegen auch die IPv6-Loopback-Adresse mit aufgenommen, auch wenn ich mich hier sonst auf IPv4 beschränkt habe. Wenn Du auf Deiner Maschine nur eine IP-Adresse pro Interface (z.B. 192.168.1.16 auf eth0) zugeordnet hast, wäre der obere Eintrag in der Wirkung identisch zu interface=eth0 - ohne die Loopback-Interfaces wäre er es nicht.

Tauchen die von Dir gewünschten Subnetze im Pi-hole nicht auf, kann er den Zugriff darauf natürlich auch nicht beschränken.

Hey Bucking_Horn,

Mein piHole hat die IP 192.x.x.40. Ich kann den piHole anpingen von meinem VPN-Client mit der IP 10.x.x.2, da ich mit meinem Router zwischen den beiden Netzen route. Ich habe also in OpenVPN ein

gemacht und das funktioniert auch, solange der PiHole alle Origins zulässt. Der PiHole selber ist natürlich nicht in meinem VPN Netz, er nutzt die Route meines Routers, der die Pakete zum VPN-Server weiterleitet. Dieser kennt den Client dann ja.
Da der PiHole aber selber nicht in dem Subnetz 10.x.x ist, kann ich ja auch nicht die

Option nehmen, dies würde ich aber, falls möglich doch gerne einschränken.
Da ich aber die Datenpakete von dem VPN CLients nicht maskiere, also nicht mit der IP des Servers versehe, sieht der PiHole bzw DNS Masq ein anderes Subnetz und antwortet normalerweise nicht, nur eben wenn alle Origins zugelassen werden. Ein Anderer Weg ist mir bisher auch noch nicht bekannt.

Danke für die Hilfe
Peter

Tauchen denn im Query Log Deines Pi-holes die Anfragen einzelner Clients auf, oder ist Client immer nur der Router?

Im ersten Fall, also bei einzelnen Clients, würde ich einfach mal ausprobieren, eine listen-address für das 10er-Netz zu setzen.

Wenn das nicht geht, müsstest Du entweder Deinen Router den DNS-Verkehr an Pi-hole weiterleiten lassen und entsprechend Deinen Router als DNS-Server ins OpenVPN puschen, oder Pi-hole in das 10er-Netz integrieren, z.B. über ein zusätzliches, virtuelles Interface, z.B. nach dieser Beschreibung Connect Your Raspberry Pi To Multiple Networks