Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dns-benchmark-tool — Быстрое и всестороннее тестирование производительности DNS с проверкой DNSSEC, поддержкой DoH/DoT и корпоративными функциями. | Kitploit
Инструменты/GitHubGitHub/net-benchmark/dns-benchmark-tool
Инструменты шифрования/дешифрованияКартирование сетиСетевая безопасностьКонфиденциальностьАнализ DNSArchived
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 Benchmark Tool

Часть BuildTools - Пакет сетевой производительности

Быстрое и всестороннее тестирование производительности DNS с проверкой DNSSEC, поддержкой DoH/DoT и корпоративными функциями```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-запросами в реальном времени*

**Отслеживание в реальном времени - Веб-интерфейс**
[![Отслеживание в реальном времени - Веб-интерфейс](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
    • Часть BuildTools - Набор инструментов для производительности сети
    • 🎉 Что нового в
    • 📈 Основные моменты сообщества
    • Содержание
    • 🎯 Зачем нужен этот инструмент?
      • Проблема
      • Решение
      • Для кого идеально подходит
    • Быстрый старт
      • Установка
      • Запустите ваш первый бенчмарк
      • Просмотр результатов
    • ⚡ Команды на одном экране
    • ✨ Ключевые возможности
      • 🚀 Производительность
      • 🔒 Безопасность и конфиденциальность
      • 📊 Анализ и экспорт
      • 🏢 Корпоративные функции
      • 🌐 Кроссплатформенность
    • 🔒 Безопасность и шифрованный DNS
    • 🔧 Расширенные возможности
    • 💼 Варианты использования
      • 🔧 Для разработчиков: оптимизация производительности API
      • 🛡️ Для DevOps/SRE: проверка перед миграцией
      • 🏠 Для самхостинг-пользователей: докажите производительность Pi-hole
      • 📊 Для сетевых администраторов: автоматические проверки состояния
      • 🔐 Для защитников конфиденциальности: тестирование шифрованного DNS
    • 📦 Установка и настройка
      • Требования
      • Установка из PyPI
      • Установка из исходного кода
      • Проверка установки

🎯 Зачем нужен этот инструмент?

Разрешение DNS часто является скрытым узким местом в производительности сети. Медленный резолвер может добавлять сотни миллисекунд к каждому запросу.

Проблема

  • ⏱️ Скрытое узкое место: DNS может добавить 300+ мс к каждому запросу
  • 🤷 Неизвестная производительность: Большинство разработчиков никогда не тестируют свой 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-поддержка** — интернационализированные доменные имена
- **Автоопределение** — обнаружение DNS через Windows WMI

---

## 🔒 Безопасность и зашифрованный DNS

Полностью поддерживаются три протокола — каждый добавляет конфиденциальность ценой увеличения задержки.

| Протокол | Флаг | Типичные накладные расходы | Когда использовать |
|---|---|---|---|
| Обычный UDP | *(по умолчанию)* | базовый уровень | Бенчмаркинг задержки |
| DNS-over-HTTPS | `--doh` | +50–200 мс | Конфиденциальность, обход брандмауэра |
| DNS-over-TLS | `--dot` | +200–500 мс (холодный), ~50 мс (тёплый) | Зашифрованный транспорт |
| DNSSEC | `--dnssec-validate` | +30–100 мс | Проверка целостности резолвера |

> ⚠️ **Компромиссы**
> - DoH и DoT добавляют накладные расходы на установку TLS-соединения при первом запросе к каждому резолверу. Используйте `--warmup-fast`, чтобы нивелировать это перед измерением.
> - `--dnssec-validate` запрашивает записи RRSIG и проверяет флаг AD. Только ~33% распространённых доменов подписаны DNSSEC — ожидайте результат `DNSSEC_FAILED` для неподписанных доменов. Показатели задержки с этим флагом и без него **напрямую не сравнимы**.
> - На мобильных устройствах/через хот-спот разброс будет в 2–5 раз выше, чем на проводном Ethernet. Используйте `--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>

- **Асинхронный ввод-вывод с 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) - Шифрованное бенчмаркирование DNS через HTTPS
  • 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>

- **Передача зон (AXFR/IXFR)** - Проверка полной и инкрементальной передачи зон
- **Обновления Dynamic 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
📊 Функции анализа и отчетности
  • Статистика по доменам - Анализ производительности по доменам
  • Статистика по типам записей - Сравнение 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
- **Кроссплатформенность** - 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

💡 Большинству пользователей достаточно базовых функций. Эти расширенные возможности доступны, когда они вам нужны.


💼 Варианты использования

🔧 Для разработчиков: Оптимизация производительности 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-300 мс

---

### 🛡️ Для 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:~
**Result:** Найти самый быстрый зашифрованный DNS без потери приватности

---

## 📦 Установка и настройка

### Требования

- Python 3.9+
- менеджер пакетов pip

