
dnsdiag v2.9.4
DNS-Messung, Fehlerbehebung und Sicherheits-Audit-Toolset
DNS-Mess-, Fehlerbehebungs- und Sicherheitsaudit-Toolset
Haben Sie sich jemals gefragt, ob Ihr ISP Ihren DNS-Datenverkehr abfängt? Haben Sie ungewöhnliches Verhalten in Ihren DNS-Antworten bemerkt oder wurden Sie auf die falsche Adresse umgeleitet und vermuteten, dass mit Ihrem DNS etwas nicht stimmt? Wir bieten eine Suite von Tools an, um grundlegende Audits Ihrer DNS-Anfragen und -Antworten durchzuführen und Ihnen zu helfen sicherzustellen, dass Ihr DNS wie erwartet funktioniert.
Mit dnsping können Sie die Antwortzeit eines beliebigen DNS-Servers für
beliebige Abfragen messen. Ähnlich wie das reguläre Ping-Dienstprogramm bietet
dnsping eine vergleichbare Funktionalität für DNS-Anfragen und hilft Ihnen, die
Reaktionsfähigkeit des Servers zu überwachen.
Sie können auch die Route Ihrer DNS-Anfrage zu ihrem Ziel mit
dnstraceroute verfolgen und überprüfen, ob sie nicht umgeleitet oder abgefangen
wird. Durch den Vergleich von DNS-Anfragen, die an denselben Server gesendet
werden, ermöglicht es dnstraceroute, Unterschiede in den genommenen Pfaden zu
beobachten und Sie auf mögliche Probleme aufmerksam zu machen.
dnseval bewertet mehrere DNS-Resolver, um Ihnen zu helfen, den besten
DNS-Resolver für Ihr Netzwerk auszuwählen. Während die Verwendung Ihres eigenen
DNS-Resolvers empfohlen wird, um die Abhängigkeit von DNS-Resolvern Dritter zu
vermeiden, kann dnseval bei Bedarf bei der Auswahl des optimalen DNS-Resolvers
unterstützen. Es ermöglicht Ihnen, DNS-Server anhand von Leistung (Latenz) und
Zuverlässigkeit (Paketverlust) zu vergleichen und bietet Ihnen einen umfassenden
Überblick für eine fundierte Entscheidungsfindung.
Installation
Es gibt mehrere Möglichkeiten, dieses Toolset zu verwenden, wobei wir empfehlen, es direkt aus dem Quellcode auszuführen, um optimale Flexibilität und Kontrolle zu erhalten. Das Ausführen aus dem Quellcode oder die Installation mit pip erfordert Python 3.11 oder neuer.
Quellcode
- Klonen Sie das Git-Repository und installieren Sie die Abhängigkeiten:
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
- Alternativ können Sie das Paket mit pip installieren:
pip3 install dnsdiag
Verwendung von uv (Empfohlen)
uv ist ein schneller Python-Paketmanager, der Tools direkt ohne Installation ausführen kann:
# dnsping direkt ohne Installation ausführen
uvx --from dnsdiag dnsping google.com
# Mit spezifischen Optionen ausführen
uvx --from dnsdiag dnsping -c 5 --tls -s 8.8.8.8 example.com
# dnstraceroute ausführen
uvx --from dnsdiag dnstraceroute cloudflare.com
# dnseval ausführen
uvx --from dnsdiag dnseval -f public-servers.txt github.com
Um dnsdiag dauerhaft zu installieren:
# dnsdiag-Tools installieren
uv tool install dnsdiag
# Auf die neueste Version aktualisieren
uv tool upgrade dnsdiag
Binärpaket
Von Zeit zu Zeit werden Binärpakete für Windows, Mac OS X und Linux veröffentlicht. Die neueste Version können Sie von der Releases-Seite herunterladen.
Unterstützte Plattformen
Vorgefertigte Binärdateien sind verfügbar für:
- Linux (x86_64, ARM64)
- macOS (Intel, Apple Silicon)
- Windows (x86_64)
Windows ARM64 wird derzeit nicht unterstützt, da die Build-Abhängigkeiten native Kompilierungs-Toolchains erfordern, die nicht ohne Weiteres verfügbar sind. Wenn Sie Windows auf ARM verwenden, können Sie dnsdiag mit dem Windows Subsystem for Linux (WSL2) ausführen oder direkt aus dem Quellcode installieren.
Docker
Wenn Sie dnsdiag nicht auf Ihrem lokalen Rechner installieren möchten, können
Sie das Docker-Image verwenden, um die Tools in einer containerisierten Umgebung
auszuführen. Zum Beispiel:
docker run --network host -it --rm farrokhi/dnsdiag dnsping.py
dnsping
dnsping ermöglicht es Ihnen, einen DNS-Resolver zu "pingen", indem Sie eine
beliebige DNS-Anfrage mehrmals senden. Eine vollständige Liste der unterstützten
Kommandozeilenoptionen erhalten Sie mit --help. Hier sind einige wichtige Flags:
- Verwenden Sie
--tcp,--tls,--doh,--quicoder--http3, um das Transportprotokoll auszuwählen (Standard ist UDP). Diese Optionen schließen sich gegenseitig aus; pro Befehl kann nur ein Protokoll angegeben werden. - Verwenden Sie
--flags, um Antwort-Flags, einschließlich EDNS-Flags, für jede Antwort anzuzeigen. - Verwenden Sie
--dnssec, um DNSSEC-Validierung anzufordern, falls verfügbar. - Extended DNS Error-Nachrichten (RFC 8914) werden automatisch angezeigt, wenn sie vorhanden sind.
- Verwenden Sie
--nsid, um den Name Server Identifier (NSID) anzuzeigen, falls verfügbar (RFC 5001). - Verwenden Sie
--ecs, um EDNS Client Subnet-Informationen für geografische Routing-Optimierung einzubeziehen. - Verwenden Sie
--cookie, um DNS-Cookies (RFC 7873) anzuzeigen, wenn sie in Antworten vorhanden sind.
./dnsping.py -c 5 --dnssec --flags --tls -t AAAA -s 8.8.8.8 brokendnssec.net
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD]
75 bytes from 8.8.8.8: seq=1 time=73.703 ms SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75 bytes from 8.8.8.8: seq=2 time=69.523 ms SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75 bytes from 8.8.8.8: seq=3 time=58.058 ms SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75 bytes from 8.8.8.8: seq=4 time=54.235 ms SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75 bytes from 8.8.8.8: seq=5 time=57.806 ms SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
--- 8.8.8.8 dnsping statistics ---
5 requests transmitted, 5 responses received, 0% lost
min=54.235 ms, avg=22.665 ms, max=69.523 ms, stddev=38.202 ms
dnsping bietet auch Statistiken wie minimale, maximale und durchschnittliche
Antwortzeiten sowie Jitter (Standardabweichung) und Paketverlust.
Hier sind einige interessante Anwendungsfälle für dnsping:
- Vergleich der Antwortzeiten über verschiedene Transportprotokolle (z. B. UDP vs. DoH).
- Bewertung der Zuverlässigkeit Ihres DNS-Servers durch Messung von Jitter und Paketverlust.
- Messung der Antwortzeiten mit aktiviertem DNSSEC unter Verwendung des
--dnssec-Flags. - Testen des EDNS Client Subnet-Verhaltens für geolokalisierungsbewusste Antworten:
./dnsping.py -c 3 --ecs 203.0.113.0/24 -s 94.140.14.14 google.com
dnsping.py DNS: 94.140.14.14:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
66 bytes from 94.140.14.14: seq=1 time=31.407 ms NOERROR [ECS:203.0.113.0/24/24]
66 bytes from 94.140.14.14: seq=2 time=29.156 ms NOERROR [ECS:203.0.113.0/24/24]
66 bytes from 94.140.14.14: seq=3 time=30.892 ms NOERROR [ECS:203.0.113.0/24/24]