Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dns-benchmark-tool — 빠르고 포괄적인 DNS 성능 테스트, DNSSEC 검증, DoH/DoT 지원, 엔터프라이즈 기능 제공 | Kitploit
도구/GitHubGitHub/net-benchmark/dns-benchmark-tool
Encryption/Decryption ToolsNetwork MappingNetwork SecurityPrivacyDNS AnalysisArchived
GitHubnet-benchmark/dns-benchmark-tool

dns-benchmark-tool

빠르고 포괄적인 DNS 성능 테스트, DNSSEC 검증, DoH/DoT 지원, 엔터프라이즈 기능 제공

저장소 보기
363123개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

⚠️ 이 프로젝트는 이동되어 더 이상 유지되지 않습니다. 후속 버전 설치: pip install net-benchmark 저장소: https://github.com/net-benchmark/net-benchmark 모든 기존 명령과 플래그는 완전히 호환됩니다.


DNS 벤치마크 도구

BuildTools - 네트워크 성능 제품군의 일부

DNSSEC 검증, DoH/DoT 지원 및 엔터프라이즈 기능을 갖춘 빠르고 포괄적인 DNS 성능 테스트```bash pip install dns-benchmark-tool dns-benchmark benchmark --use-defaults --formats csv,excel

root@kitploit:~
> 🎉 **1,400+ 다운로드 · 600+ 활성 사용자**
> 🚀 **웹 대시보드가 라이브 되었습니다!** [BuildTools 무료 체험 →](https://buildtools.net)

---

**실시간 추적**

[![실시간 추적](https://assets.kitploit.com/production/public/readmes/9801/abc3e3079146e364e8a291edc0e19bfcaf931bcd7a3db5d7a8d9daf5ed565e94.gif)](https://github.com/frankovo/dns-benchmark-tool)
*DNS 쿼리를 실시간으로 확인하세요*

**실시간 추적 - 웹 UI**
[![실시간 추적 - 웹 UI](https://assets.kitploit.com/production/public/readmes/9801/02b1a1ab9d814fa4de537464def46493c36f96a5d0787a13c2d14eb07dfc2d11.gif)](https://github.com/frankovo/dns-benchmark-tool)
*이메일 알림으로 DNS 쿼리를 실시간 모니터링하세요*

</div>

## 🎉 새로운 기능 ![new](https://img.shields.io/pypi/v/dns-benchmark-tool.svg?color=brightgreen&label=new)

**세 가지 강력한 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

📈 커뮤니티 하이라이트

  • ⭐ 별점: 7 → 110+ (Hacker News 게시 후 증가)
  • 📦 다운로드: 초기 정체 후 200+/일로 회복
  • 🐘 Mastodon: 거기서도 공유했지만, 실제 급증은 HN에서 발생
  • 💬 피드백: HN 커뮤니티의 건설적인 제안이 v0.3.0 → v0.3.1 패치에 직접 반영됨
  • 🚀 핵심 교훈: Hacker News 노출이 채택 모멘텀의 촉매제였음

CI Tests Publish to TestPyPI Publish to PyPI PyPI version PyPI - Python Version

License Coverage

Downloads GitHub stars GitHub forks Issues Last commit Main branch protected

목차

  • DNS Benchmark Tool
    • BuildTools - 네트워크 성능 제품군의 일부
    • 🎉 새로운 기능
    • 📈 커뮤니티 하이라이트
    • 목차
    • 🎯 이 도구가 필요한 이유?
      • 문제점
      • 해결책
      • 이런 분들에게 적합합니다
    • 빠른 시작
      • 설치
      • 첫 번째 벤치마크 실행
      • 결과 보기
    • ⚡ 명령어 한눈에 보기
    • ✨ 주요 기능
      • 🚀 성능
      • 🔒 보안 및 개인정보 보호
      • 📊 분석 및 내보내기
      • 🏢 엔터프라이즈 기능
      • 🌐 크로스 플랫폼
    • 🔒 보안 및 암호화 DNS
    • 🔧 고급 기능
    • 💼 사용 사례
      • 🔧 개발자: API 성능 최적화
      • 🛡️ DevOps/SRE: 마이그레이션 전 검증
      • 🏠 자체 호스터: Pi-hole 성능 입증
      • 📊 네트워크 관리자: 자동화된 상태 점검
      • 🔐 개인정보 보호 옹호자: 암호화 DNS 테스트
    • 📦 설치 및 설정
      • 요구 사항
      • PyPI에서 설치
      • 소스에서 설치
      • 설치 확인
      • 처음 실행
    • 📖 사용 예제
      • 기본 사용법
      • 고급 사용법
    • 리졸버 및 도메인에 대한 인라인 입력 지원
      • 새로운 기능
      • 하위 호환성

🎯 이 도구가 필요한 이유?

DNS 확인은 종종 네트워크 성능의 숨겨진 병목 현상입니다. 느린 리졸버는 모든 요청에 수백 밀리초를 추가할 수 있습니다.

문제점

  • ⏱️ 숨겨진 병목 현상: DNS가 모든 요청에 300ms 이상을 추가할 수 있음
  • 🤷 알 수 없는 성능: 대부분의 개발자는 자신의 DNS를 테스트하지 않음
  • 🌍 위치의 중요성: "가장 빠른" 리졸버는 사용자의 위치에 따라 다름
  • 🔒 보안 차이: DNSSEC, DoH, DoT 지원이 크게 다름

해결책

dns-benchmark-tool이 다음을 도와줍니다:

  • 🔍 가장 빠른 DNS 리졸버를 사용자의 위치에서 찾기
  • 📊 실제 데이터 확보 - P95, P99, 지터, 일관성 점수
  • 🛡️ 보안 검증 - 내장된 DNSSEC 검증
  • 🚀 대규모 테스트 - 수 초 안에 100개 이상의 동시 쿼리

이런 분들에게 적합합니다

  • ✅ 개발자: API 성능 최적화
  • ✅ DevOps/SRE: 리졸버 SLA 검증
  • ✅ 자체 호스터: Pi-hole/Unbound와 공개 DNS 비교
  • ✅ 네트워크 관리자: 규정 준수 점검 실행

빠른 시작

설치```bash

