
Schnelles, umfassendes DNS-Performance-Testing mit DNSSEC-Validierung, DoH/DoT-Unterstützung und Enterprise-Funktionen
⚠️ Dieses Projekt wurde verschoben und wird nicht mehr gewartet. Installieren Sie den Nachfolger:
pip install net-benchmarkRepository: https://github.com/net-benchmark/net-benchmark Alle vorhandenen Befehle und Flags bleiben vollständig kompatibel.
Schnelle, umfassende DNS-Leistungstests mit DNSSEC-Validierung, DoH/DoT-Unterstützung und Unternehmensfunktionen```bash pip install dns-benchmark-tool dns-benchmark benchmark --use-defaults --formats csv,excel
> 🎉 **1.400+ Downloads · 600+ aktive Nutzer**
> 🚀 **Das Web-Dashboard ist jetzt live!** [BuildTools kostenlos testen →](https://buildtools.net)
---
**Echtzeitverfolgung**
[](https://github.com/frankovo/dns-benchmark-tool)
*Beobachten Sie DNS-Abfragen in Echtzeit*
**Echtzeitverfolgung - Web-UI**
[](https://github.com/frankovo/dns-benchmark-tool)
*Überwachen Sie DNS-Abfragen live mit E-Mail-Benachrichtigungen*
</div>
## 🎉 Was gibt es Neues in 
Wir haben **drei leistungsstarke CLI-Befehle** und volle Unterstützung für **DoH, DoT und DNSSEC** hinzugefügt:
- 🚀 **top** — schnelles Ranking der Resolver nach Geschwindigkeit und Zuverlässigkeit
- 📊 **compare** — vergleichendes Benchmarking mit detaillierten Statistiken und Exportoptionen
- 🔄 **monitoring** — kontinuierliche Leistungsüberwachung mit Benachrichtigungen und Protokollierung
- 🔒 **DoH / DoT / DNSSEC** — verschlüsseltes DNS-Benchmarking mit echten Latenz-Kompromiss-Daten```bash
# Quick resolver ranking
dns-benchmark top
# Compare resolvers side-by-side
dns-benchmark compare Cloudflare Google Quad9 --show-details
# Run monitoring for 1 hour with alerts
dns-benchmark monitoring --use-defaults --formats csv,excel --interval 30 --duration 3600 \
--alert-latency 150 --alert-failure-rate 5 --output monitor.log
# Encrypted DNS
dns-benchmark benchmark \
--resolvers "Cloudflare,Google" \
--domains "bing.com,google.com" \
--doh \
--doh-url "https://cloudflare-dns.com/dns-query,https://dns.google/dns-query" \
--iterations 1 \
--formats csv \
--output ./doh_results_explicit_urls
dns-benchmark benchmark \
--resolvers "Cloudflare,Quad9" \
--domains "cloudflare.com,quad9.net" \
--dot
Die DNS-Auflösung ist oft der versteckte Engpass in der Netzwerkleistung. Ein langsamer Resolver kann jeder Anfrage Hunderte von Millisekunden hinzufügen.
dns-benchmark-tool hilft Ihnen:
pip install dns-benchmark-tool
### Führe deinen ersten Benchmark durch```bash
# Test default resolvers against popular domains
dns-benchmark benchmark --use-defaults --formats csv,excel
Ergebnisse werden automatisch in ./benchmark_results/ gespeichert mit:
Das war's! Sie haben gerade 5 DNS-Resolver gegen 10 Domains gebenchmarkt.
dns-benchmark top --limit 5
dns-benchmark compare Cloudflare Google Quad9 --show-details
dns-benchmark monitoring --use-defaults --dot
--interval 30 --duration 3600
--alert-latency 150 --output monitor.log
---
## ✨ Hauptmerkmale
### 🚀 Leistung
- **Asynchrone Abfragen** - Teste 100+ Resolver gleichzeitig
- **Mehrfachiteration** - Führe Benchmarks mehrmals für Genauigkeit durch
- **Statistische Analyse** - Mittelwert, Median, P95, P99, Jitter, Konsistenz
- **Cache-Steuerung** - Teste mit/ohne DNS-Caching
### 🔒 Sicherheit & Datenschutz
- **DNSSEC-Validierung** - Überprüfe kryptografische Vertrauensketten
- **DNS-over-HTTPS (DoH)** - Verschlüsseltes DNS-Benchmarking
- **DNS-over-TLS (DoT)** - Sicheren Transport testen
- **DNS-over-QUIC (DoQ)** - Experimentelle QUIC-Unterstützung
### 📊 Analyse & Export
- **Mehrere Formate** - CSV, Excel, PDF, JSON
- **Visuelle Berichte** - Diagramme und Grafiken
- **Domain-Statistiken** - Leistungsanalyse pro Domain
- **Fehleraufschlüsselung** - Problematische Resolver identifizieren
### 🏢 Enterprise-Funktionen
- **TSIG-Authentifizierung** - Sichere Unternehmensabfragen
- **Zonentransfers** - AXFR/IXFR-Validierung
- **Dynamische Aktualisierungen** - DNS-Schreiboperationen testen
- **Compliance-Berichte** - Prüfbereite Dokumentation
### 🌐 Plattformübergreifend
- **Linux, macOS, Windows** - Funktioniert überall
- **CI/CD-freundlich** - JSON-Ausgabe, Exit-Codes
- **IDNA-Unterstützung** - Internationalisierte Domainnamen
- **Automatische Erkennung** - Windows WMI DNS-Erkennung
---
## 🔒 Sicherheit & verschlüsseltes DNS
Drei Protokolle werden vollständig unterstützt – jedes fügt Privatsphäre auf Kosten der Latenz hinzu.
| Protokoll | Flag | Typischer Overhead | Verwendungszweck |
|---|---|---|---|
| Plain UDP | *(standard)* | Basislinie | Latenz-Benchmarking |
| DNS-over-HTTPS | `--doh` | +50–200 ms | Privatsphäre, Firewall-Umgehung |
| DNS-over-TLS | `--dot` | +200–500 ms kalt, ~50 ms warm | Verschlüsselter Transport |
| DNSSEC | `--dnssec-validate` | +30–100 ms | Validierung der Resolver-Integrität |
> ⚠️ **Abwägungen**
> - DoH und DoT fügen TLS-Handshake-Overhead bei der ersten Abfrage pro Resolver hinzu. Verwende `--warmup-fast`, um dies vor der Messung zu absorbieren.
> - `--dnssec-validate` fordert RRSIG-Datensätze an und erzwingt das AD-Flag. Nur ~33% der gängigen Domains sind DNSSEC-signiert – erwarte `DNSSEC_FAILED`-Ergebnisse bei unsignierten Domains. Latenzzahlen mit und ohne dieses Flag sind **nicht direkt vergleichbar**.
> - Ergebnisse auf mobilen/Hotspot-Verbindungen zeigen eine 2–5× höhere Varianz als kabelgebundenes Ethernet. Verwende `--iterations 5` und vergleiche die mediane Latenz, nicht den Durchschnitt.```bash
# DoH benchmark
dns-benchmark benchmark \
--resolvers "Cloudflare,Google" \
--domains "cloudflare.com,google.com" \
--doh --warmup-fast
# custom resolvers — must supply urls 1:1, order matters, or it fails early
dns-benchmark benchmark \
--resolvers "Cloudflare,Google" \
--domains "bing.com,google.com" \
--doh \
--doh-url "https://cloudflare-dns.com/dns-query,https://dns.google/dns-query" \
--iterations 1 \
--formats csv \
--output ./doh_results_explicit_urls
# DoT with DNSSEC on signed domains
dns-benchmark benchmark \
--resolvers "Cloudflare,Quad9" \
--domains "cloudflare.com,quad9.net" \
--dot \
--dnssec-validate
# DOH rank top resolvers
dns-benchmark top --doh --limit 5
# DOT rank top resolvers
dns-benchmark top --dot --metric reliability --limit 5
# Compare DoH resolvers
dns-benchmark compare Cloudflare Google --doh --iterations 3
# Monitor with DoT
dns-benchmark monitoring --use-defaults --dot \
--interval 60 --alert-latency 300
# DoH + DNSSEC enforced + export
dns-benchmark benchmark --use-defaults --doh --dnssec-validate --formats csv,excel
# DoT + DNSSEC enforced + multiple iterations
dns-benchmark benchmark \
--resolvers "Cloudflare,Quad9,Google" \
--domains "cloudflare.com,quad9.net,google.com" \
--dot \
--dnssec-validate \
--iterations 5 \
--formats excel
# DoH + custom urls + monitoring
dns-benchmark monitoring \
--resolvers "Cloudflare,Google" \
--doh \
--doh-url "https://cloudflare-dns.com/dns-query,https://dns.google/dns-query" \
--interval 30 --duration 7200
Frühe Fehlerbeispiele — diese schlagen sofort fehl, bevor eine Abfrage ausgeführt wird:```bash
dns-benchmark benchmark --use-defaults --doh --dot
dns-benchmark benchmark --resolvers "Cloudflare,Google" --doh
--doh-url "https://cloudflare-dns.com/dns-query"
dns-benchmark benchmark --resolvers "192.168.1.1" --doh
---
## 🔧 Erweiterte Funktionen
---
> ⚠️ Diese Flags sind zur Sichtbarkeit dokumentiert, aber noch nicht implementiert.
> Sie stellen bevorstehende erweiterte Funktionen dar.
- `--zone-transfer` → AXFR/IXFR Zonentransfer-Tests *(demnächst verfügbar)*
- `--tsig` → TSIG-authentifizierte Abfragen *(demnächst verfügbar)*
- `--idna` → Unterstützung internationalisierter Domainnamen *(demnächst verfügbar)*
---
<details>
<summary><b>🚀 Leistungs- und Nebenläufigkeitsfunktionen</b></summary>
<br>
- **Async I/O mit dnspython** - Testen Sie 100+ Resolver gleichzeitig
- **Trio-Framework-Unterstützung** - Asynchrone Operationen mit hoher Nebenläufigkeit
- **Konfigurierbare Nebenläufigkeit** - Maximale gleichzeitige Abfragen steuern
- **Wiederholungslogik** - Exponentielles Backoff für fehlgeschlagene Abfragen
- **Cache-Simulation** - Testen mit/ohne DNS-Caching
- **Multi-Iterations-Benchmarks** - Tests mehrfach ausführen für Genauigkeit
- **Aufwärmphase** - DNS-Caches vor dem Testen vorwärmen
- **Statistische Analyse** - Mittelwert, Median, P95, P99, Jitter, Konsistenzwerte
**Beispiel:**```bash
dns-benchmark benchmark \
--max-concurrent 200 \
--iterations 5 \
--timeout 3.0 \
--warmup
Beispiel:```bash
dns-benchmark benchmark
--doh
--resolvers doh-providers.json
--dnssec-validate
</details>
<details>
<summary><b>🏢 Enterprise- & Migrationsfunktionen</b></summary>
<br>
- **Zonenübertragungen (AXFR/IXFR)** - Validierung von vollständigen und inkrementellen Zonentransfers
- **Dynamische DNS-Updates** - Testen von DNS-Schreibvorgängen und Aktualisierungen
- **EDNS0-Unterstützung** - Erweiterte DNS-Optionen, Client-Subnetz, größere Nutzlasten
- **Windows WMI-Integration** - Automatische Erkennung aktiver System-DNS-Einstellungen
- **Compliance-Berichterstellung** - Generierung prüfungsbereiter PDF/Excel-Berichte
- **SLA-Validierung** - Überwachung von Verfügbarkeits- und Leistungsschwellen
**Beispiel:**```bash
# Validate DNS migration
dns-benchmark benchmark \
--resolvers old-provider.json,new-provider.json \
--zone-transfer \ # coming soon
--output migration-report/ \
--formats pdf,excel
Beispiel:```bash
dns-benchmark benchmark
--use-defaults
--formats csv,excel
--domain-stats
--record-type-stats
--error-breakdown
--formats csv,excel,pdf
</details>
<details>
<summary><b>🌐 Internationalisierung & Kompatibilität</b></summary>
<br>
- **IDNA-Unterstützung** - Internationalisierte Domainnamen (IDN)
- **Mehrere Record-Typen** - A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, SRV, CAA
- **Plattformübergreifend** - Linux, macOS, Windows (native Unterstützung)
- **CI/CD-Integration** - JSON-Ausgabe, korrekte Exit-Codes, Quiet-Modus
- **Benutzerdefinierte Resolver** - Aus JSON laden, eigene DNS-Server testen
- **Benutzerdefinierte Domains** - Testen gegen Ihre spezifische Domain-Liste
**Beispiel:**```bash
# Test internationalized domains
dns-benchmark benchmark \
--domains international-domains.txt \
--record-types A,AAAA,MX \
--resolvers custom-resolvers.json
💡 Die meisten Benutzer benötigen nur grundlegende Funktionen. Diese erweiterten Funktionen stehen zur Verfügung, wenn Sie sie benötigen.
dns-benchmark benchmark
--domains api.myapp.com,cdn.myapp.com
--record-types A,AAAA
--resolvers production.json
--iterations 10
**Ergebnis:** API-Latenz um 100-300 ms reduzieren
---
### 🛡️ Für DevOps/SRE: Vor der Migration validieren```bash
# Test new DNS provider before switching
dns-benchmark benchmark \
--resolvers current-dns.json,new-dns.json \
--use-defaults \
--dnssec-validate \
--output migration-report/ \
--formats csv,excel
Ergebnis: Leistung und Sicherheit vor der Migration überprüfen
dns-benchmark compare
--resolvers pihole.local,1.1.1.1,8.8.8.8,9.9.9.9
--domains common-sites.txt
--rounds 10
**Ergebnis:** Datenbasierter Beweis, dass Ihr selbst gehosteter DNS schneller ist (oder auch nicht!)
---
### 📊 Für Netzwerkadministratoren: Automatisierte Health Checks```bash
# Add to crontab for monthly reports
0 0 1 * * dns-benchmark benchmark \
--use-defaults \
--output /var/reports/dns/ \
--formats excel,csv \
--domain-stats \
--error-breakdown
Ergebnis: Automatisierte Compliance- und SLA-Berichterstattung
dns-benchmark benchmark
--doh
--resolvers privacy-resolvers.json
--domains sensitive-sites.txt
--dnssec-validate
**Ergebnis:** Finde den schnellsten verschlüsselten DNS, ohne die Privatsphäre zu opfern
---
## 📦 Installation & Einrichtung
### Voraussetzungen
- Python 3.9+
- pip Paketverwaltung
### Installation von PyPI```bash
pip install dns-benchmark-tool
git clone https://github.com/frankovo/dns-benchmark-tool.git cd dns-benchmark-tool pip install -e .
### Installation überprüfen```bash
dns-benchmark --version
dns-benchmark --help
dns-benchmark benchmark --use-defaults --formats csv,excel
---
## 📖 Anwendungsbeispiele
### Grundlegende Nutzung```bash
# Basic test with progress bars
dns-benchmark benchmark --use-defaults --formats csv,excel
# Basic test without progress bars
dns-benchmark benchmark --use-defaults --formats csv,excel --quiet
# Test with custom resolvers and domains
dns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.txt
# Quick test with only CSV output
dns-benchmark benchmark --use-defaults --formats csv
dns-benchmark benchmark --use-defaults --json --output ./results
dns-benchmark benchmark --use-defaults --formats csv,excel --record-types A,AAAA,MX
dns-benchmark benchmark
--use-defaults
--output ./my-results
--formats csv,excel
dns-benchmark benchmark
--use-defaults
--formats csv,excel
--record-type-stats
--error-breakdown
dns-benchmark benchmark
--use-defaults
--formats csv,excel
--max-concurrent 200
--timeout 3.0
--retries 3
dns-benchmark benchmark
--resolvers data/global_resolvers.json
--domains data/migration_domains.txt
--formats excel,pdf
--output ./migration_analysis
dns-benchmark benchmark
--resolvers data/provider_candidates.json
--domains data/business_domains.txt
--formats csv,excel
--output ./provider_selection
dns-benchmark benchmark
--resolvers "192.168.1.1,1.1.1.1,8.8.8.8"
--domains "problematic-domain.com,working-domain.com"
--timeout 10
--retries 3
--formats csv
--output ./troubleshooting
dns-benchmark benchmark
--resolvers data/security_resolvers.json
--domains data/security_test_domains.txt
--formats pdf
--output ./security_assessment
dns-benchmark benchmark
--use-defaults
--formats csv
--quiet
--output /var/log/dns_benchmark/$(date +%Y%m%d_%H%M%S)
dns-benchmark top
dns-benchmark top --limit 5
dns-benchmark top --metric success
dns-benchmark top --metric reliability
dns-benchmark top --category privacy dns-benchmark top --category family dns-benchmark top --category security
dns-benchmark top --domains domains.txt
dns-benchmark top --record-types A,AAAA,MX
dns-benchmark top --timeout 3.0 --max-concurrent 50
dns-benchmark top --output results.json
dns-benchmark top --output results.csv
dns-benchmark top --output results.txt
dns-benchmark top --quiet
dns-benchmark top --limit 10 --metric reliability --category privacy --output top_resolvers.csv
dns-benchmark compare Cloudflare Google Quad9
dns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9
dns-benchmark compare "Cloudflare" "Google" --iterations 5
dns-benchmark compare Cloudflare Google -d ./data/domains.txt
dns-benchmark compare Cloudflare Google -t A,AAAA,MX
dns-benchmark compare Cloudflare Google --timeout 3.0 --max-concurrent 200
dns-benchmark compare Cloudflare Google -o results.json
dns-benchmark compare Cloudflare Google -o results.csv
dns-benchmark compare Cloudflare Google --quiet
dns-benchmark compare Cloudflare Google --show-details
dns-benchmark monitoring --use-defaults
dns-benchmark monitoring -r resolvers.json --use-defaults
dns-benchmark monitoring -d domains.txt --use-defaults
dns-benchmark monitoring --use-defaults --interval 30
dns-benchmark monitoring --use-defaults --duration 3600
dns-benchmark monitoring --use-defaults --alert-latency 150 --alert-failure-rate 5
dns-benchmark monitoring --use-defaults --output monitor.log
dns-benchmark monitoring -r resolvers.json -d domains.txt -i 45 --duration 1800 -o monitor.log
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600
--alert-latency 150 --alert-failure-rate 5 --output monitor.log
---
⚠️ **Hinweis für neue Befehle:** Resolver ohne erfolgreiche Abfragen werden aus der Rangliste ausgeschlossen und zeigen `Avg Latency: N/A` an.
---
## Inline-Eingabeunterstützung für Resolver und Domains
Dieser Patch führt die vollständige Unterstützung für kommagetrennte Inline-Werte für die Flags `--resolvers` und `--domains` ein, behebt das Problem [#39](https://github.com/frankovo/dns-benchmark-tool/issues/39) und verbessert die CLI-Benutzerfreundlichkeit, ohne bestehende Arbeitsabläufe zu unterbrechen.
### Neue Funktionen
1. **Inline-Resolver**: `--resolvers "1.1.1.1,8.8.8.8,9.9.9.9"`
2. **Inline-Domains**: `--domains "google.com,github.com"`
3. **Einzelne Werte**: `--resolvers "1.1.1.1"` oder `--domains "google.com"`
4. **Benannte Resolver**: `--resolvers "cloudflare,google,quad9"`
5. **Gemischte Eingabe**: `--resolvers "1.1.1.1,cloudflare,8.8.8.8"`
### Rückwärtskompatibilität
- alle vorhandenen dateibasierten Konfigurationen funktionieren weiterhin
- keine bahnbrechenden Änderungen an der CLI
- Die Dateierkennung hat Vorrang vor der Inline-Parsing
### Nutzungsbeispiele
#### Vorher (Nur Dateien funktionierten)```bash
dns-benchmark benchmark \
--resolvers data/resolvers.json \
--domains data/domains.txt
dns-benchmark benchmark
--resolvers "1.1.1.1,8.8.8.8,9.9.9.9"
--domains "google.com,github.com"
--timeout 10
--retries 3
--formats csv
--output ./troubleshooting
dns-benchmark benchmark
--resolvers data/resolvers.json
--domains data/domains.txt
--formats csv
#### Benannte Resolver```bash
# Named resolvers
dns-benchmark benchmark \
--resolvers "Cloudflare,Google,Quad9" \
--domains "google.com,github.com" \
--timeout 10 \
--retries 3 \
--formats csv \
--output ./troubleshooting_named
dns-benchmark benchmark
--resolvers "1.1.1.1,Cloudflare,8.8.8.8"
--domains "google.com,github.com"
--timeout 10
--retries 3
--formats csv
--output ./troubleshooting_mixed
#### Einzel```bash
# Single
dns-benchmark benchmark \
--resolvers "1.1.1.1" \
--domains "google.com" \
--timeout 10 \
--retries 3 \
--formats csv \
--output ./troubleshooting
dns-benchmark list-defaults
dns-benchmark list-resolvers
dns-benchmark list-resolvers --details
dns-benchmark list-resolvers --category security dns-benchmark list-resolvers --category privacy dns-benchmark list-resolvers --category family
dns-benchmark list-resolvers --format csv dns-benchmark list-resolvers --format json
### Domainverwaltung```bash
# List all test domains
dns-benchmark list-domains
# Show domains by category
dns-benchmark list-domains --category tech
dns-benchmark list-domains --category ecommerce
dns-benchmark list-domains --category social
# Limit results
dns-benchmark list-domains --count 10
dns-benchmark list-domains --category news --count 5
# Export domain list
dns-benchmark list-domains --format csv
dns-benchmark list-domains --format json
dns-benchmark list-categories
### Konfigurationsverwaltung```bash
# Generate sample configuration
dns-benchmark generate-config --output sample_config.yaml
# Category-specific configurations
dns-benchmark generate-config --category security --output security_test.yaml
dns-benchmark generate-config --category family --output family_protection.yaml
dns-benchmark generate-config --category performance --output performance_test.yaml
# Custom configuration for specific use case
dns-benchmark generate-config --category privacy --output privacy_audit.yaml
dns-benchmark benchmark --use-defaults
dns-benchmark benchmark --use-defaults --formats csv --quiet
dns-benchmark benchmark --use-defaults --record-types A,AAAA,MX
Analytik-Flags für Add-ons:```bash
# Include domain and record-type analytics and error breakdown
dns-benchmark benchmark --use-defaults \
--domain-stats --record-type-stats --error-breakdown
JSON-Export:```bash
dns-benchmark benchmark --use-defaults --json --output ./results
#### Netzwerkadministrator```bash
# Compare internal vs external DNS
dns-benchmark benchmark \
--resolvers "192.168.1.1,1.1.1.1,8.8.8.8,9.9.9.9" \
--domains "internal.company.com,google.com,github.com,api.service.com" \
--formats excel,pdf \
--timeout 3 \
--max-concurrent 50 \
--output ./network_audit
# Test DNS failover scenarios
dns-benchmark benchmark \
--resolvers data/primary_resolvers.json \
--domains data/business_critical_domains.txt \
--record-types A,AAAA \
--retries 3 \
--formats csv,excel \
--output ./failover_test
dns-benchmark benchmark
--resolvers data/isp_resolvers.json
--domains data/popular_domains.txt
--timeout 5
--max-concurrent 100
--formats csv,excel,pdf
--output ./isp_performance_analysis
dns-benchmark benchmark
--resolvers data/regional_resolvers.json
--domains data/regional_domains.txt
--formats excel
--quiet
--output ./regional_analysis
#### Entwickler & DevOps```bash
# Test application dependencies
dns-benchmark benchmark \
--resolvers "1.1.1.1,8.8.8.8" \
--domains "api.github.com,registry.npmjs.org,pypi.org,docker.io,aws.amazon.com" \
--formats csv \
--quiet \
--output ./app_dependencies
# CI/CD integration test
dns-benchmark benchmark \
--resolvers data/ci_resolvers.json \
--domains data/ci_domains.txt \
--timeout 2 \
--formats csv \
--quiet
dns-benchmark benchmark
--resolvers data/security_resolvers.json
--domains data/malware_test_domains.txt
--formats csv,pdf
--output ./security_audit
dns-benchmark benchmark
--resolvers data/privacy_resolvers.json
--domains data/tracking_domains.txt
--formats excel
--output ./privacy_analysis
#### Unternehmens-IT```bash
# Corporate network assessment
dns-benchmark benchmark \
--resolvers data/enterprise_resolvers.json \
--domains data/corporate_domains.txt \
--record-types A,AAAA,MX,TXT,SRV \
--timeout 10 \
--max-concurrent 25 \
--retries 2 \
--formats csv,excel,pdf \
--output ./enterprise_dns_audit
# Multi-location testing
dns-benchmark benchmark \
--resolvers data/global_resolvers.json \
--domains data/international_domains.txt \
--formats excel \
--output ./global_performance
Das DNS-Benchmark-Tool enthält jetzt drei spezialisierte Befehle für verschiedene Arbeitsabläufe:
Schnell nach Geschwindigkeit und Zuverlässigkeit sortieren.```bash
dns-benchmark top
dns-benchmark top -d domains.txt
dns-benchmark top -o results.json
### 📊 Vergleichen
Vergleichen Sie Resolver nebeneinander mit detaillierten Statistiken.```bash
# Compare Cloudflare, Google, and Quad9
dns-benchmark compare Cloudflare Google Quad9
# Compare by IP addresses
dns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9
# Show detailed per-domain breakdown
dns-benchmark compare Cloudflare Google --show-details
# Export results to CSV
dns-benchmark compare Cloudflare Google -o results.csv
Überwachen Sie kontinuierlich die Resolver-Leistung mit Benachrichtigungen.```bash
dns-benchmark monitoring --use-defaults
dns-benchmark monitoring -r resolvers.json -d domains.txt
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600
--alert-latency 150 --alert-failure-rate 5 --output monitor.log
---
### 🌟 Befehlsübersicht
| Befehl | Zweck | Typischer Anwendungsfall | Wichtige Optionen | Ausgabe |
|--------------|-------|--------------------------|-------------------|---------|
| **top** | Schnelles Ranking der Resolver nach Geschwindigkeit und Zuverlässigkeit | Schnelle Überprüfung, welcher Resolver aktuell am besten ist | `--domains`, `--record-types`, `--output` | Sortierte Liste der Resolver mit Latenz & Erfolgsrate |
| **compare** | Gegenüberstellung bestimmter Resolver | Detailliertes Benchmarking über ausgewählte Resolver/Domains hinweg | `--domains`, `--record-types`, `--iterations`, `--output`, `--show-details` | Tabelle der Resolver mit Latenz, Erfolgsrate, Aufschlüsselung pro Domain |
| **monitoring** | Kontinuierliche Überwachung mit Alarmen | Echtzeit-Verfolgung der Resolver-Leistung über die Zeit | `--interval`, `--duration`, `--alert-latency`, `--alert-failure-rate`, `--output`, `--use-defaults` | Live-Statusanzeigen, Alarme, optionale Logdatei |
---
## 📊 Analyseverbesserungen
- **Iterationsanzahl**: wird angezeigt, wenn mehr als eine Iteration ausgeführt wird.
- **Cache-Treffer**: zeigt an, wie viele Abfragen aus dem Cache bedient wurden (wenn `--use-cache` aktiviert ist).
- **Fehlerverfolgung**: Resolver mit wiederholten Fehlern werden gezählt und können mit `get_failed_resolvers()` eingesehen werden.
- **Cache-Statistiken**: verfügbar über `get_cache_stats()`, zeigt die Anzahl der zwischengespeicherten Einträge und ob der Cache aktiviert ist.
- **Warmup-Ergebnisse**: Warmup-Abfragen werden in den Rohdaten mit `iteration=0` markiert, sodass sie in der Analyse leicht herausgefiltert werden können.
Beispiel für eine Zusammenfassungsausgabe:```markdown
=== BENCHMARK SUMMARY ===
Total queries: 150
Successful: 140 (93.33%)
Average latency: 212.45 ms
Median latency: 198.12 ms
Fastest resolver: Cloudflare
Slowest resolver: Quad9
Iterations: 3
Cache hits: 40 (26.7%)
{ "resolvers": [ { "name": "Cloudflare", "ip": "1.1.1.1", "ipv6": "2606:4700:4700::1111" }, { "name": "Google DNS", "ip": "8.8.8.8", "ipv6": "2001:4860:4860::8888" } ] }
### Textdateiformat für Domänen```txt
# Popular websites
google.com
github.com
stackoverflow.com
# Corporate domains
microsoft.com
apple.com
amazon.com
# CDN and cloud
cloudflare.com
aws.amazon.com
Standardmäßig unterstützt das Tool CSV- und Excel-Exporte.
Der PDF-Export erfordert die zusätzliche Abhängigkeit weasyprint, die nicht automatisch installiert wird, um Laufzeitprobleme auf einigen Plattformen zu vermeiden.
pip install dns-benchmark-tool[pdf]
#### Verwendung
Sobald es installiert ist, können Sie die PDF-Ausgabe über die CLI anfordern:```bash
dns-benchmark --use-defaults --formats pdf --output ./results
Falls weasyprint nicht installiert ist und Sie eine PDF-Ausgabe anfordern, zeigt die CLI:```bash
[-] Error during benchmark: PDF export requires 'weasyprint'. Install with: pip install dns-benchmark-tool[pdf]
---
### ⚠️ WeasyPrint Einrichtung (für PDF-Export)
Das DNS-Benchmark-Tool nutzt **WeasyPrint**, um PDF-Berichte zu erstellen.
Wenn Sie einen PDF-Export wünschen, benötigen Sie zusätzliche Systembibliotheken zusätzlich zum Python-Paket.
#### 🛠 Linux (Debian/Ubuntu)```bash
sudo apt install python3-pip libpango-1.0-0 libpangoft2-1.0-0 \
libharfbuzz-subset0 libjpeg-dev libopenjp2-7-dev libffi-dev
brew install pango cairo libffi gdk-pixbuf jpeg openjpeg harfbuzz
---
#### 🛠 Windows
Installieren Sie die GTK+ Bibliotheken mit einer dieser Methoden:
- **MSYS2**: [MSYS2 herunterladen](https://www.msys2.org/), dann ausführen: ```bash
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-libffi
Starten Sie Ihr Terminal nach der Installation neu.
Nach der Installation der Systembibliotheken installieren Sie das Python-Extra:```bash pip install dns-benchmark-tool[pdf]
Dann führe aus:```bash
dns-benchmark --use-defaults --formats pdf --output ./results
dns-benchmark generate-config
--category privacy
--output my-config.yaml
## Leistungsoptimierung```bash
# Large-scale testing (1000+ queries)
dns-benchmark benchmark \
--resolvers data/many_resolvers.json \
--domains data/many_domains.txt \
--max-concurrent 50 \
--timeout 3 \
--quiet \
--formats csv
# Unstable networks
dns-benchmark benchmark \
--resolvers data/backup_resolvers.json \
--domains data/critical_domains.txt \
--timeout 10 \
--retries 3 \
--max-concurrent 10
# Quick diagnostics
dns-benchmark benchmark \
--resolvers "1.1.1.1,8.8.8.8" \
--domains "google.com,cloudflare.com" \
--formats csv \
--quiet \
--timeout 2
pip install -e . python -m dns_benchmark.cli --help
sudo apt-get install libcairo2 libpango-1.0-0 libpangocairo-1.0-0
libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
dns-benchmark benchmark --use-defaults --formats csv,excel
dns-benchmark benchmark --use-defaults --timeout 10 --retries 3 dns-benchmark benchmark --use-defaults --max-concurrent 25
### Debug-Modus```bash
# Verbose run
python -m dns_benchmark.cli benchmark --use-defaults --formats csv
# Minimal configuration
dns-benchmark benchmark --resolvers "1.1.1.1" --domains "google.com" --formats csv
0 2 * * * /usr/local/bin/dns-benchmark benchmark --use-defaults --formats csv --quiet --output /var/log/dns_benchmark/daily_$(date +%Y%m%d)
0 */6 * * * /usr/local/bin/dns-benchmark benchmark --use-defaults --formats csv --quiet --output /var/log/dns_benchmark/$(date +%Y%m%d_%H)
### GitHub Actions Beispiel```yaml
- name: DNS Performance Test
run: |
pip install dnspython pandas click tqdm colorama
dns-benchmark benchmark \
--resolvers "1.1.1.1,8.8.8.8" \
--domains "api.service.com,database.service.com" \
--formats csv \
--quiet
Platzieren Sie Bilder in docs/screenshots/:
docs/screenshots/cli_run.pngdocs/screenshots/excel_report.pngdocs/screenshots/pdf_summary.pngdocs/screenshots/pdf_charts.pngdocs/screenshots/excel_charts.pngdocs/screenshots/real_time_monitoring.pngdns-benchmark --help dns-benchmark benchmark --help dns-benchmark list-resolvers --help dns-benchmark list-domains --help dns-benchmark list-categories --help dns-benchmark generate-config --help
Häufige Szenarien:```bash
# I'm new — where to start?
dns-benchmark list-defaults
dns-benchmark benchmark --use-defaults
# Test specific resolvers
dns-benchmark list-resolvers --category security
dns-benchmark benchmark --resolvers data/security_resolvers.json --use-defaults
# Generate a management report
dns-benchmark benchmark --use-defaults --formats excel,pdf \
--domain-stats --record-type-stats --error-breakdown --json \
--output ./management_report
Voraussetzungen
make gpg-check aus, um zu überprüfen.Release vorbereiten (signiert)
Patch/Minor/Major-Erhöhung:
make release-patch # or: make release-minor / make release-major
release/X.Y.Z wieder.PR öffnen: von release/X.Y.Z in main, dann mergen, sobald CI bestanden ist.
Taggen und veröffentlichen
Signierten Tag erstellen und pushen:
make release-tag VERSION=X.Y.Z
vX.Y.Z (signiert).Manuelle Alternative
Branch erstellen und signiert committen:
CLI bleibt für immer kostenlos. Das Web-Dashboard ist jetzt verfügbar unter buildtools.net
→ Kostenlos anmelden bei buildtools.net
Wir lieben Beiträge! So können Sie helfen:
Dieses Projekt enthält ein Makefile, um Installation, Tests und Code-Qualitätsprüfungen zu vereinfachen.```makefile
.PHONY: install install-dev uninstall mypy black isort flake8 cov test clean cli-test
install: pip install .
install-dev: pip install .[dev]
uninstall:
pip uninstall -y dns-benchmark-tool
dnspython pandas aiohttp click pyfiglet colorama Jinja2 weasyprint openpyxl pyyaml tqdm matplotlib
mypy black flake8 autopep8 pytest coverage isort
mypy: mypy .
isort: isort .
black: black .
flake8: flake8 src tests --ignore=E126,E501,E712,F405,F403,E266,W503 --max-line-length=88 --extend-ignore=E203
cov: coverage erase coverage run --source=src -m pytest -vv -s coverage html
test: mypy black isort flake8 cov
clean:
rm -rf pycache .pytest_cache htmlcov .coverage coverage.xml
build dist *.egg-info .eggs benchmark_results
cli-test:
pytest -vv -s -m cli tests/test_cli_commands.py
### Häufige Verwendung
- **Nur Laufzeit installieren** ```bash
make install
Lokales ISP-DNS hat oft Caching-Vorteile, kann aber Folgendes vermissen:
Teste beide und entscheide basierend auf DEINEN Prioritäten!
Ja! Füge es einfach zu einer benutzerdefinierten Resolver-JSON-Datei hinzu:```json { "resolvers": [ {"name": "My DNS", "ip": "192.168.1.1"} ] }
</details>
<details>
<summary><b>Was ist der Unterschied zwischen der CLI und der gehosteten Version?</b></summary>
**CLI (Kostenlos für immer):**
- Führt Tests von IHREM Standort aus
- Speichert Ergebnisse lokal
- Open Source – dieselbe Engine, die auch das Dashboard antreibt
**Web-Dashboard (Live unter buildtools.net):**
- Visuelle Benchmark-Ergebnisse und Verlauf
- DNS-Überwachung mit Echtzeit-Benachrichtigungen
- Kostenlose Stufe verfügbar, Pro für 14 €/Monat
- Multi-Region-Tests kommen im Q3 2026
</details>
<details>
<summary><b>Ist dieses Tool sicher für den produktiven Einsatz?</b></summary>
Ja! Das Tool führt nur DNS-Abfragen (Leseoperationen) durch. Es führt NICHT:
- Änderungen an DNS-Einträgen durch
- Führt Angriffe aus
- Sendet Daten an externe Server (es sei denn, Sie aktivieren gehostete Funktionen)
Alle Tests sind standardmäßige DNS-Abfragen, die jeder Resolver täglich verarbeitet.
</details>
<details>
<summary><b>Warum variieren die Ergebnisse zwischen den Durchläufen?</b></summary>
Die DNS-Leistung variiert aufgrund von:
- Netzwerkbedingungen
- DNS-Caching (Resolver und zwischengeschaltet)
- Serverauslastung
- Änderungen der geografischen Weiterleitung
Führen Sie mehrere Iterationen durch (`--iterations 5`) für gleichmäßigere Ergebnisse.
</details>
---
## 🔗 Links & Support
### Offiziell
- **Website**: [buildtools.net](https://buildtools.net)
- **PyPI**: [dns-benchmark-tool](https://pypi.org/project/dns-benchmark-tool/)
- **GitHub**: [frankovo/dns-benchmark-tool](https://github.com/frankovo/dns-benchmark-tool)
### Community
- **Diskussionen**: [GitHub Discussions](https://github.com/frankovo/dns-benchmark-tool/discussions)
- **Issues**: [Fehler melden](https://github.com/frankovo/dns-benchmark-tool/issues)
### Statistiken
- **Downloads**: 1.400+ (diese Woche)
- **Aktive Benutzer**: 600+
---
## Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe Datei [LICENSE](https://github.com/net-benchmark/dns-benchmark-tool/blob/HEAD/LICENSE) für Details.
---
<div align="center">
**Mit ❤️ erstellt von [@frankovo](https://github.com/frankovo)**
Teil von [BuildTools](https://buildtools.net) – Network Performance Suite
[⭐ Auf GitHub sterne geben](https://github.com/frankovo/dns-benchmark-tool) • [📦 Von PyPI installieren](https://pypi.org/project/dns-benchmark-tool/)
</div>
| Befehl | Funktion | Kurzes Beispiel |
|---|
benchmark | Vollständiger DNS-Benchmark mit Exporten | dns-benchmark benchmark --use-defaults |
top | Alle Resolver nach Geschwindigkeit bewerten | dns-benchmark top --limit 5 |
compare | Resolver-Vergleich nebeneinander | dns-benchmark compare Cloudflare Google Quad9 |
monitoring | Kontinuierliche Überwachung mit Benachrichtigungen | dns-benchmark monitoring --use-defaults |
| Option | Beschreibung | Beispiel |
|---|
--iterations, -i | Führe die vollständige Benchmark-Schleife N mal aus | dns-benchmark benchmark --use-defaults -i 3 |
--use-cache | Erlaube die Wiederverwendung von zwischengespeicherten Ergebnissen über Iterationen hinweg | dns-benchmark benchmark --use-defaults -i 3 --use-cache |
--warmup | Führe einen vollständigen Warmup durch (alle Resolver × Domains × Record-Typen) | dns-benchmark benchmark --use-defaults --warmup |
--warmup-fast | Führe einen leichgewichtigen Warmup durch (ein Test pro Resolver) | dns-benchmark benchmark --use-defaults --warmup-fast |
--include-charts | Bette Diagramme und Grafiken in PDF/Excel-Berichte ein für visuelle Leistungsanalyse | dns-benchmark benchmark --use-defaults --formats pdf,excel --include-charts |
| Modus | Empfohlene Flags | Zweck |
|---|
| Schnelllauf | --iterations 1 --timeout 1 --retries 0 --warmup-fast | Schnelles Feedback, minimale Wiederholungen, leichtes Aufwärmen. Gut für schnelle Überprüfungen. |
| Gründlicher Lauf | --iterations 3 --use-cache --warmup --timeout 5 --retries 2 | Mehrere Durchläufe, Cache aktiviert, vollständiges Aufwärmen. Am besten für detaillierte Benchmarks. |
| Debug-Modus | --iterations 1 --timeout 10 --retries 0 --quiet | Langes Timeout, keine Wiederholungen, minimale Ausgabe. Nützlich zur Diagnose von Resolver-Problemen. |
| Ausgeglichener Lauf | --iterations 2 --use-cache --warmup-fast --timeout 2 --retries 1 | Ein Mittelweg: moderate Geschwindigkeit, einige Wiederholungen, Cache aktiviert, schnelles Aufwärmen. |
git checkout -b release/manually-update-version-based-on-release-pattern
git add .
git commit -S -m "Release release/$NEXT_VERSION"
git push origin release/$NEXT_VERSION
PR öffnen und in main mergen.
Dann taggen:
make release-tag VERSION=$NEXT_VERSION
Hinweise
git commit -S ...git tag -s vX.Y.Z -m "Release vX.Y.Z"pyproject.toml und src/dns_benchmark/__init__.py