Wir übersetzen das Heimnetzwerk in DoH oder einen weiteren Klick auf die Filternase

Nach der relativ jüngsten Ankündigung von Mozilla, die Unterstützung für DNS-over-HTTPS (DoH) in der Produktion im Netzwerk zu starten, werden weiterhin Streitigkeiten geführt, ob dies böse oder gut ist. Meiner Meinung nach basiert die Position des "Bösen" hauptsächlich auf der Tatsache, dass es gleichzeitig schwierig sein wird, Ihre DNS-Abfragen zu manipulieren, selbst für Zwecke, die für Sie nützlich sind. Daher bleibe ich vorerst in der Position des "Guten".
Bild


In der Russischen Föderation sind Telekommunikationsbetreiber, die durch unsere Gesetzgebung sehr strengen Bedingungen ausgesetzt sind, gezwungen, hochentwickelte Mehrebenensysteme zu bauen, um den Zugang zu Inhalten zu blockieren, die von Roskomnadzor in der Russischen Föderation verboten sind. Auf einer der Ebenen funktioniert das Abfangen von DNS mehr oder weniger erfolgreich. Mit DoH können Sie dieses Level umgehen, was zusammen mit der Verwendung von VPN Ihr Leben ein wenig erleichtern kann. Bitte beachten Sie, dass eine Lösung an sich Sie nicht vor dem Blockieren bewahren kann, da es in Russland kaum einen Anbieter gibt, der nur auf das Filtern über DNS angewiesen ist. Sie benötigen eine andere Option, um das Blockieren zu umgehen, z. B. ein VPN, eines der in meinen vorherigen Artikeln beschriebenen.


Es ist paradox, aber im aktuellen Panoptikum droht Ihnen der Telekommunikationsbetreiber nicht, seine Schlösser zu umgehen (mit speziellen Werkzeugen). Wenn Sie also Angst haben, ihm auf diese Weise Schaden zuzufügen, sind diese Befürchtungen vergeblich.


Der Wechsel zu einem speziellen Browser, um das Abfangen von DNS zu umgehen, ist jedoch nicht unser Weg. Unser Weg ist es, alle Geräte in Ihrem Heimnetzwerk schnell, effizient und ohne unnötigen Arbeitsaufwand an DoH zu übertragen.


Haftungsausschluss


Da es nicht sehr legitim ist, Methoden zur Umgehung des Zugriffs auf Informationen zu veröffentlichen, die auf dem Territorium der Russischen Föderation verboten sind, wird in diesem Artikel über eine Methode gesprochen, mit der Sie den Zugriff auf Ressourcen automatisieren können, die auf dem Territorium der Russischen Föderation zulässig sind, jedoch aufgrund von Aktionen, die nicht direkt zugänglich sind über Ihren Provider. Der Zugriff auf andere Ressourcen, die aufgrund von Aktionen aus dem Artikel erhalten wurden, ist eine unglückliche Nebenwirkung, und das Ziel des Artikels ist keineswegs.


TL; DR


Wir stellen unseren eigenen Pi-Hole-basierten DNS-Server mit Cloudflare DoH für Anfragen an die Welt bereit. Ziel ist es, alle DNS-Abfragen zu verschlüsseln und die Operatorfilterung durch DNS-Abfangen auf diese Weise zu umgehen. Ein nützlicher Bonus ist das Filtern von Anzeigen.


Es öffnet sich kein magisches Know-how, eine einfache Schritt-für-Schritt-Anleitung für diejenigen, die nicht alle Feinheiten selbst verstehen wollen.


Was brauchst du dafür?


  1. Vertrauen Sie Cloudflare. Dies ist tatsächlich ein sehr wichtiger Punkt, da in der beschriebenen Implementierung alle Ihre DNS-Abfragen vom Cloudflare-Dienst verarbeitet werden. Wenn Sie ihm nicht vertrauen, müssen Sie eine andere Lösung implementieren (und dies ist etwas komplizierter als die beschriebene, aber das Ziel dieses Artikels ist es nicht).
  2. Um einen ständig laufenden Linux-Server in Ihrem Heimnetzwerk unterstützen zu können, der die DNS-Abfragen Ihrer Geräte verarbeitet. Die Pi-Hole-Anforderung liegt bei 512 MB RAM (ich habe die Arbeit jedoch nicht mit einem kleineren Volumen überprüft). Wenn Ihr Router oder NAS virtuelle Maschinen unterstützt - dies ist eine hervorragende Option, wenn ein Raspberry Pi oder ein anderer Mikrocomputer auf dem ARM irgendwo im Regal liegt - nicht weniger gut, wenn die virtuelle Farm auf ESXi auf den Mezzaninen im Korridor brummt - was ich Ihnen sage, Sie und du weißt alles selbst. Wenn Sie nichts davon haben, finden Sie die jüngsten Lösungen wie Orange Pi Zero auf dem Sekundärmarkt für Einheiten von Hunderten von Rubel oder von Ali für plus oder minus das gleiche Geld. Die Wahl der Plattform geht jedoch weit über den Rahmen dieses Artikels hinaus. Wir glauben, dass Sie etwas haben. Fragen zu diesem Thema können jedoch in den Kommentaren gestellt werden.
  3. Sie müssen mit Linux und Netzwerken vertraut sein. Oder zumindest eine solche Idee haben wollen. Da ich dieses Mal nicht bereit bin, die Unermesslichkeit anzunehmen, müssen Sie einige unverständliche Momente für sich selbst studieren. Natürlich werde ich in den Kommentaren bestimmte Fragen beantworten und es ist unwahrscheinlich, dass nur diese beantwortet werden. Zögern Sie also nicht, Fragen zu stellen.