pip install dns-benchmark-tool

root@kitploit:~
### 첫 번째 벤치마크 실행```bash
# Test default resolvers against popular domains
dns-benchmark benchmark --use-defaults --formats csv,excel

결과 보기

결과는 자동으로 ./benchmark_results/에 저장되며, 다음을 포함합니다:

  • 통계가 포함된 요약 CSV
  • 상세 원시 데이터
  • 선택적 PDF/Excel 보고서

그게 전부입니다! 방금 5개의 DNS 리졸버를 10개의 도메인에 대해 벤치마킹했습니다.


⚡ 명령어 한눈에 보기

Find your fastest resolver right now

dns-benchmark top --limit 5

Compare the big three

dns-benchmark compare Cloudflare Google Quad9 --show-details

Monitor with DoT and alerts for 1 hour

dns-benchmark monitoring --use-defaults --dot
--interval 30 --duration 3600
--alert-latency 150 --output monitor.log

root@kitploit:~
---

## ✨ 주요 기능

### 🚀 성능

- **비동기 쿼리** - 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

세 가지 프로토콜이 완전히 지원됩니다. 각각은 지연 시간 비용을 대가로 개인정보 보호를 추가합니다.

| 프로토콜 | 플래그 | 일반적인 오버헤드 | 사용 시기 |
|---|---|---|---|
| 일반 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 플래그를 강제합니다. 일반적인 도메인 중 약 33%만 DNSSEC 서명되어 있습니다. 서명되지 않은 도메인에서는 `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

--doh and --dot are mutually exclusive

dns-benchmark benchmark --use-defaults --doh --dot

ERROR: --doh and --dot are mutually exclusive.

--doh-url count must match --resolvers count

dns-benchmark benchmark --resolvers "Cloudflare,Google" --doh
--doh-url "https://cloudflare-dns.com/dns-query"

ERROR: --doh-url has 1 URL(s) but --resolvers has 2 resolver(s). Counts must match.

Custom IP with --doh requires --doh-url

dns-benchmark benchmark --resolvers "192.168.1.1" --doh

ERROR: --doh requires a DoH URL for: 192.168.1.1. Use --doh-url to supply them explicitly.

root@kitploit:~
---

## 🔧 고급 기능

---
> ⚠️ 이 플래그들은 **가시성을 위해 문서화되어 있음** 아직 구현되지 않음.  
> 이는 곧 출시될 고급 기능을 나타냅니다.

- `--zone-transfer` → AXFR/IXFR 영역 전송 테스트 *(출시 예정)*
- `--tsig` → TSIG 인증 쿼리 *(출시 예정)*
- `--idna` → 국제화 도메인 이름 지원 *(출시 예정)*

---

<details>
<summary><b>🚀 성능 및 동시성 기능</b></summary>

<br>

- **Async I/O with dnspython** - 100개 이상의 리졸버를 동시에 테스트
- **Trio 프레임워크 지원** - 고동시성 비동기 작업
- **구성 가능한 동시성** - 최대 동시 쿼리 수 제어
- **재시도 로직** - 실패한 쿼리에 대한 지수 백오프
- **캐시 시뮬레이션** - DNS 캐싱 유무에 따른 테스트
- **다중 반복 벤치마크** - 정확성을 위해 여러 번 테스트 실행
- **워밍업 단계** - 테스트 전 DNS 캐시 사전 워밍
- **통계 분석** - 평균, 중앙값, P95, P99, 지터, 일관성 점수

**예시:**```bash
dns-benchmark benchmark \
  --max-concurrent 200 \
  --iterations 5 \
  --timeout 3.0 \
  --warmup
