Virtueller Server + VPN + PiHole oder "Adblock" DNS?

Bitopium

Lt. Junior Grade
Registriert
Apr. 2021
Beiträge
476
Hallo zusammen,

ich habe einen gemieteten virtuellen Server mit root Rechten.
Ich habe dort schon OpenVPN für meine Clients (Handy, Laptop) konfiguriert um unterwegs darüber zu surfen.
In meinem Heimnetzwerk betreibe ich schon einen PiHole klassisch auf einem Pi.
Ich hätte nun gerne die PiHole Funktionalität auch mobil, deswegen überhaupt das VPN denn sonst ist der VPN Nutzen eh fragwürdig.

Ein VPN zu meinem Heimnetzwerk möchte ich aufgrund von Bandbreitenlimits und weil ich mein Heimnetzwerk bei längerer Abwesenheit ausschalte gerne vermeiden.
Nun habe ich mich ein wenig in PiHole als Docker Container eingelesen aber bin mir nicht sicher ob die out-of-the-box Lösung für mich funktionieren wird.

Auf meinem Server läuft ein nginx als Reverse Proxy für mehrere Services. Ich bin mir jetzt nicht sicher wie ich dort den PiHole Container integrieren müsste damit er nur aus dem VPN erreichbar ist, weil ins Netz sollte der natürlich nicht.

In dem Abschnitt wird auf Reverse Proxy ja explizit hingewiesen aber ich bin mir nicht sicher wie das im Endeffekt ausschauen soll.

Bevor ich damit spiele, hätte ich gern ein paar Meinungen von Euch zu meinem Vorhaben zu den folgenden Fragen:
  • Macht das Sinn? Wenn ja, hat das jemand schon mal gemacht? Wenn ja, wie würde ich das konfigurieren? Klar ist mir, dass ich den WebUI port entweder auf etwas Anderes als 80 setzen muss oder eine subdomain dafür brauche (was kein Problem wäre). Unklar ist was z.B. mit Port 53 ist und wie das dann mit /etc/resolv.conf bzw systemd-resolved zusammenspielt. Da trage ich dann einfach als DNS ein localhost:4000 oder Ähnliches ein?
  • Oder doch "einfach" einen DNS Anbieter mit ähnlicher Funktionalität wie Mullvad, Quad9, NextDNS usw wählen? Wie sind Eure Erfahrungen mit solchen Anbietern?

Vielen Dank,
Bitopium
 
Was ist das für ein Server (Windows, Linux, ...)?

Tipp:
Wenn Du z.B. Proxmox als Unterbau installierst & darauf dann einen (oder mehrere) Server/VMs, bist Du flexibel.
PiHole ist doch bestimmt Linux-(oder BSD-)basierend. Ob das z.B. auf einem Windows-Server läuft, weiß ich nicht. Mit WSL vielleicht. Per Hyper-V vermutlich auch machbar. Kostet aber RAM & CPU-Kraft.

Mit Proxmox (Linux-Basis "Debian") wärst Du flexibel, kostet aber ein bisschen Rechenkraft & RAM.
 
  • Gefällt mir
Reaktionen: Digitalzombie
Bitopium schrieb:
Auf meinem Server läuft ein nginx als Reverse Proxy für mehrere Services. Ich bin mir jetzt nicht sicher wie ich dort den PiHole Container integrieren müsste damit er nur aus dem VPN erreichbar ist, weil ins Netz sollte der natürlich nicht.
Vielleicht wird gar kein Reverse-Proxy dafür benötigt.
  • Zuerst Docker, dann darauf PiHole installieren & entsprechend konfigurieren
  • Schließlich die IP vom PiHole als DNS des Ubuntu-Servers (oder in deinem Smartphone) eintragen
Weitere Infos z.B. hier:
https://duckduckgo.com/?q=Ubuntu+Server+install+PiHole+in+Docker&t=ffab&ia=web

 
  • Gefällt mir
Reaktionen: Bitopium
Bitopium schrieb:
Auf meinem Server läuft ein nginx als Reverse Proxy für mehrere Services. Ich bin mir jetzt nicht sicher wie ich dort den PiHole Container integrieren müsste damit er nur aus dem VPN erreichbar ist, weil ins Netz sollte der natürlich nicht.
Den nginx sehe ich da auch nicht, um ehrlich zu sein. Die Weboberfläche des Piholes soll ja wohl auch nicht im Internet verfügbar sein. Über VPN kannst du die Konfiguration ja auch ohne Reverse Proxy jederzeit aufrufen.