Ausgangsdaten


Die IPv4-Adresse unseres Servers im Heimnetzwerk lautet 192.168.1.10 und wird als statisch zugewiesen.


Die Einstellungen unter Linux werden von root aus durchgeführt (d. H. Bevor die Konfiguration gestartet wird , führen wir den Befehl sudo su - aus ).


Kurz - die Logik der Lösung


  1. Installieren und konfigurieren Sie Pi-Hole
  2. Installieren und konfigurieren Sie cloudflared
  3. Konfigurieren Sie Ihren Heimrouter
  4. Wir lösen Probleme

Eigentlich Entscheidung


1. Installieren und konfigurieren Sie Pi-Hole


Pi-Hole ist eine bekannte Heimplattform, die in erster Linie zur Bekämpfung von Werbung entwickelt wurde, indem Domain-Anfragen aus einer zentral aktualisierten Liste blockiert werden. Nicht, dass dies eine notwendige Komponente der Lösung gewesen wäre, aber wenn Sie mit dem Sammeln von Heim-DNS begonnen haben, wird es schwierig, dies zu stoppen. Aber im Ernst - Pi-Hole ist vielleicht nicht perfekt, aber es beseitigt eine Menge Kopfschmerzen von einer Person, die „arbeiten“ muss.


Um Pi-Hole auf einem bereits laufenden Linux-Server zu installieren, müssen Sie nur einen Befehl ausführen:


curl -sSL https://install.pi-hole.net | bash 

Anschließend führt Sie das ausgeführte Skript durch die Installationsschritte.


In dem Moment, in dem er Sie nach der Wahl des Upstream-DNS-Anbieters fragt, können Sie einen beliebigen auswählen, da wir ihn im nächsten Schritt noch ändern werden. Alle anderen Parameter können standardmäßig sicher belassen werden.


Am Ende der Installation zeigt Ihnen das Skript ein zufällig generiertes Kennwort von der Weboberfläche an, das Sie notieren können.


Wenn während der Installation ein Fehler aufgetreten ist, können Sie die hier beschriebenen alternativen Methoden verwenden.


2. Installieren und konfigurieren Sie cloudflared


Um über HTTPS zu DNS zu wechseln, verwenden wir eine Standardlösung von Cloudflare. Der Cloudflared-Daemon wurde ursprünglich erstellt, um den Argo-Tunnel von der Abonnentenseite zu entfernen, sodass Sie Ihren Webserver auf dem Cloudflare-CDN veröffentlichen können, selbst wenn er auf einer privaten IP-Adresse hinter NAT gehostet wird. Eine sehr nützliche Eigenschaft dieses Daemons ist jedoch seine Arbeit als DoH-Proxy, und wir verwenden diese Eigenschaft hier.


Hier müssen wir uns für die Installation etwas mehr anstrengen, aber auch nichts besonders Kompliziertes.


Wir wählen das Installationsprogramm für unsere Plattform aus und laden es herunter.


 # For amd64 Debian/Ubuntu cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb apt-get install ./cloudflared-stable-linux-amd64.deb cloudflared -v # For amd64 CentOS/RHEL/Fedora cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.rpm yum install ./cloudflared-stable-linux-amd64.rpm cloudflared -v # For ARM cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz cp ./cloudflared /usr/local/bin chmod +x /usr/local/bin/cloudflared cloudflared -v 

Nach dem Ausführen des letzten Befehls sollten wir eine Ausgabe ähnlich der folgenden erhalten:


 cloudflared version 2019.9.0 (built 2019-09-06-0333 UTC) 