🔒 보안 및 개인정보 보호 기능
  • DNSSEC 검증 - 암호화 신뢰 체인 확인
  • DNS-over-HTTPS (DoH) - HTTPS를 통한 암호화 DNS 벤치마킹
  • DNS-over-TLS (DoT) - 보안 전송 계층 테스트
  • DNS-over-QUIC (DoQ) - 실험적 QUIC 프로토콜 지원
  • TSIG 인증 - 엔터프라이즈 DNS용 트랜잭션 서명
  • EDNS0 지원 - 확장된 DNS 기능 및 더 큰 페이로드

예시:```bash

Test DoH resolvers

dns-benchmark benchmark
--doh
--resolvers doh-providers.json
--dnssec-validate

root@kitploit:~
</details>

<details>
<summary><b>🏢 기업 및 마이그레이션 기능</b></summary>

<br>

- **Zone transfers (AXFR/IXFR)** - 전체 및 증분 영역 전송 검증
- **Dynamic DNS updates** - DNS 쓰기 작업 및 업데이트 테스트
- **EDNS0 support** - 확장 DNS 옵션, 클라이언트 서브넷, 더 큰 페이로드
- **Windows WMI integration** - 활성 시스템 DNS 설정 자동 감지
- **Compliance reporting** - 감사 준비된 PDF/Excel 보고서 생성
- **SLA validation** - 가동 시간 및 성능 임계값 추적

**Example:**```bash
# Validate DNS migration
dns-benchmark benchmark \
  --resolvers old-provider.json,new-provider.json \
  --zone-transfer \ # coming soon
  --output migration-report/ \
  --formats pdf,excel
📊 분석 및 보고 기능
  • 도메인별 통계 - 도메인별 성능 분석
  • 레코드 유형별 통계 - A, AAAA, MX, TXT 등 비교
  • 오류 분류 - 오류 유형 분류 및 개수 집계
  • 비교 매트릭스 - 리졸버 간 나란히 비교
  • 추세 분석 - 시간 경과에 따른 성능 (여러 실행 결과)
  • 기준별 최적 - 지연 시간/신뢰성/일관성 기준 최적 리졸버 찾기

예시:```bash

Detailed analysis

dns-benchmark benchmark
--use-defaults
--formats csv,excel
--domain-stats
--record-type-stats
--error-breakdown
--formats csv,excel,pdf

root@kitploit:~
</details>

<details>
<summary><b>🌐 국제화 및 호환성</b></summary>

<br>

- **IDNA 지원** - 국제화 도메인 이름 (IDN)
- **다중 레코드 유형** - A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, SRV, CAA
- **크로스 플랫폼** - 리눅스, 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

💡 대부분의 사용자는 기본 기능만으로 충분합니다. 이러한 고급 기능은 필요할 때 사용할 수 있습니다.


💼 사용 사례

🔧 개발자를 위한: API 성능 최적화```bash

Find fastest DNS for your API endpoints

dns-benchmark benchmark
--domains api.myapp.com,cdn.myapp.com
--record-types A,AAAA
--resolvers production.json
--iterations 10

root@kitploit:~
**결과:** 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

결과: 마이그레이션 전에 성능과 보안을 확인하세요


🏠 자체 호스터를 위한: Pi-hole 성능 입증```bash

Compare Pi-hole against public resolvers

dns-benchmark compare
--resolvers pihole.local,1.1.1.1,8.8.8.8,9.9.9.9
--domains common-sites.txt
--rounds 10

root@kitploit:~
**결과:** 데이터 기반 증명: 자체 호스팅 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 테스트```bash

Benchmark privacy-focused DoH/DoT resolvers

dns-benchmark benchmark
--doh
--resolvers privacy-resolvers.json
--domains sensitive-sites.txt
--dnssec-validate

root@kitploit:~
**결과:** 개인정보를 희생하지 않고 가장 빠른 암호화 DNS 찾기

---

## 📦 설치 및 설정

### 요구 사항

- Python 3.9+
- pip 패키지 관리자

### PyPI에서 설치

bash

root@kitploit:~
pip install dns-benchmark-tool
```
### 소스에서 설치```bash
git clone https://github.com/frankovo/dns-benchmark-tool.git
cd dns-benchmark-tool
pip install -e .
```
### 설치 확인```bash
dns-benchmark --version
dns-benchmark --help
```
### 첫 실행```bash
# Test with defaults (recommended for first time)
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
```
### 고급 사용법```bash
# Export a machine-readable bundle
dns-benchmark benchmark --use-defaults --json --output ./results

# Test specific record types
dns-benchmark benchmark --use-defaults --formats csv,excel --record-types A,AAAA,MX

# Custom output location and formats
dns-benchmark benchmark \
  --use-defaults \
  --output ./my-results \
  --formats csv,excel

# Include detailed statistics
dns-benchmark benchmark \
  --use-defaults \
  --formats csv,excel \
  --record-type-stats \
  --error-breakdown