Bitopium schrieb:
Macht das Sinn? Wenn ja, hat das jemand schon mal gemacht?
Ich betreibe einen PiHole in einem LXD Container, auch für meine VPN Clients. Einen Unbound gibts da auch noch. LXD bringt die iptables Regeln nicht so durcheinander, wie docker, da kann ich erheblich besser konfigurieren, welcher Container was darf. Außerdem wird IPv6 deutlich einfacher.
Ich hab noch ein DoT Frontend davor, falls man den PiHole DNS mal ohne VPN auf mobilen Clients nutzen will.

Bitopium schrieb:
Klar ist mir, dass ich den WebUI port entweder auf etwas Anderes als 80 setzen muss oder eine subdomain dafür brauche (was kein Problem wäre).
Was hat die Sub-Domain mit dem Port zu tun? Beides ist völlig unabhängig voneinander. Da der PiHole in einem Container läuft, kannst du natürlich Port 80 (und auch 53) nutzen. Problematisch wird das nur, wenn du eine ungeeignete Docker Vorlage nutzt, die mal wieder vorlaut alle Ports auch nach draußen exportieren will. Das kollidiert dann ggf. mit anderen Diensten. Mach es besser von Hand, dann hast du vollständige Kontrolle über die Konfiguration.

Bitopium schrieb:
Unklar ist was z.B. mit Port 53 ist und wie das dann mit /etc/resolv.conf bzw systemd-resolved zusammenspielt.
Warum soll das mit systemd zusammenspielen? Den DNS des Hosts würde ich nicht über den Pihole eines Containers laufen lassen.
 
riversource schrieb:
Über VPN kannst du die Konfiguration ja auch ohne Reverse Proxy jederzeit aufrufen
Ja, hast du recht. Damit muss ich das ja eh nicht im nginx eintragen.

riversource schrieb:
Was hat die Sub-Domain mit dem Port zu tun?
Ja, hat nicht wirklich was damit zu tun. Dachte nur falls ich die Web Oberfläche ins Internet hänge unter standard Port 80 bzw. 443. Aber hat sich mit dem Punkt davor ja dann auch erledigt.

riversource schrieb:
Warum soll das mit systemd zusammenspielen?
Naja ich dachte dass alle clients im VPN dann den DNS von dort beziehen? Aber ich glaube den Punkt habe ich dann nicht verstanden woher die Clients im VPN dann wissen welchen DNS (nämlich den localhost pihole) sie dann verwenden sollen.

Ich habe jetzt auch mal auf den Clients einfach dnsforge ausprobiert. Das teste ich jetzt mal ein wenig. Vielleicht muss ich mich damit ja dann gar nicht rumschlagen wenn die Performance passt und bin dann auch das VPN los...
Ergänzung ()

Tanzmusikus schrieb:
Schließlich die IP vom PiHole als DNS des Ubuntu-Servers (oder in deinem Smartphone) eintragen
Aber das müsste ich doch in der config vom systemd-resolved tun, richtig?
Ergänzung ()

riversource schrieb:
Kannte ich noch nicht. Danke
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tanzmusikus
Bitopium schrieb:
Aber das müsste ich doch in der config vom "systemd-resolved" tun, richtig?
Sorry, bin Anfänger in dem Gebiet. Ich hab Dir nur meine Idee(n) mitgeteilt.
Kann Dir leider keine validierten Hinweise oder Antworten bieten.

Bin selbst bei meiner 1. PiHole-Installation auf Proxmox (oder in TrueNAS Scale) noch in der Planung. 😉

P.S.
DnsForge klingt vielversprechend. 👍
 
  • Gefällt mir
Reaktionen: Bitopium
Bitopium schrieb:
Naja ich dachte dass alle clients im VPN dann den DNS von dort beziehen?
Nein, die VPN Clients haben eine eigene DNS Konfiguration. Entweder ihre lokale, oder eine über die VPN Konfiguration. Und in der VPN Konfiguration gibt man dann natürlich die Adresse des PiHole Containers an, nicht die des Hosts. Da muss man nur über die Allowed IPs dafür sorgen, dass das Container-Netz übers VPN erreichbar ist.

Die DNS Server des Hosts und des PiHole Containers sind völlig unabhängig voneinander. Du kannst beide nach belieben nutzen für deiner VPN Clients. Jeder VPN Client bekommt in seiner VPN Konfiguration einen DNS Server, den er fragt. Das kann der PiHole Container sein, oder der Host, oder auch ein Unbound, der vielleicht noch zusätzlich läuft.
 
  • Gefällt mir
Reaktionen: Tanzmusikus und Bitopium
Zurück
Oben