3
September
2026
DOH unter Linux starten – Namensauflösung zu DNS-IP-Adressen über HTTPS
11:11

DOH unter Linux starten – Namensauflösung zu DNS-IP-Adressen über HTTPS

3 September 2026 11:11

Dieser Artikel ist eine Ergänzung zu Einrichten eines vom System aufgelösten Caching-DNS-Servers.

Einführung

Dieser Artikel beschreibt nicht methoden zur Umgehung von Blockierungen und widmet sich der Methode zur Auflösung von DNS-Namen über HTTPS mit Caching, um die Sicherheit von Computern mit Linux-Betriebssystem zu erhöhen.

Der Punkt ist, dass Sie dies tun müssen, bevor Sie auf eine Website zugreifen Anfragen an jeden DNS-Server, egal [frei, unabhängig oder staatlich] werden im Klartext übermittelt. Was schafft Chancen:
1) Abfangen solcher Anfragen durch einen der Computer im lokalen Netzwerksegment.
2) Analyse von Anfragen an DNS auf der Ebene des Providers oder Upstream-Providers (mit rekursivem DNS).
3) die Möglichkeit, in den Prozess der Übertragung solcher Nachrichten einzugreifen (Ausgeben falscher oder leerer Antworten durch Angreifer, Ersetzen von IP-Adressen in DNS-Antworten).
4) Viele DNS-Server verfügen nicht über eine Filterung für betrügerische, bösartige oder werbliche Websites, während viele spezialisierte DNS-Server über diese Funktion verfügen (genannt „Familien-DNS“ oder „sicheres DNS“).

Technologievergleich:

  • Die Verwendung von DNSSEC löst lediglich das Problem, dass eine DNS-Serverantwort nicht mithilfe einer Nachrichtensignatur gefälscht werden kann. Die von einem DNSSEC-Client ausgehende Anfrage ist „transparent“ und im Klartext wie bei normalem DNS deutlich sichtbar.
  • Verwendung von DNS über TLS (DOT): funktioniert nicht aus einem unbekannten Grund (ich konnte es nicht starten). Außerdem verwendet das DOT-Protokoll den Port 853/TCP auf dem Remote-Server, der wie 53/UDP (DNS) bei der Untersuchung des Datenverkehrs leicht ermittelt werden kann.
  • Verwendung von DNS über HTTPS (DOH):funktioniert(Der Zweck dieses Artikels besteht darin, über die Nutzungserfahrungen zu sprechen.) Der Standard-DOH-Port und der HTTPS-Port sind identisch: 443.

Lösungsbeschreibung: DOH unter Linux ausführen

Diese Lösung setzt DOH auf alle linux-Betriebssystem. Die Lösung erfordert eine funktionierende systemd-aufgelöst. Dadurch wird die Liste der Betriebssysteme, für die diese Anweisung gilt, auf die Betriebssysteme beschränkt, die das Dienstinitialisierungssystem verwenden systemd.

Überprüfen, ob das systemd-Init-System verwendet wird:

ps -p 1 -o comm=

Die Antwort sollte lauten:
systemd

Um DOH auf dem Client auszuführen, benötigen Sie:
1) ausführen Anweisungen zur Installation und Konfiguration von systemd-resolved,
2) Installieren Sie das Paket dnscrypt-proxy
3) Passen Sie das Paket an dnscrypt-proxy verwenden einer Konfigurationsdatei mit der Erweiterung .toml.
4) Starten Sie den Dienst dnscrypt-proxy
5) Anfragen an den Caching-DNS-Server umleiten systemd-resolved на dnscrypt-proxy.
6) Konfigurieren Sie Ihren Webbrowser (deaktivieren Sie darin Ihr DNS-über-HTTPS, um über einen lokalen zwischenspeichernden lokalen DNS-Server zu arbeiten).

Aktionen Schritt für Schritt