### Установка из PyPI```bash
pip install dns-benchmark-tool

Установка из исходного кода```bash

git clone https://github.com/frankovo/dns-benchmark-tool.git cd dns-benchmark-tool pip install -e .

root@kitploit:~
### Проверка установки```bash
dns-benchmark --version
dns-benchmark --help

Первый запуск```bash

Test with defaults (recommended for first time)

dns-benchmark benchmark --use-defaults --formats csv,excel

root@kitploit:~
---

## 📖 Примеры использования

### Базовое использование```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

root@kitploit:~
---

⚠️ **Примечание для новых команд:** Резолверы без успешных запросов исключаются из рейтинга и будут отображать `Avg Latency: 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

root@kitploit:~
#### Именованные резолверы```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

root@kitploit:~
#### Одиночный```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

root@kitploit:~
### Управление доменами```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

root@kitploit:~
### Управление конфигурациями```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

root@kitploit:~
Флаги аналитики дополнения:```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

root@kitploit:~
#### Сетевой администратор```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

root@kitploit:~
#### Разработчик и 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

root@kitploit:~
#### Корпоративные ИТ```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


⚡ Команды CLI

Инструмент DNS Benchmark теперь включает три специализированные команды для различных рабочих процессов:

🚀 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

root@kitploit:~
### 📊 Сравнение

Сравните резолверы бок о бок с подробной статистикой.```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

root@kitploit:~
---

### 🌟 Демонстрация команд

| Команда       | Назначение | Типичный сценарий использования | Ключевые опции | Вывод |
|---------------|-----------|--------------------------------|----------------|--------|
| **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%)

⚡ Лучшие практики

⚙️ Конфигурационные файлы

Формат 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" } ] }

root@kitploit:~
### Формат текстового файла доменов```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]

root@kitploit:~
#### Usage

После установки вы можете запросить вывод в PDF через CLI:```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]

root@kitploit:~
---

### ⚠️ Настройка WeasyPrint (для экспорта PDF)

Инструмент DNS Benchmark использует **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

root@kitploit:~
---

#### 🛠 Windows

Установите библиотеки GTK+, используя один из этих методов:

- **MSYS2**: [Скачать MSYS2](https://www.msys2.org/), затем выполните:  ```bash
  pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-libffi
  • GTK+ 64‑битный установщик: Скачать GTK+ Runtime и запустите установщик.

Перезапустите терминал после установки.


✅ Проверка установки

После установки системных библиотек установите Python extra:```bash pip install dns-benchmark-tool[pdf]

root@kitploit:~
Затем выполните:```bash
dns-benchmark --use-defaults --formats pdf --output ./results

JSON экспорт

  • Машиночитаемый пакет, включающий:
    • Общая статистика
    • Статистика резолверов
    • Сырые результаты запросов
    • Статистика доменов
    • Статистика типов записей
    • Разбивка ошибок

Генерация образца конфигурации```bash

dns-benchmark generate-config
--category privacy
--output my-config.yaml

root@kitploit:~
## Оптимизация производительности```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

root@kitploit:~
### Режим отладки```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)

root@kitploit:~
### Пример 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

Скриншоты

Place images in 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

2. Вывод отчета Excel

Вывод отчета Excel

3. Краткое резюме PDF

Краткое резюме PDF

4. Диаграммы PDF

Диаграммы PDF

5. Диаграммы Excel

Диаграммы Excel

6. Мониторинг в реальном времени

Мониторинг в реальном времени


Получение помощи```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

root@kitploit:~
Общие сценарии:```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 для проверки.
    • Защита ветки: main требует подписанных коммитов и прохождения CI.
    • Публикация CI: запускается по подписанным тегам, соответствующим vX.Y.Z.
  • Подготовка выпуска (подписанного)

    • Патч/минор/мажорное обновление:

      root@kitploit:~
      make release-patch      # или: make release-minor / make release-major
      
      • Обновляет версии.
      • Создаёт или переиспользует release/X.Y.Z.
      • Создаёт подписанный коммит и отправляет ветку.
    • Открыть PR: из release/X.Y.Z в main, затем слить после прохождения CI.

  • Тегирование и публикация

    • Создать подписанный тег и отправить:

      root@kitploit:~
      make release-tag VERSION=X.Y.Z
      
      • Тегирует main как vX.Y.Z (подписанный).
      • CI публикует в PyPI.
  • Ручная альтернатива

    • Создать ветку и сделать подписанный коммит:


🌐 Веб-панель BuildTools — уже доступна

CLI остается бесплатным навсегда. Веб-панель теперь доступна на buildtools.net

Что доступно сейчас (Free + Pro)

  • 📊 DNS Benchmark — Визуальные результаты, история, работает на этом CLI-движке
  • 🔔 DNS Monitoring — Оповещения в реальном времени при изменении записей
  • 🆓 Бесплатный тариф — Начинайте сразу, кредитная карта не требуется
  • 💼 Pro за €14/мес — Расширенное хранение и приоритетная поддержка

