
DNS-Messung, Fehlerbehebung und Sicherheits-Audit-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.
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.
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
pip3 install dnsdiag
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
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.
Vorgefertigte Binärdateien sind verfügbar für:
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.
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 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:
--tcp, --tls, --doh, --quic oder --http3, um das
Transportprotokoll auszuwählen (Standard ist UDP). Diese Optionen schließen sich
gegenseitig aus; pro Befehl kann nur ein Protokoll angegeben werden.--flags, um Antwort-Flags, einschließlich EDNS-Flags, für jede
Antwort anzuzeigen.--dnssec, um DNSSEC-Validierung anzufordern, falls verfügbar.--nsid, um den Name Server Identifier (NSID) anzuzeigen, falls verfügbar (RFC 5001).--ecs, um EDNS Client Subnet-Informationen für geografische Routing-Optimierung einzubeziehen.--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:
--dnssec-Flags../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]