1) Lass es uns tun Installation, Konfiguration des systemd-aufgelösten Caching-DNS-Servers.

2) Installieren Sie das Paket dnscrypt-proxy

Sudo apt-Update
sudo apt install dnscrypt-proxy

3) Erstellen Sie eine Konfigurationsdatei /etc/dnscrypt-proxy/dnscrypt-proxy.toml

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

und hinzufügen dnscrypt-proxy.toml text:

# Empty listen_addresses to use systemd socket activation
listen_addresses = ['127.0.0.1:5053']
server_names = ['google'] # or 'yandex'. See https://dnscrypt.info/public-servers/ .

# Use reachable
ipv4_servers=true
ipv6_servers=false

# Enable DoH specifically:
doh_servers = true
dnscrypt_servers = false  # Only DoH, no DNScrypt
require_dnssec=false
require_nolog=true
require_nofilter=true
timeout=5000
keepalive=30 # Keep alive connection, seconds
cert_refresh_delay=240
ignore_system_dns=true
netprobe_timeout=60
netprobe_address='9.9.9.9:53'
block_ipv6=true
block_unqualified=true
reject_ttl=10
cache=true
cache_size=4096
cache_min_ttl=2400
cache_max_ttl=86400
cache_neg_min_ttl=60
cache_neg_max_ttl=600

[nx_log]
  file = '/var/log/dnscrypt-proxy/nx.log' # Log file is off by "require_nolog=true" 

[sources]
  [sources.'public-resolvers']
  url = 'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md'
  cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 73
  prefix = ''
[sources.relays]
  url = 'https://download.dnscrypt.info/resolvers-list/v3/relays.md'
  cache_file = '/var/cache/dnscrypt-proxy/relays.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 73
  prefix = ''

Speichern und beenden: Strg+S, Strg+X

Neustart des Dienstes dnscrypt-proxy:

sudo systemctl restart dnscrypt-proxy

Kommentar:

  • Systemd-aufgelöster Caching-DNS-Server, der auf localhost an Port 53 und 127.0.0.53:53 läuft
  • Der neue DNScrypt-Proxy-Dienst überwacht Port 5053.
  • Namensauflösung hier über [google], DNS über HTTPS-Dienst (entspricht https://dns.google/dns-query – RFC 8484 (GET und POST))
  • IPv4 wird verwendet, IPv6 deaktiviert
  • DOH-Server – gebraucht
  • DNSCRYPT-Server sind deaktiviert
  • DNSSEC-Option deaktiviert
  • Abfrageprotokoll deaktiviert
  • Option „Domänenfilter“ deaktiviert
    ...
  • IP-Adresse des DNS-Servers zur Auflösung der ersten Abfrage netprobe_address='9.9.9.9:53'.
  • Die Abschnitte „sources“, „sources.‘public-resolvers‘“ und „sources.relays“ werden benötigt, damit der dnscrypt-proxy-Dienst funktioniert.

Die Namensauflösung über DOH betrifft das gesamte Linux-Betriebssystem, alle darin enthaltenen Programme und Dienstprogramme (Dig, Ping, Traceroute).

4) Starten Sie den Dienst dnscrypt-proxy und Ermöglichen des automatischen Starts beim Booten des Betriebssystems:

sudo systemctl dnscrypt-proxy aktivieren
sudo systemctl start dnscrypt-proxy

5) DNS-Anfrageumleitung.

Wenn Sie einen symbolischen Link erstellt haben,

ls -l /etc/resolv.conf

Nur wenn ein Link vorhanden ist, löschen Sie ihn:

sudo rm /etc/resolv.conf

Öffnen Sie die Datei /etc/resolv.conf zum Bearbeiten

sudo nano /etc/resolv.conf

Und fügen Sie den Text hinzu:

nameserver 127.0.0.53

Speichern und beenden: Strg+S, Strg+X.

Was wird entsprechend umgeleitet /etc/resolv.conf запросы приложений "ping", "dig" на systemd-resolved unter der lokalen Adresse 127.0.0.53.