Запланировано на Q2 2026

  • ⚡ HTTP Benchmark — Измерение времени отклика API и производительности CDN
  • 🔒 SSL Monitor — Оповещения об истечении сертификатов до возникновения проблем

Запланировано на Q3 2026

  • 🌍 Многорегиональное тестирование — Тестирование из нескольких локаций одновременно

→ Зарегистрируйтесь бесплатно на buildtools.net


🛣️ Дорожная карта

✅ Текущий выпуск (CLI-версия)

  • Бенчмарк, сравнение, мониторинг DNS-резолверов
  • Поддержка DoH, DoT, DNSSEC (новое в этом выпуске)
  • Экспорт в CSV, Excel, PDF, JSON

✅ Веб-панель (доступна)

  • DNS Benchmark с визуальной историей
  • DNS Monitoring с оповещениями в реальном времени
  • Бесплатный тариф + Pro за €14/мес
  • buildtools.net

🔜 Запланировано на Q2 2026

  • HTTP Benchmark
  • SSL Monitor

Q3 2026

  • Многорегиональное тестирование

🤝 Вклад в проект

Мы рады вкладу! Вот как вы можете помочь:

Способы внести вклад

  • 🐛 Сообщить об ошибках — Открыть issue
  • 💡 Предложить функции — Начать обсуждение
  • 📝 Улучшить документацию — 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

root@kitploit:~
### Обычное использование

- **Установить только среду выполнения**  ```bash
  make install
  • Установка с зависимостями для разработки ```bash make install-dev
    root@kitploit:~
  • Выполняйте проверку типов, линтинг, форматирование и тесты ```bash make test
    root@kitploit:~
  • Запускать только дымовые тесты CLI ```bash make cli-test
    root@kitploit:~
  • Очистка артефактов сборки/тестирования ```bash make clean
    root@kitploit:~

Рекомендации по коду

  • Следуйте руководству по стилю PEP 8
  • Добавляйте тесты для новых функций
  • Обновляйте документацию
  • Держите PR сфокусированными и атомарными

❓ Часто задаваемые вопросы

Почему DNS моего провайдера не самый быстрый?

Локальный DNS провайдера часто имеет преимущества кэширования, но может не иметь:

  • Глобальной сети anycast (медленнее для удаленных доменов)
  • Проверки DNSSEC
  • Функций конфиденциальности (DoH/DoT)
  • Гарантий надежности

Тестируйте оба и принимайте решение исходя из ВАШИХ приоритетов!

Как часто нужно проводить бенчмарк DNS?
  • Однократно: при выборе DNS-провайдера
  • Ежемесячно: для проверки работоспособности сети
  • Перед миграцией: при смене провайдера
  • После проблем: для диагностики производительности
Могу ли я протестировать собственный DNS-сервер?

Да! Просто добавьте его в пользовательский JSON-файл резолверов:```json { "resolvers": [ {"name": "My DNS", "ip": "192.168.1.1"} ] }

root@kitploit:~
</details>

<details>
<summary><b>В чем разница между CLI и хостинг-версией?</b></summary>

**CLI (Бесплатно навсегда):**

- Запускайте тесты из ВАШЕГО местоположения
- Сохраняйте результаты локально
- Открытый исходный код — тот же движок, что и в панели управления

**Веб-панель (доступна на buildtools.net):**

- Визуальные результаты тестов и история
- Мониторинг DNS с оповещениями в реальном времени
- Бесплатный уровень, Pro за €14/мес
- Мультирегиональное тестирование ожидается в Q3 2026
</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)
- **Проблемы**: [Сообщения об ошибках](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
      • Аудитор безопасности
      • ИТ в предприятии
  • 🔍 Изменения 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 — уже доступна
    • Что уже доступно (Free + Pro)
    • Планируется на Q2 2026
    • Планируется на Q3 2026
  • 🛣️ Дорожная карта
    • ✅ Текущий выпуск (CLI Edition)
    • ✅ Веб-панель (запущена)
    • 🔜 Планируется на Q2 2026
      • Q3 2026
  • 🤝 Вклад
    • Способы внести вклад
    • 🛠 Разработка и команды Makefile
    • Общее использование
    • Рекомендации по коду
  • ❓ Часто задаваемые вопросы
  • 🔗 Ссылки и поддержка
    • Официальные
    • Сообщество
    • Статистика
  • Лицензия
  • КомандаЧто делаетКраткий пример
    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Выполнить лёгкий прогрев (один пробный запрос на резолвер)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Золотая середина: умеренная скорость, некоторые повторные попытки, кэш включен, быстрый прогрев.
    root@kitploit:~
    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.

  • Затем создать тег:

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