Wenn Sie eine haben (natürlich können Version und Build-Nummer abweichen), dann war die Installation erfolgreich. Jetzt liegt es an Ihnen, zu konfigurieren.


Erstellen Sie einen Benutzer für den Dienst:


 useradd -s /usr/sbin/nologin -r -M cloudflared 

Erstellen Sie die Dienstkonfigurationsdatei / etc / default / cloudflared:


 # Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query 

Und wir geben dem neu erstellten Benutzer und der ausführbaren Datei Rechte:


 chown cloudflared:cloudflared /etc/default/cloudflared chown cloudflared:cloudflared /usr/local/bin/cloudflared 

Erstellen Sie als Nächstes die Datei /lib/systemd/system/cloudflared.service, mit der wir den Dienst in systemd integrieren können:


 [Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target 

Wir aktivieren den Dienst und führen ihn aus:


 systemctl enable cloudflared systemctl start cloudflared systemctl status cloudflared 

Wenn alles geklappt hat, sehen Sie, dass sich der Dienst im aktiven (laufenden) Zustand befindet.


Sie können den Betrieb des Dienstes überprüfen, beispielsweise mit dem Befehl dig:


 dig @127.0.0.1 -p 5053 google.com 

Im Antwortbereich der Antwort sehen Sie die IP-Adresse, die Ihr Dienst über goH für google.com erhalten hat.


 google.com. 217 IN A 172.217.6.142 

Es bleibt nur, um den Dienst mit dem Pi-Hole zu verbinden. Gehen Sie dazu zur Pi-Hole-Weboberfläche (das in der ersten Phase aufgezeichnete Kennwort ist für Sie nützlich), gehen Sie zum Menüpunkt Einstellungen - DNS und lassen Sie es ungefähr so ​​aussehen:


Screenshot der Pi-Loch-Konfiguration


Die Hauptsache ist, das Feld Benutzerdefiniert mit dem Eintrag 127.0.0.1 # 5053 auszufüllen und die Morgendämmerung darauf zu belassen, um es von allen anderen zu entfernen. Vergessen Sie danach nicht, die Seite nach unten zu scrollen und auf Speichern zu klicken.


Wenn Sie vergessen haben, das Passwort zu schreiben - es ist in Ordnung, gehen Sie über ssh zum Server und führen Sie den Befehl pihole -a -p aus. Dadurch können Sie ein neues Passwort festlegen. Schauen Sie sich im Allgemeinen die Schlüssel des Pihole- Teams an, es gibt viele interessante Dinge. Beispielsweise wird eine Systemaktualisierung mit einem Befehl pihole -up durchgeführt .


3. Richten Sie Ihren Heimrouter ein


Natürlich kann ich mit diesem Text nicht die gesamte Vielfalt der Router schließen. Für die meisten Heimrouter gelten jedoch die folgenden Punkte:


1) Sie können in den WAN-Schnittstelleneinstellungen einen benutzerdefinierten DNS-Server für den Router festlegen, auch wenn die IP-Adresse dynamisch vom Anbieter abgerufen wird


2) Der Router gibt seine Adresse als DNS an interne Clients aus und leitet deren Anforderungen an den in den WAN-Einstellungen angegebenen Server weiter


Dementsprechend ist es in diesem Fall notwendig und ausreichend, die Adresse unseres Pi-Hole als DNS-Server in den Einstellungen der WAN-Schnittstelle des Heimrouters zu registrieren. Es ist wichtig, dass dies der einzige DNS-Server in den Einstellungen ist, sofern etwas anderes angegeben ist. Der Router gleicht die Anforderungen nach dem einzigen ihm bekannten Prinzip aus, und diese Situation ist für das Debuggen von Problemen im Netzwerk äußerst unpraktisch.


Wenn plötzlich etwas schief gelaufen ist und der Dienst nicht mehr funktioniert, reicht es aus, die obige Einstellung in die Adresse des DNS-Servers Ihres Anbieters oder beispielsweise 8.8.8.8 zu ändern und erst dann zu verstehen.


Wenn Ihr Router intelligenter ist und beispielsweise in DHCP angeben kann, welche Adresse als DNS-Server an Clients verteilt werden soll, können Sie einen alternativen Pfad wählen und die Verteilung der Pi-Hole-Adresse direkt an Clients konfigurieren. Dadurch wird der Router leicht entlastet, der oben genannte Rollback wird jedoch durch die Verwendung des Dienstes erschwert.


Wenn etwas nicht funktioniert - fragen Sie in den Kommentaren, wir werden eine Lösung finden.


4. Wir lösen Probleme


Im Allgemeinen sollte nach Abschluss der oben genannten Punkte alles in Ordnung mit Ihnen sein, aber es gibt Nuancen, auf die meine Kunden und ich manchmal gestoßen sind.