# High concurrency with retries
dns-benchmark benchmark \
  --use-defaults \
  --formats csv,excel \
  --max-concurrent 200 \
  --timeout 3.0 \
  --retries 3

# Website migration planning
dns-benchmark benchmark \
  --resolvers data/global_resolvers.json \
  --domains data/migration_domains.txt \
  --formats excel,pdf \
  --output ./migration_analysis

# DNS provider selection
dns-benchmark benchmark \
  --resolvers data/provider_candidates.json \
  --domains data/business_domains.txt \
  --formats csv,excel \
  --output ./provider_selection

# Network troubleshooting
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

# Security assessment
dns-benchmark benchmark \
  --resolvers data/security_resolvers.json \
  --domains data/security_test_domains.txt \
  --formats pdf \
  --output ./security_assessment

# Performance monitoring
dns-benchmark benchmark \
  --use-defaults \
  --formats csv \
  --quiet \
  --output /var/log/dns_benchmark/$(date +%Y%m%d_%H%M%S)

# New top commands
# Run a basic benchmark (default: rank by latency)
dns-benchmark top
# → Tests all resolvers with sample domains, ranks by latency

# Limit the number of resolvers shown
dns-benchmark top --limit 5
# → Shows only the top 5 resolvers

# Rank by success rate
dns-benchmark top --metric success
# → Ranks resolvers by highest success rate

# Rank by reliability (combined score: success rate + latency)
dns-benchmark top --metric reliability
# → Uses weighted score to rank resolvers

# Filter resolvers by category
dns-benchmark top --category privacy
dns-benchmark top --category family
dns-benchmark top --category security
# → Tests only resolvers in the specified category

# Use a custom domain list
dns-benchmark top --domains domains.txt
# → Loads domains from a text file instead of built-in sample list

# Specify DNS record types
dns-benchmark top --record-types A,AAAA,MX
# → Queries multiple record types (comma-separated)

# Adjust timeout and concurrency
dns-benchmark top --timeout 3.0 --max-concurrent 50
# → Sets query timeout to 3 seconds and limits concurrency to 50

# Export results to JSON
dns-benchmark top --output results.json
# → Saves results in JSON format

# Export results to CSV
dns-benchmark top --output results.csv
# → Saves results in CSV format

# Export results to TXT
dns-benchmark top --output results.txt
# → Saves results in plain text format

# Quiet mode (no progress bar, CI/CD friendly)
dns-benchmark top --quiet
# → Suppresses progress output

# Example combined usage
dns-benchmark top --limit 10 --metric reliability --category privacy --output top_resolvers.csv
# → Benchmarks privacy resolvers, ranks by reliability, shows top 10, exports to CSV

# New compare commaands
# Comparison of resolvers by name
dns-benchmark compare Cloudflare Google Quad9
# ^ Compares Cloudflare, Google, and Quad9 resolvers using default domains and record type A

# Basic compare resolvers by IP address
dns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9
# ^ Directly specify resolver IPs instead of names

# Increase iterations for more stable results
dns-benchmark compare "Cloudflare" "Google" --iterations 5
# ^ Runs 5 rounds of queries per resolver/domain/record type

# Use a custom domain list from file
dns-benchmark compare Cloudflare Google -d ./data/domains.txt
# ^ Loads domains from domains.txt instead of sample domains

# Query multiple record types
dns-benchmark compare Cloudflare Google -t A,AAAA,MX
# ^ Tests A, AAAA, and MX records for each domain

# Adjust timeout and concurrency
dns-benchmark compare Cloudflare Google --timeout 3.0 --max-concurrent 200
# ^ Sets query timeout to 3 seconds and allows 200 concurrent queries

# Export results to JSON
dns-benchmark compare Cloudflare Google -o results.json
# ^ Saves comparison summary to results.json

# Export results to CSV
dns-benchmark compare Cloudflare Google -o results.csv
# ^ Saves comparison summary to results.csv (via CSVExporter)

# Suppress progress output
dns-benchmark compare Cloudflare Google --quiet
# ^ Runs silently, only prints final results

# Show detailed per-domain breakdown
dns-benchmark compare Cloudflare Google --show-details
# ^ Prints average latency and success counts per domain for each resolver

# New monitoring commands
# Start monitoring with default resolvers and sample domains
dns-benchmark monitoring --use-defaults 
# ^ Runs indefinitely, checking every 60s, using built-in resolvers and 5 sample domains

# Monitor with a custom resolver list from JSON
dns-benchmark monitoring -r resolvers.json --use-defaults
# ^ Loads resolvers from resolvers.json, domains from defaults

# Monitor with a custom domain list
dns-benchmark monitoring -d domains.txt --use-defaults
# ^ Uses default resolvers, but domains are loaded from domains.txt

# Change monitoring interval to 30 seconds
dns-benchmark monitoring --use-defaults --interval 30
# ^ Runs checks every 30 seconds instead of 60