Service systemd-resolved будет передавать запросы DNS на dnscrypt-proxy auf 127.0.0.1:5053, für den wir die Datei bearbeiten:

sudo nano /etc/systemd/resolved.conf

Der Inhalt der Datei sollte so aussehen:

[Auflösen]
DNS=127.0.0.1:5053
FallbackDNS=
Domains=~.

Hier ist 127.0.0.1:5053 die IP-Adresse und der Port dnscrypt-proxy.

Speichern und beenden: Strg+S, Strg+X.

Starten Sie den Dienst neu:

sudo systemctl restart systemd-resolved

Umleiten von Anfragen vom Dienst „SystemD-ResolveD“ an dnscrypt-proxy(127.0.0.1:5053) fertig!

Im Gegenzug dnscrypt-proxy перенаправит запросы через DNS over HTTPS в Интернет на DOH-сервер, который указан в конфигурации TOML в разделе server_names = [].

Überprüfen

Überprüfen Sie zunächst den Status des dnscrypt-Proxys und des Caching-DNS-Servers

sudo systemctl status dnscrypt-proxy
sudo systemctl status systemd-resolved

Es sollten keine Fehler vorliegen, sondern der Zustand „Aktiv: aktiv (läuft)“ und "Jetzt höre ich auf 127.0.0.1:5053 [TCP]" für den ersten und denselben Status „Aktiv: aktiv (läuft)“ beim zweiten.

Ausführungszeit der Anfrage:

time resolvectl query lenta.com
lenta.com: 178.248.232.88

-- Information acquired via protocol DNS in 53.8ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

real    0m0,065s
user    0m0,000s
sys 0m0,010s
time resolvectl query lenta.com
lenta.com: 178.248.232.88

-- Information acquired via protocol DNS in 2.4ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

real    0m0,009s
user    0m0,003s
sys 0m0,004s

Führen Sie außerdem zwei Befehle hintereinander aus:

dig ya.ru
dig ya.ru

Namensauflösung und Zwischenspeicherung von Abfrageantworten funktionieren.

Hinweis: team resolvectl statistics erzeugt falsche „Cache Misses“-Werte und kann ignoriert werden. Hauptsache, die Antwortzeit auf eine Anfrage ist Null.

Lassen Sie uns nun den Dienst stoppen und prüfen, ob die DNS-Namensauflösung funktionieren kann, wenn er gestoppt wird dnscrypt-proxy?
Diese. Liegt ein DNS-Leak vor?

sudo pkill -STOP dnscrypt-proxy

Jetzt hängt der folgende Befehl:

resolvectl query lenta.com

Strg+C

Lassen Sie es uns noch einmal ausführen und die Arbeit überprüfen:

sudo pkill -CONT dnscrypt-proxy
resolvectl query lenta.com

Namensauflösung funktioniert wieder! Die Testmethodik basiert auf Dokument.

6) Einrichten von Webbrowsern

In Webbrowsern müssen Sie deren DNS über HTTPS deaktivieren, wenn sie aktiviert sind. Da alle Anfragen jetzt über das lokale Caching-DNS laufen, werden sie über den System-DNScrypt-Proxy umgeleitet.

Mozilla Firefox:

  • Bearbeiten – Einstellungen – Datenschutz und Sicherheit – DNS über HTTPS – Aus(Verwenden Sie Ihren Standard-DNS-Resolver).
    Google Chrome, Chromium-Gost:
  • Einstellungen – Datenschutz und Sicherheit – Sicheren DNS-Server verwenden – Aus.

Überprüfen Sie:browserleaks.com DNS-Lecktest-https://browserleaks.com/dns[/mark]

7) Angabe eines Caching-DNS-Servers in den Network Manager-Netzwerkeinstellungen.

