
DNS-Messung, Fehlerbehebung und Sicherheits-Audit-Toolset
Haben Sie sich jemals gefragt, ob Ihr ISP Ihren DNS-Verkehr abfängt? Haben Sie ungewöhnliches Verhalten Ihrer DNS-Antworten bemerkt oder wurden Sie auf die falsche Adresse umgeleitet und vermuten, dass mit Ihrem DNS etwas nicht stimmt? Wir bieten eine Reihe von Tools zur Durchführung grundlegender Audits Ihrer DNS-Anfragen und -Antworten, damit Sie sicherstellen können, dass Ihr DNS wie erwartet funktioniert.
Mit dnsping können Sie die Reaktionszeit eines beliebigen DNS-Servers für beliebige Abfragen messen. Ähnlich wie das normale 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 den Weg Ihrer DNS-Anfrage zu ihrem Ziel mit dnstraceroute verfolgen und überprüfen, ob sie nicht umgeleitet oder abgefangen wird. Durch den Vergleich von DNS-Abfragen, die an denselben Server gesendet werden, können Sie mit dnstraceroute etwaige Unterschiede in den genommenen Pfaden beobachten und so auf mögliche Probleme aufmerksam werden.
dnseval bewertet mehrere DNS-Resolver, um Ihnen bei der Auswahl des besten DNS-Resolvers für Ihr Netzwerk zu helfen. Es wird empfohlen, einen eigenen DNS-Resolver zu verwenden, um die Abhängigkeit von externen DNS-Resolvern zu vermeiden. dnseval kann jedoch bei der Auswahl des optimalen DNS-Resolvers helfen, wenn dies erforderlich ist. Es ermöglicht Ihnen den Vergleich von DNS-Servern basierend auf Leistung (Latenz) und Zuverlässigkeit (Paketverlust) 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 eine optimale Flexibilität und Kontrolle zu gewährleisten.
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 bestimmten 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, macOS und Linux veröffentlicht. Sie können die neueste Version von der Release-Seite herunterladen.
Vorgefertigte Binärdateien sind verfügbar für:
Windows ARM64 wird derzeit nicht unterstützt, da die Build-Abhängigkeiten native Compiler-Toolchains erfordern, die nicht ohne Weiteres verfügbar sind. Wenn Sie Windows auf ARM verwenden, können Sie dnsdiag mit dem Windows-Subsystem für 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-Abfrage mehrmals senden. Eine vollständige Liste der unterstützten Befehlszeilenoptionen finden 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 die Name Server Identifier (NSID) anzuzeigen, falls verfügbar (RFC 5001).--ecs, um EDNS-Client-Subnetz-Informationen für die geografische Routing-Optimierung einzubeziehen.--cookie, um DNS-Cookies anzuzeigen (RFC 7873), 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../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]