# Run monitoring for a fixed duration (e.g., 1 hour = 3600 seconds)
dns-benchmark monitoring --use-defaults --duration 3600
# ^ Stops automatically after 1 hour

# Set stricter alert thresholds
dns-benchmark monitoring --use-defaults --alert-latency 150 --alert-failure-rate 5
# ^ Alerts if latency >150ms or failure rate >5%

# Save monitoring results to a log file
dns-benchmark monitoring --use-defaults --output monitor.log
# ^ Appends results and alerts to monitor.log

# Combine options: custom resolvers, domains, interval, duration, and logging
dns-benchmark monitoring -r resolvers.json -d domains.txt -i 45 --duration 1800 -o monitor.log
# ^ Monitors resolvers from resolvers.json against domains.txt every 45s, for 30 minutes, logging to monitor.log

# Run monitoring for 1 hour with alerts
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \
  --alert-latency 150 --alert-failure-rate 5 --output monitor.log

```
---

⚠️ **새 명령어 참고:** 성공적인 쿼리가 없는 리졸버는 순위에서 제외되며 `평균 지연 시간: N/A`로 표시됩니다.

---

## 리졸버 및 도메인 인라인 입력 지원

이 패치는 `--resolvers` 및 `--domains` 플래그에 대해 쉼표로 구분된 인라인 값을 완전히 지원하여, 문제 [#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
```
#### 이후 (둘 다 작동)```bash
# Inline (New)
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

# Files (STILL WORKS)
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
```
#### 혼합 입력```bash
# Mixed input
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
```
## 🔧 유틸리티

### Risolver 관리```bash
# Show default resolvers and domains
dns-benchmark list-defaults

# Browse all available resolvers
dns-benchmark list-resolvers

# Browse with detailed information
dns-benchmark list-resolvers --details

# Filter by category
dns-benchmark list-resolvers --category security
dns-benchmark list-resolvers --category privacy
dns-benchmark list-resolvers --category family

# Export resolvers to different formats
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
```
### 카테고리 개요```bash
# View all available categories
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
```
---

## 전체 사용 가이드

### 빠른 성능 테스트```bash
# Basic test with progress bars
dns-benchmark benchmark --use-defaults

# Quick test with only CSV output
dns-benchmark benchmark --use-defaults --formats csv --quiet

# Test specific record types
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
# Export a machine-readable bundle
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
```
#### ISP & 네트워크 운영자```bash
# Comprehensive ISP resolver comparison
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

# Regional performance testing
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
```
#### 보안 감사자```bash
# Security-focused resolver testing
dns-benchmark benchmark \
  --resolvers data/security_resolvers.json \
  --domains data/malware_test_domains.txt \
  --formats csv,pdf \
  --output ./security_audit

# Privacy-focused testing
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
```
## 🔍 최종 패치를 위한 README 조정

### 새 CLI 옵션

| 옵션               | 설명                                                                 | 예제                                                                 |
|--------------------|-----------------------------------------------------------------------------|-------------------------------------------------------------------------|
| `--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`    | **경량 워밍업**을 실행합니다 (리졸버당 하나의 프로브)                       | `dns-benchmark benchmark --use-defaults --warmup-fast`                  |
| `--include-charts` | 시각적 성능 분석을 위해 PDF/Excel 보고서에 차트와 그래프를 포함합니다 | `dns-benchmark benchmark --use-defaults --formats pdf,excel --include-charts` |

---

## ⚡ CLI 명령어

DNS 벤치마크 도구는 이제 다양한 워크플로를 위한 세 가지 특화 명령어를 포함합니다:

### 🚀 상위 (Top)

속도와 신뢰성을 기준으로 리졸버를 신속하게 순위를 매깁니다.```bash
# Rank resolvers quickly
dns-benchmark top

# Use custom domain list
dns-benchmark top -d domains.txt

# Export results to JSON
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
# Monitor default resolvers continuously (every 60s)
dns-benchmark monitoring --use-defaults

# Monitor with custom resolvers and domains
dns-benchmark monitoring -r resolvers.json -d domains.txt