Die Network Manager-Einstellung ist in der Taskleiste (Leiste neben der Uhr) verfügbar.
In den Einstellungen für die Verbindung zu einem lokalen Netzwerk oder WLAN müssen Sie, wie im vorherigen Artikel angegeben, DNS: 127.0.0.53 angeben, was dem systemd-aufgelösten Dienst entspricht.

Mögliche Werte für die Option „server_names = [...]“

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

_Einige Varianten von DOH-Servernamen für den Abschnitt servernames = [...] der TOML-Datei
controld-unfiltered- Control D ist ein kostenloser DNS-Server ohne Filterung. Blockiert oder schreibt keine Domänen um. Führt kein Anforderungsprotokoll. Globales Anycast-Netzwerk. https://controld.com/free-dns Verwaltet von Control D. Serviceseite: https://controld.com/free-dns
dnsforfamily-doh- DNS for Family ist ein sicherer Suchdienst. Blockiert Domains im Zusammenhang mit Inhalten für Erwachsene, Glücksspiel, Drogen, Malware, Betrug/Phishing, Proxys/Anonymisierern und Werbung; Die Blacklist wird täglich aktualisiert. Bietet sichere Suche auf Google, YouTube, Brave, Ecosia, Bing, DuckDuckGo und Yandex. Soziale Netzwerke wie Facebook und Instagram werden nicht blockiert. DNS-Anfragen werden nicht protokolliert. Kostenloser Service. Bereitgestellt von: https://dnsforfamily.com
google- Öffentlicher DNS-Server von Google. Globaler Anycast-Dienst, der von Google betrieben wird. Der Dienst wird von Google Public DNS verwaltet. Serviceseite: https://developers.google.com/speed/public-dns
yandex- Yandex Public DNS Safe Resolver. Der Dienst wird von Yandex verwaltet. Serviceseite: https://dns.yandex.com/ Kann Anfragen registrieren.
*yandex-safe- Yandex Public DNS Safe Resolver. Anycast-Dienst von Yandex mit Malware-Filterung. Der Dienst wird von Yandex verwaltet. Serviceseite: https://dns.yandex.com/ Kann Anfragen registrieren.

  • quad9-doh-ip4-port443-filter-pri – DNS-over-HTTPS-Server von Quad9. Im Bild oben.

Starten Sie den Dienst nach dem Wechsel des Servers neu:

sudo systemctl restart dnscrypt-proxy

Informationen zum Namensabgleich finden Sie auf der Homepage -https://dnscrypt.info/public-servers/.

Ergebnis

Wir haben DNS so konfiguriert, dass es über einen Caching-Server mit Übertragung über funktioniert dnscrypt-proxy.
Neben der erhöhten Sicherheit hat sich dadurch auch die Geschwindigkeit beim Öffnen von Webseiten deutlich verbessert doppeltes Caching antworten des DNS-Servers (in dnscrypt-proxy und systemd-resolved).

DNScrypt-Proxy entfernen

Bei Bedarf kann das dnscrypt-proxy-Paket entfernt werden:

sudo apt remove dnscrypt-proxy

Vergessen Sie nach dem Löschen nicht, die Datei zu reparieren

sudo nano /etc/systemd/resolved.conf

Der Inhalt der Datei sollte so aussehen:

[Auflösen]
DNS=192.168.1.1:53
FallbackDNS=77.88.8.1
Domains=~.

Dabei geben Sie anstelle von 192.168.1.1 die IP-Adresse Ihres lokalen Netzwerkrouters an.

Starten Sie den Dienst neu:

sudo systemctl restart systemd-resolved

Quelle

Dieser Artikel unterscheidet sich stark von den offiziellen Anweisungen zur Installation dnscrypt-proxy auf Port 53 und der vom Systemd aufgelöste Dienst wird nicht verwendet.

*https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-linux

Die Hauptquelle ist die Beispielkonfigurationsdatei „example-dnscrypt-proxy.toml“:

*https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml



Verwandte Veröffentlichungen