
高速かつ包括的なDNSパフォーマンステスト(DNSSEC検証、DoH/DoT対応、エンタープライズ機能搭載)
⚠️ このプロジェクトは移転し、メンテナンスされていません。 後継をインストール:
pip install net-benchmarkリポジトリ:https://github.com/net-benchmark/net-benchmark 既存のすべてのコマンドとフラグは完全に互換性があります。
DNSSEC検証、DoH/DoT対応、エンタープライズ機能を備えた高速かつ包括的なDNSパフォーマンステスト```bash pip install dns-benchmark-tool dns-benchmark benchmark --use-defaults --formats csv,excel
> 🎉 **1,400以上のダウンロード · 600以上のアクティブユーザー**
> 🚀 **Webダッシュボードが公開されました!** [BuildToolsを無料で試す →](https://buildtools.net)
---
**リアルタイムトラッキング**
[](https://github.com/frankovo/dns-benchmark-tool)
*DNSクエリの動きを監視*
**リアルタイムトラッキング - Web UI**
[](https://github.com/frankovo/dns-benchmark-tool)
*DNSクエリをリアルタイムで監視し、メールアラートを送信*
</div>
## 🎉 新着情報 
3つの強力なCLIコマンドと、DoH、DoT、DNSSECの完全サポートを追加しました:
- 🚀 **top** — リゾルバの速度と信頼性による簡単なランキング
- 📊 **compare** — 詳細な統計とエクスポートオプションによる並行ベンチマーク
- 🔄 **monitoring** — アラートとログによる継続的なパフォーマンス追跡
- 🔒 **DoH / DoT / DNSSEC** — 実際のレイテンシトレードオフデータによる暗号化DNSベンチマーク```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
DNS解決は、ネットワークパフォーマンスの隠れたボトルネックであることがよくあります。遅いリゾルバーは、すべてのリクエストに数百ミリ秒を追加する可能性があります。
dns-benchmark-tool は以下を支援します:
pip install dns-benchmark-tool
### 最初のベンチマークを実行する```bash
# Test default resolvers against popular domains
dns-benchmark benchmark --use-defaults --formats csv,excel
結果は自動的に ./benchmark_results/ に保存され、以下が含まれます:
以上です! 10個のドメインに対して5つのDNSリゾルバのベンチマークを実行しました。
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
---
## ✨ 主な機能
### 🚀 パフォーマンス
- **非同期クエリ** - 100以上のリゾルバを同時にテスト
- **複数回の反復** - 精度向上のためにベンチマークを複数回実行
- **統計分析** - 平均、中央値、P95、P99、ジッタ、一貫性
- **キャッシュ制御** - DNSキャッシュの有無でテスト
### 🔒 セキュリティとプライバシー
- **DNSSEC検証** - 暗号化された信頼チェーンを検証
- **DNS-over-HTTPS (DoH)** - 暗号化DNSベンチマーク
- **DNS-over-TLS (DoT)** - セキュアなトランスポートテスト
- **DNS-over-QUIC (DoQ)** - 実験的なQUICサポート
### 📊 分析とエクスポート
- **複数フォーマット** - CSV、Excel、PDF、JSON
- **ビジュアルレポート** - チャートとグラフ
- **ドメイン統計** - ドメインごとのパフォーマンス分析
- **エラー内訳** - 問題のあるリゾルバの特定
### 🏢 エンタープライズ機能
- **TSIG認証** - セキュアなエンタープライスクエリ
- **ゾーン転送** - AXFR/IXFR検証
- **動的更新** - DNS書き込み操作のテスト
- **コンプライアンスレポート** - 監査に対応したドキュメント
### 🌐 クロスプラットフォーム
- **Linux、macOS、Windows** - どこでも動作
- **CI/CD対応** - JSON出力、終了コード
- **IDNAサポート** - 国際化ドメイン名
- **自動検出** - Windows WMI DNSディスカバリ
---
## 🔒 セキュリティと暗号化DNS
3つのプロトコルが完全サポートされています。それぞれレイテンシコストを追加しながらプライバシーを提供します。
| プロトコル | フラグ | 一般的なオーバーヘッド | 使用時 |
|---|---|---|---|
| プレーンUDP | *(デフォルト)* | ベースライン | レイテンシベンチマーク |
| DNS-over-HTTPS | `--doh` | +50~200ms | プライバシー、ファイアウォール回避 |
| DNS-over-TLS | `--dot` | +200~500ms(コールド)、約50ms(ウォーム) | 暗号化トランスポート |
| DNSSEC | `--dnssec-validate` | +30~100ms | リゾルバの整合性検証 |
> ⚠️ **トレードオフ**
> - DoHとDoTは、リゾルバごとの最初のクエリにTLSハンドシェイクのオーバーヘッドを追加します。測定前に `--warmup-fast` を使用してこれを吸収してください。
> - `--dnssec-validate` はRRSIGレコードを要求し、ADフラグを強制します。一般的なドメインのうちDNSSECで署名されているのは約33%のみです。署名されていないドメインでは `DNSSEC_FAILED` が返されることがあります。このフラグありとなしのレイテンシ数値は**直接比較できません**。
> - モバイル/ホットスポットでの結果は、有線イーサネットと比較して2~5倍のバラつきを示します。`--iterations 5` を使用し、平均ではなく中央値レイテンシを比較してください。```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
初期の失敗例 — これらはクエリ実行直前に失敗します:```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
## 🔧 高度な機能
---
> ⚠️ これらのフラグは**可視性のために文書化されています**が、まだ実装されていません。
> これらは今後の高度な機能を表しています。
- `--zone-transfer` → AXFR/IXFR ゾーン転送テスト *(近日公開予定)*
- `--tsig` → TSIG認証クエリ *(近日公開予定)*
- `--idna` → 国際化ドメイン名サポート *(近日公開予定)*
---
<details>
<summary><b>🚀 パフォーマンスと並行性機能</b></summary>
<br>
- **dnspythonによる非同期I/O** - 100以上のリゾルバを同時にテスト
- **Trioフレームワークサポート** - 高並行非同期操作
- **設定可能な並行性** - 最大同時クエリ数の制御
- **リトライロジック** - 失敗したクエリに対する指数バックオフ
- **キャッシュシミュレーション** - DNSキャッシュあり/なしでのテスト
- **複数回反復ベンチマーク** - 精度向上のための複数回テスト実行
- **ウォームアップフェーズ** - テスト前にDNSキャッシュを事前ウォームアップ
- **統計分析** - 平均、中央値、P95、P99、ジッター、一貫性スコア
**例:**```bash
dns-benchmark benchmark \
--max-concurrent 200 \
--iterations 5 \
--timeout 3.0 \
--warmup
例:```bash
dns-benchmark benchmark
--doh
--resolvers doh-providers.json
--dnssec-validate
</details>
<details>
<summary><b>🏢 エンタープライズ&移行機能</b></summary>
<br>
- **ゾーン転送(AXFR/IXFR)** - 完全ゾーン転送および増分ゾーン転送の検証
- **ダイナミックDNS更新** - DNS書き込み操作と更新のテスト
- **EDNS0サポート** - 拡張DNSオプション、クライアントサブネット、大規模ペイロード
- **Windows WMI統合** - アクティブなシステムDNS設定の自動検出
- **コンプライアンスレポート** - 監査対応のPDF/Excelレポートを生成
- **SLA検証** - 稼働率とパフォーマンスのしきい値を追跡
**例:**```bash
# Validate DNS migration
dns-benchmark benchmark \
--resolvers old-provider.json,new-provider.json \
--zone-transfer \ # coming soon
--output migration-report/ \
--formats pdf,excel
例:```bash
dns-benchmark benchmark
--use-defaults
--formats csv,excel
--domain-stats
--record-type-stats
--error-breakdown
--formats csv,excel,pdf
</details>
<details>
<summary><b>🌐 国際化と互換性</b></summary>
<br>
- **IDNA対応** - 国際化ドメイン名 (IDN)
- **複数のレコードタイプ** - A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, SRV, CAA
- **クロスプラットフォーム** - Linux, macOS, Windows (ネイティブサポート)
- **CI/CD統合** - JSON出力、適切な終了コード、サイレントモード
- **カスタムリゾルバ** - JSONから読み込み、独自のDNSサーバーをテスト
- **カスタムドメイン** - 特定のドメインリストに対してテスト
**例:**```bash
# Test internationalized domains
dns-benchmark benchmark \
--domains international-domains.txt \
--record-types A,AAAA,MX \
--resolvers custom-resolvers.json
💡 ほとんどのユーザーは基本機能のみを必要とします。 これらの高度な機能は、必要なときに利用できます。
dns-benchmark benchmark
--domains api.myapp.com,cdn.myapp.com
--record-types A,AAAA
--resolvers production.json
--iterations 10
**結果:** APIレイテンシを100〜300ms削減
---
### 🛡️ DevOps/SRE向け:移行前に検証```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
結果: 移行前にパフォーマンスとセキュリティを確認する
dns-benchmark compare
--resolvers pihole.local,1.1.1.1,8.8.8.8,9.9.9.9
--domains common-sites.txt
--rounds 10
**結果:** データ駆動型の証明:セルフホストDNSが高速であること(またはそうでないこと)
---
### 📊 ネットワーク管理者向け:自動ヘルスチェック```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
結果: コンプライアンスとSLAレポートの自動化
dns-benchmark benchmark
--doh
--resolvers privacy-resolvers.json
--domains sensitive-sites.txt
--dnssec-validate
**結果:** プライバシーを犠牲にせず最速の暗号化DNSを見つける
---
## 📦 インストールとセットアップ
### 必要条件
- Python 3.9+
- pip package manager
### PyPIからインストール```bash
pip install dns-benchmark-tool
git clone https://github.com/frankovo/dns-benchmark-tool.git cd dns-benchmark-tool pip install -e .
### インストールの確認```bash
dns-benchmark --version
dns-benchmark --help
dns-benchmark benchmark --use-defaults --formats csv,excel
---
## 📖 使用例
### 基本的な使い方```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
---
⚠️ **新しいコマンドに関する注意:** クエリ成功がないリゾルバはランキングから除外され、`Avg Latency: N/A` と表示されます。
---
## リゾルバとドメインのインライン入力サポート
このパッチでは、`--resolvers` および `--domains` フラグにカンマ区切りのインライン値を完全にサポートし、issue [#39](https://github.com/frankovo/dns-benchmark-tool/issues/39) を修正し、既存のワークフローを壊さずにCLIの使いやすさを向上させます。
### 新しい機能
1. **インラインリゾルバ**: `--resolvers "1.1.1.1,8.8.8.8,9.9.9.9"`
2. **インラインドメイン**: `--domains "google.com,github.com"`
3. **単一値**: `--resolvers "1.1.1.1"` または `--domains "google.com"`
4. **名前付きリゾルバ**: `--resolvers "cloudflare,google,quad9"`
5. **混合入力**: `--resolvers "1.1.1.1,cloudflare,8.8.8.8"`
### 後方互換性
- 既存のファイルベースの設定はすべて引き続き動作します
- CLIに破壊的な変更はありません
- ファイル検出がインライン解析より優先されます
### 使用例
#### 以前(ファイルのみ動作)```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
#### 名前付きリゾルバ```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
#### シングル```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
### ドメイン管理```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
### 構成管理```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
アドオン分析フラグ:```bash
# Include domain and record-type analytics and error breakdown
dns-benchmark benchmark --use-defaults \
--domain-stats --record-type-stats --error-breakdown
JSON エクスポート:```bash
dns-benchmark benchmark --use-defaults --json --output ./results
#### ネットワーク管理者```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
#### デベロッパー & 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
#### エンタープライズ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
DNS Benchmark Toolは、異なるワークフローに特化した3つのコマンドを備えています:
速度と信頼性でリゾルバを迅速にランク付けします。```bash
dns-benchmark top
dns-benchmark top -d domains.txt
dns-benchmark top -o results.json
---
### 📊 比較
詳細な統計データを用いてリゾルバーを横並びでベンチマーク比較します。```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
アラートを使用してリゾルバのパフォーマンスを継続的に監視します。```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
### 🌟 コマンドショーケース
| コマンド | 目的 | 典型的なユースケース | 主要オプション | 出力 |
|--------------|---------|------------------|-------------|--------|
| **top** | リゾルバを速度と信頼性で簡単にランク付け | 現在最適なリゾルバを素早く確認 | `--domains`, `--record-types`, `--output` | レイテンシと成功率でソートされたリゾルバ一覧 |
| **compare** | 特定リゾルバの横並び比較 | 選択したリゾルバ/ドメインの詳細ベンチマーク | `--domains`, `--record-types`, `--iterations`, `--output`, `--show-details` | レイテンシ、成功率、ドメイン別内訳の表 |
| **monitoring** | アラート付き継続監視 | リゾルバ性能の経時変化をリアルタイム追跡 | `--interval`, `--duration`, `--alert-latency`, `--alert-failure-rate`, `--output`, `--use-defaults` | ライブステータス表示、アラート、オプションのログファイル |
---
## 📊 分析機能の強化
- **反復回数**: 複数回の反復実行時に表示。
- **キャッシュヒット**: キャッシュから処理されたクエリ数を表示(`--use-cache` 有効時)。
- **失敗追跡**: 繰り返しエラーが発生したリゾルバをカウントし、`get_failed_resolvers()` で確認可能。
- **キャッシュ統計**: `get_cache_stats()` で利用可能。キャッシュエントリ数とキャッシュの有効状態を表示。
- **ウォームアップ結果**: ウォームアップクエリは生データで `iteration=0` とマークされ、分析時に簡単にフィルタリング可能。
出力例のサマリー:```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" } ] }
### ドメインテキストファイル形式```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
--domain-stats使用時)--record-type-stats使用時)--error-breakdown使用時)デフォルトでは、本ツールはCSVおよびExcel出力をサポートしています。
PDF出力には追加の依存関係weasyprintが必要であり、一部のプラットフォームでの実行時問題を避けるため自動的にはインストールされません。
pip install dns-benchmark-tool[pdf]
#### 使い方
インストール後、CLI経由でPDF出力をリクエストできます:```bash
dns-benchmark --use-defaults --formats pdf --output ./results
もし weasyprint がインストールされておらず、PDF出力をリクエストすると、CLIは次のように表示されます:```bash
[-] Error during benchmark: PDF export requires 'weasyprint'. Install with: pip install dns-benchmark-tool[pdf]
---
### ⚠️ WeasyPrintのセットアップ (PDFエクスポート用)
DNS Benchmark Toolは、PDFレポートを生成するために**WeasyPrint**を使用します。
PDFエクスポートを希望する場合は、Pythonパッケージに加えて、追加のシステムライブラリが必要です。
#### 🛠 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
以下のいずれかの方法で GTK+ ライブラリをインストールします:
- **MSYS2**: [MSYS2 をダウンロード](https://www.msys2.org/)、そして実行: ```bash
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-libffi
インストール後、ターミナルを再起動します。
システムライブラリをインストールした後、Pythonエクストラをインストールしてください。```bash pip install dns-benchmark-tool[pdf]
次に実行してください:```bash
dns-benchmark --use-defaults --formats pdf --output ./results
dns-benchmark generate-config
--category privacy
--output my-config.yaml
## パフォーマンス最適化```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
### デバッグモード```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の例```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
画像を 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
一般的なシナリオ:```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
前提条件
make gpg-check を実行して確認してください。リリース準備 (署名付き)
パッチ/マイナー/メジャーバンプ:
make release-patch # or: make release-minor / make release-major
release/X.Y.Z を作成または再利用します。PRを開く: release/X.Y.Z から main へPRを作成し、CI合格後にマージします。
タグ付けと公開
署名タグを作成してプッシュ:
make release-tag VERSION=X.Y.Z
vX.Y.Z を付けます。手動での代替方法
ブランチを作成し、署名付きコミット:
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
CLIは永久に無料です。 Webダッシュボードは buildtools.net で利用可能です。
コントリビューション大歓迎! 以下の方法でご協力いただけます:
このプロジェクトには Makefile が含まれており、インストール、テスト、コード品質チェックを簡素化します。```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
### 一般的な使用方法
- **ランタイムのみをインストール** ```bash
make install
ローカルISPのDNSはキャッシュの利点があることが多いが、以下の点が欠けている可能性がある:
両方をテストし、自分の優先事項に基づいて決めよう!
はい!カスタムリゾルバーのJSONファイルに追加するだけです:```json { "resolvers": [ {"name": "My DNS", "ip": "192.168.1.1"} ] }
</details>
<details>
<summary><b>CLI版とホスト版の違いは何ですか?</b></summary>
**CLI(永久無料):**
- あなたのロケーションからテストを実行
- 結果をローカルに保存
- オープンソース — ダッシュボードと同じエンジン
**Webダッシュボード(buildtools.net で公開中):**
- 視覚的なベンチマーク結果と履歴
- リアルタイムアラート付きDNS監視
- 無料ティアあり、Proは月額€14
- 2026年第3四半期にマルチリージョンテストを予定
</details>
<details>
<summary><b>このツールは本番環境で安全に使用できますか?</b></summary>
はい!このツールはDNSルックアップ(読み取り操作)のみを実行します。以下のことは行いません:
- DNSレコードの変更
- 攻撃の実行
- 外部サーバーへのデータ送信(ホスト機能を有効にしない限り)
すべてのテストは、どのリゾルバーも日常的に処理する標準的なDNSクエリです。
</details>
<details>
<summary><b>実行ごとに結果が異なるのはなぜですか?</b></summary>
DNSパフォーマンスは以下の要因で変動します:
- ネットワーク状態
- DNSキャッシュ(リゾルバーおよび中間)
- サーバー負荷
- 地理的ルーティングの変更
より一貫した結果を得るには、複数回の反復(`--iterations 5`)を実行してください。
</details>
---
## 🔗 リンクとサポート
### 公式
- **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)
### コミュニティ
- **Discussions**: [GitHub Discussions](https://github.com/frankovo/dns-benchmark-tool/discussions)
- **Issues**: [Bug Reports](https://github.com/frankovo/dns-benchmark-tool/issues)
### 統計
- **ダウンロード数**: 今週1,400以上
- **アクティブユーザー**: 600以上
---
## ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細は[LICENSE](https://github.com/net-benchmark/dns-benchmark-tool/blob/HEAD/LICENSE)ファイルをご覧ください。
---
<div align="center">
**❤️を込めて [@frankovo](https://github.com/frankovo) が開発**
[BuildTools](https://buildtools.net) - ネットワークパフォーマンススイートの一部
[⭐ GitHubでスターをつける](https://github.com/frankovo/dns-benchmark-tool) • [📦 PyPIからインストール](https://pypi.org/project/dns-benchmark-tool/)
</div>
| コマンド | 機能 | 簡単な例 |
|---|
benchmark | エクスポート機能付きの完全なDNSベンチマーク | dns-benchmark benchmark --use-defaults |
top | 全てのリゾルバを速度でランク付け | dns-benchmark top --limit 5 |
compare | リゾルバの横並び比較 | dns-benchmark compare Cloudflare Google Quad9 |
monitoring | アラート付きの継続的モニタリング | dns-benchmark monitoring --use-defaults |
| オプション | 説明 | 例 |
|---|
--iterations, -i | フルベンチマークループをN回実行します | dns-benchmark benchmark --use-defaults -i 3 |
--use-cache | キャッシュ結果をイテレーション間で再利用できるようにします | dns-benchmark benchmark --use-defaults -i 3 --use-cache |
--warmup | 完全なウォームアップを実行します(すべてのリゾルバ × ドメイン × レコードタイプ) | dns-benchmark benchmark --use-defaults --warmup |
--warmup-fast | 軽量なウォームアップを実行します(リゾルバごとに1回のプローブ) | dns-benchmark benchmark --use-defaults --warmup-fast |
--include-charts | PDF/Excelレポートにチャートやグラフを埋め込み、パフォーマンスを視覚的に分析します | dns-benchmark benchmark --use-defaults --formats pdf,excel --include-charts |
| モード | 推奨フラグ | 目的 |
|---|
| クイック実行 | --iterations 1 --timeout 1 --retries 0 --warmup-fast | 高速フィードバック、最小限のリトライ、軽量ウォームアップ。簡単な確認に最適。 |
| 詳細実行 | --iterations 3 --use-cache --warmup --timeout 5 --retries 2 | 複数回のパス、キャッシュ有効、完全ウォームアップ。詳細なベンチマークに最適。 |
| デバッグモード | --iterations 1 --timeout 10 --retries 0 --quiet | 長いタイムアウト、リトライなし、最小出力。リゾルバの問題診断に有用。 |
| バランス実行 | --iterations 2 --use-cache --warmup-fast --timeout 2 --retries 1 | 中間的な設定:適度な速度、一部リトライ、キャッシュ有効、クイックウォームアップ。 |
PRを開いてmainにマージします。
その後タグ付け:
make release-tag VERSION=$NEXT_VERSION
注意事項
git commit -S ...git tag -s vX.Y.Z -m "Release vX.Y.Z"pyproject.toml および src/dns_benchmark/__init__.py