# Run monitoring for 1 hour with alerts
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%)
```
## ⚡ 모범 사례

| 모드            | 권장 플래그                                                                      | 목적                                                                       |
|-----------------|------------------------------------------------------------------------------------|-------------------------------------------------------------------------|
| **빠른 실행**   | `--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`                 | 중간 지점: 적당한 속도, 약간의 재시도, 캐시 활성화, 빠른 워밍업. |


## ⚙️ 설정 파일

### Resolvers JSON 형식```json
{
  "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
```
---

## 출력 형식

### CSV 출력

- 원시 데이터: 타임스탬프와 메타데이터가 포함된 개별 쿼리 결과
- 요약 통계: 리졸버별 집계된 메트릭
- 도메인 통계: 도메인별 메트릭 (--domain-stats 사용 시)
- 레코드 유형 통계: 레코드 유형별 메트릭 (--record-type-stats 사용 시)
- 오류 분석: 오류 유형별 개수 (--error-breakdown 사용 시)

### Excel 보고서

- 원시 데이터 시트: 서식이 적용된 모든 쿼리 결과
- 리졸버 요약: 조건부 서식이 적용된 포괄적인 통계
- 도메인 통계: 도메인별 성능 (선택 사항)
- 레코드 유형 통계: 레코드 유형별 성능 (선택 사항)
- 오류 분석: 집계된 오류 개수 (선택 사항)
- 성능 분석: 차트 및 비교 분석

### PDF 보고서

- 요약: 주요 결과 및 권장 사항
- 성능 차트: 지연 시간 비교, 선택적 성공률 차트
- 리졸버 순위: 평균 지연 시간 순 정렬
- 상세 분석: 백분위수를 포함한 기술적 심층 분석

### 📄 선택적 PDF 내보내기

기본적으로 이 도구는 **CSV** 및 **Excel** 내보내기를 지원합니다.  
PDF 내보내기를 위해서는 추가 종속성인 **weasyprint**가 필요하며, 일부 플랫폼에서 런타임 문제를 피하기 위해 자동으로 설치되지 않습니다.

#### PDF 지원 설치```bash
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 벤치마크 도구는 **WeasyPrint**를 사용하여 PDF 보고서를 생성합니다.  
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
```
#### 🛠 macOS (Homebrew)```bash
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
  ```
- **GTK+ 64‑비트 설치 프로그램**: [GTK+ 런타임 다운로드](https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases) 후 설치 프로그램을 실행하세요.

설치 후 터미널을 다시 시작하세요.

---

#### ✅ 설치 확인

시스템 라이브러리 설치 후, Python 추가 패키지를 설치하세요:```bash
pip install dns-benchmark-tool[pdf]
```
그런 다음 실행:```bash
dns-benchmark --use-defaults --formats pdf --output ./results
```
### JSON 내보내기

- 기계가 읽을 수 있는 번들 포함:
  - 전체 통계
  - 리졸버 통계
  - 원시 쿼리 결과
  - 도메인 통계
  - 레코드 유형 통계
  - 오류 분류

### 샘플 설정 생성```bash
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
```
---

## 문제 해결```bash
# Command not found
pip install -e .
python -m dns_benchmark.cli --help

# PDF generation fails (Ubuntu/Debian)
sudo apt-get install libcairo2 libpango-1.0-0 libpangocairo-1.0-0 \
  libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
# Or skip PDF
dns-benchmark benchmark --use-defaults --formats csv,excel

# Network timeouts
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
```
## 자동화 & CI

### Cron 작업```bash
# Daily monitoring
0 2 * * * /usr/local/bin/dns-benchmark benchmark --use-defaults --formats csv --quiet --output /var/log/dns_benchmark/daily_$(date +\%Y\%m\%d)

# Time-based variability (every 6 hours)
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.png`
- `docs/screenshots/excel_report.png`
- `docs/screenshots/pdf_summary.png`
- `docs/screenshots/pdf_charts.png`
- `docs/screenshots/excel_charts.png`
- `docs/screenshots/real_time_monitoring.png`

### 1. CLI 벤치마크 실행

[![CLI 벤치마크 실행](https://assets.kitploit.com/production/public/readmes/9801/6c17422ba1d532719d184abffa4c7cb570c6b8fc18faae6adc3af6b4cdaac8d2.png)](https://github.com/frankovo/dns-benchmark-tool)

### 2. Excel 보고서 출력

[![Excel 보고서 출력](https://assets.kitploit.com/production/public/readmes/9801/d500c68a4e87710aad9d0c854bfa297038e06c04f972c7bb9280e1c37286ca6e.png)](https://github.com/frankovo/dns-benchmark-tool)

### 3. PDF 요약 보고서

[![PDF 요약 보고서](https://assets.kitploit.com/production/public/readmes/9801/d789a4cb646bf988c8aac52d90c66ceb564fc05a3e96a165258a08abfd4cd925.png)](https://github.com/frankovo/dns-benchmark-tool)

### 4. PDF 차트

[![PDF 차트](https://assets.kitploit.com/production/public/readmes/9801/229ffa707087ecd062afe71cb541ac0fe4c81223637dbc630d40952d88f2b312.png)](https://github.com/frankovo/dns-benchmark-tool)

### 5. Excel 차트

[![Excel 차트](https://assets.kitploit.com/production/public/readmes/9801/686da80a71c6c3d5a096d8c2ba22b10b03599e6a61c68e1739ea1165385bf1e9.png)](https://github.com/frankovo/dns-benchmark-tool)

### 6. 실시간 모니터링

[![실시간 모니터링](https://assets.kitploit.com/production/public/readmes/9801/ff9ef254e9e4b586f3d366250cc64a68213fe91e4c85df4a23b7381eb744cecc.png)](https://github.com/frankovo/dns-benchmark-tool)

---

## 도움말 보기```bash
dns-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
```
---

## 릴리스 워크플로우

- **사전 요구 사항**
  - **GPG 키 구성:** `make gpg-check`를 실행하여 확인하세요.
  - **브랜치 보호:** 메인 브랜치는 서명된 커밋과 CI 통과가 필요합니다.
  - **CI 게시:** `vX.Y.Z` 패턴과 일치하는 서명된 태그에서 트리거됩니다.

- **릴리스 준비 (서명됨)**
  - **패치/마이너/메이저 버프:**
  
    ```bash
    make release-patch      # or: make release-minor / make release-major
    ```

    - 버전을 업데이트합니다.
    - `release/X.Y.Z` 브랜치를 생성하거나 재사용합니다.
    - 서명된 커밋을 만들고 브랜치를 푸시합니다.
  - **PR 열기:** `release/X.Y.Z`에서 `main`으로 PR을 열고, CI가 통과하면 병합합니다.

- **태그 및 게시**
  - **서명된 태그 생성 및 푸시:**

    ```bash
    make release-tag VERSION=X.Y.Z
    ```

    - 메인 브랜치에 `vX.Y.Z` 태그(서명됨)를 생성합니다.
    - CI가 PyPI에 게시합니다.

- **수동 대안**
  - **브랜치 생성 및 서명된 커밋:**
  
    ```bash
    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을 열고 main으로 병합합니다.**
  - **그런 다음 태그 생성:**
  
    ```bash
    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`

---

## 🌐 BuildTools 웹 대시보드 — 지금 사용 가능

**CLI는 영원히 무료입니다.** 웹 대시보드는 이제 [buildtools.net](https://buildtools.net)에서 사용할 수 있습니다.

### 현재 제공되는 기능 (무료 + 프로)

- 📊 **DNS 벤치마크** — 시각적 결과, 기록, 이 CLI 엔진 기반
- 🔔 **DNS 모니터링** — 레코드 변경 시 실시간 알림
- 🆓 **무료 티어** — 즉시 시작, 신용카드 필요 없음
- 💼 **프로 €14/월** — 확장 보존 및 우선 지원

### Q2 2026 예정

- ⚡ **HTTP 벤치마크** — API 응답 시간 및 CDN 성능 측정
- 🔒 **SSL 모니터** — 문제 발생 전 인증서 만료 알림

### Q3 2026 예정

- 🌍 **다중 지역 테스트** — 여러 위치에서 동시에 테스트

[→ buildtools.net에서 무료 가입](https://buildtools.net)

---

## 🛣️ 로드맵

### ✅ 현재 릴리스 (CLI 에디션)

- DNS 리졸버 벤치마크, 비교, 모니터링
- DoH, DoT, DNSSEC 지원 (이번 릴리스의 새로운 기능)
- CSV, Excel, PDF, JSON으로 내보내기

### ✅ 웹 대시보드 (라이브)

- 시각적 기록이 포함된 DNS 벤치마크
- 실시간 알림이 포함된 DNS 모니터링
- 무료 티어 + 프로 €14/월
- [buildtools.net](https://buildtools.net)

### 🔜 Q2 2026 예정

- HTTP 벤치마크
- SSL 모니터
  
#### Q3 2026

- 다중 지역 테스트

---

## 🤝 기여하기

기여를 환영합니다! 도움을 주실 수 있는 방법은 다음과 같습니다:

### 기여 방법

- 🐛 **버그 신고** - [이슈 열기](https://github.com/frankovo/dns-benchmark-tool/issues)
- 💡 **기능 제안** - [토론 시작하기](https://github.com/frankovo/dns-benchmark-tool/discussions)
- 📝 **문서 개선** - README, 예제, 튜토리얼
- 🔧 **PR 제출** - 버그 수정, 기능, 테스트
- ⭐ **저장소에 별표** - 다른 사람들이 도구를 발견하도록 도움
- 📢 **널리 알리기** - 트윗, 블로그, 공유

### 🛠 개발 및 Makefile 명령어

이 프로젝트는 설치, 테스트 및 코드 품질 검사를 간소화하는 `Makefile`을 포함하고 있습니다.```makefile
.PHONY: install install-dev uninstall mypy black isort flake8 cov test clean cli-test

# 🔧 Install package (runtime only)
install:
  pip install .

# 🔧 Install package with dev extras (pytest, mypy, flake8, black, isort, etc.)
install-dev:
  pip install .[dev]

# 🔧 Uninstall package
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:
  # Run only the CLI smoke tests marked with @pytest.mark.cli
  pytest -vv -s -m cli tests/test_cli_commands.py
```
### 일반적인 사용법

- **런타임만 설치**  ```bash
  make install
  ```
- **개발 의존성 포함 설치**  ```bash
  make install-dev
  ```
- **타입 검사, 린팅, 포맷팅, 테스트 실행**  ```bash
  make test
  ```
- **CLI 스모크 테스트만 실행**  ```bash
  make cli-test
  ```
- **빌드/테스트 아티팩트 정리**  ```bash
  make clean
  ```
---

### 코드 가이드라인

- PEP 8 스타일 가이드 준수
- 새 기능에 대한 테스트 추가
- 문서 업데이트
- PR을 집중적이고 원자적으로 유지

---

## ❓ FAQ

<details>
<summary><b>내 ISP DNS가 가장 빠르지 않은 이유는 무엇인가요?</b></summary>

로컬 ISP DNS는 종종 캐싱 이점이 있지만 다음이 부족할 수 있습니다:
- 글로벌 애니캐스트 네트워크 (원거리 도메인에 대해 느림)
- DNSSEC 검증
- 개인정보 보호 기능 (DoH/DoT)
- 안정성 보장

둘 다 테스트하고 자신의 우선순위에 따라 결정하세요!

</details>

<details>
<summary><b>DNS 벤치마크는 얼마나 자주 해야 하나요?</b></summary>

- **한 번**: DNS 제공업체 선택 시
- **매월**: 네트워크 상태 확인용
- **이전 전**: 제공업체 전환 시
- **문제 발생 후**: 성능 문제 해결 시

</details>

<details>
<summary><b>자체 DNS 서버를 테스트할 수 있나요?</b></summary>

예! 맞춤 리졸버 JSON 파일에 추가하세요:```json
{
  "resolvers": [
    {"name": "My DNS", "ip": "192.168.1.1"}
  ]
}
```
</details>

<details>
<summary><b>CLI와 호스팅 버전의 차이점은 무엇인가요?</b></summary>

**CLI (무료, 영구):**

- 사용자 위치에서 테스트 실행
- 결과를 로컬에 저장
- 오픈 소스 — 대시보드를 구동하는 동일한 엔진

**웹 대시보드 (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>

---

## 🔗 링크 및 지원

### 공식

- **웹사이트**: [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)

### 커뮤니티

- **토론**: [GitHub Discussions](https://github.com/frankovo/dns-benchmark-tool/discussions)
- **이슈**: [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>
도구 다운로드
  • 사용 예제
    • 이전 (파일만 작동)
    • 이후 (둘 다 작동)
    • 이름이 지정된 리졸버
    • 혼합 입력
    • 단일
  • 🔧 유틸리티
    • 리졸버 관리
    • 도메인 관리
    • 카테고리 개요
    • 구성 관리
  • 전체 사용법 가이드
    • 빠른 성능 테스트
      • 네트워크 관리자
      • ISP 및 네트워크 운영자
      • 개발자 및 DevOps
      • 보안 감사자
      • 기업 IT
  • 🔍 최종 패치에 대한 README 조정
    • 새로운 CLI 옵션
  • ⚡ CLI 명령어
    • 🚀 상위
    • 📊 비교
    • 🔄 모니터링
    • 🌟 명령어 쇼케이스
  • 📊 분석 개선 사항
  • ⚡ 모범 사례
  • ⚙️ 구성 파일
    • 리졸버 JSON 형식
    • 도메인 텍스트 파일 형식
  • 출력 형식
    • CSV 출력
    • Excel 보고서
    • PDF 보고서
    • 📄 선택적 PDF 내보내기
      • PDF 지원과 함께 설치
      • 사용법
    • ⚠️ WeasyPrint 설정 (PDF 내보내기용)
      • 🛠 Linux (Debian/Ubuntu)
      • 🛠 macOS (Homebrew)
      • 🛠 Windows
      • ✅ 설치 확인
    • JSON 내보내기
    • 샘플 구성 생성
  • 성능 최적화
  • 문제 해결
    • 디버그 모드
  • 자동화 및 CI
    • Cron 작업
    • GitHub Actions 예제
  • 스크린샷
    • 1. CLI 벤치마크 실행
    • 2. Excel 보고서 출력
    • 3. PDF 요약 보고서
    • 4. PDF 차트
    • 5. Excel 차트
    • 6. 실시간 모니터링
  • 도움말 보기
  • 릴리스 워크플로
  • 🌐 BuildTools 웹 대시보드 — 현재 운영 중
    • 현재 제공 중 (무료 + 프로)
    • 2026년 2분기 예정
    • 2026년 3분기 예정
  • 🛣️ 로드맵
    • ✅ 현재 릴리스 (CLI 에디션)
    • ✅ 웹 대시보드 (운영 중)
    • 🔜 2026년 2분기 예정
      • 2026년 3분기
  • 🤝 기여하기
    • 기여 방법
    • 🛠 개발 및 Makefile 명령어
    • 일반적인 사용법
    • 코드 가이드라인
  • ❓ FAQ
  • 🔗 링크 및 지원
    • 공식
    • 커뮤니티
    • 통계
  • 라이선스
  • 명령어기능간단한 예시
    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