Nachdem Sie Pi-Hole verwendet haben, kann es auf Ihren Geräten (insbesondere auf Mobilgeräten) zu ungewöhnlichen Gefühlen reduzierter Werbung kommen. Seien Sie nicht beunruhigt, das haben Sie beabsichtigt. Außerdem funktionieren einige Dienste möglicherweise nicht mehr so, wie Sie es kennen, und dies erfordert Ihre Teilnahme an den Einstellungen. Beispielsweise versucht die Aliexpress-Website regelmäßig, Sie an die Adresse best.aliexpress.com weiterzuleiten, die in der Liste der Anzeigen aufgeführt ist. Dadurch wird der Zugriff auf Ali blockiert.


Das Erkennen eines solchen Problems ist recht einfach. Wenn Sie versuchen, auf einen blockierten Server zuzugreifen, zeigt Ihr Browser einen Fehler ERR_NAME_NOT_RESOLVED oder ähnliches an, und eine Befehlszeilenprüfung über nslookup <Servername> gibt 0.0.0.0 zurück.


Das Problem für einen bestimmten Server zu lösen ist ebenfalls einfach - fügen Sie es einfach der Whitelist hinzu. Gehen Sie dazu zu http: //pi.hole/admin , melden Sie sich an, wählen Sie im linken Menü Whitelist aus und fügen Sie den gewünschten Server hinzu. Zum Beispiel musste ich neben der erwähnten Datei best.aliexpress.com s.click.aliexpress.com sowie eine Gruppe von Websites in der Domäne miui.com öffnen, damit Xiaomi-Dienste funktionieren. Sie brauchen wahrscheinlich etwas Eigenes. Es ist jedoch nicht so schwierig, genau zu verfolgen, was geöffnet werden muss. Auf der Dashboard-Hauptseite des Dienstes und in den Abfrageprotokollen können Sie immer sehen, welche Domain-Anforderungen blockiert wurden, und sie zur Whitelist hinzufügen.


Es kommt auch regelmäßig vor, dass Pi-Hole auf einem Server installiert ist, auf dem bereits eine Art Webdienst ausgeführt wird. In diesem Fall erhalten Sie keinen Zugriff auf die webbasierte Verwaltungsoberfläche. Wie ein solcher Konflikt gelöst werden kann, hängt von der jeweiligen Situation ab. Die wichtigsten Lösungen sind jedoch:


  1. Wenn der Webserver nicht verwendet wurde, sondern nur standardmäßig stand - suchen und deaktivieren
  2. Wenn der Webserver verwendet wird und Sie wissen, wie Sie damit arbeiten, fügen Sie die Pi-Hole-Weboberfläche als separate Ressource zu Ihrem Webserver hinzu.
  3. Sie können die Pi-Hole-Weboberfläche auch an einem anderen Port landen, indem Sie den Parameter server.port in der Datei /etc/lighttpd/lighttpd.conf korrigieren. Dafür muss man sich jedoch merken, auf welchem ​​Port der Server ausgeführt wird. Daher begrüße ich solche Schemata nicht.

Fazit


Wie versprochen hat er nichts Neues geschrieben. Für viele Leser ist dieses Schema verständlich und offensichtlich und entweder bereits implementiert oder nicht als unnötig implementiert. Viele andere bauten etwas Ähnliches auf andere Weise, wobei sie dieselben oder andere Komponenten verwendeten. Ich schlage vor, Sie betrachten diesen Beitrag eher als Leerzeichen für Ihre eigene Lösung, falls Sie ihn jemals benötigen. Nachdem Sie es jedoch Schritt für Schritt ausgeführt haben, erhalten Sie bereits einen Service, der Ihre Grundbedürfnisse zum Filtern von Anzeigen und zur Verwendung von DoH abdeckt.


Traditionell beantworte ich Fragen und helfe bei den Einstellungen.


PS-Hinweis von GennPen : Wenn Sie DoH verwenden, werden Sie von Ihrer Internetverbindung abhängig. Wenn Ihnen das Geld auf Ihrem Konto ausgeht, können Sie sich nicht einmal in das persönliche Konto Ihres Anbieters einloggen, um diese zu bezahlen. Daher ist es für solche Sites in dieser Lösung wünschenswert, statische Einträge in Pi-Hole zu registrieren. Dies kann in der Konsole mit dem Befehl pihole -a -r oder einfach manuell in der Datei / etc / hosts erfolgen. Leider ist das Tool dafür nicht in der Weboberfläche enthalten.

Source: https://habr.com/ru/post/de468621/


All Articles