Skip to main content

A cross-platform CLI tool to benchmark public DNS servers and set the fastest one

Project description

simurgh-dns

A cross-platform CLI tool to benchmark public DNS servers and set the fastest one.

Features

  • Benchmarks 15 DNS providers (30 server IPs) with concurrent testing
  • Measures latency (avg/min/max) and reliability per server
  • Beautiful terminal output with Rich tables and progress bars
  • Cross-platform DNS configuration — set the best DNS on macOS, Linux, and Windows
  • JSON output mode for scripting and automation
  • Installable via pip — works anywhere Python runs

Installation

pip install simurgh-dns

Or with uv:

uv pip install simurgh-dns

Quick Start

Run the benchmark:

simurgh-dns

This will:

  1. Benchmark all DNS servers (3 rounds by default)
  2. Display a ranked table of results
  3. Offer to set the fastest DNS on your system

Usage

# Run benchmark with custom rounds
simurgh-dns --rounds 5

# Output results as JSON
simurgh-dns --json

# Benchmark only (don't offer to change DNS)
simurgh-dns --no-set

# Directly set a specific DNS server
simurgh-dns --set 1.1.1.1

# Reset DNS to DHCP default
simurgh-dns --reset

# Show version
simurgh-dns --version

You can also run it as a Python module:

python -m simurgh_dns

Supported Platforms

Platform Benchmark Set DNS Method
macOS Yes Yes networksetup
Linux Yes Yes resolvectl / /etc/resolv.conf
Windows Yes Yes netsh

Note: Setting DNS requires elevated privileges (sudo on macOS/Linux, Administrator on Windows).

DNS Providers

Provider Primary Secondary
Google 8.8.8.8 8.8.4.4
Cloudflare 1.1.1.1 1.0.0.1
Quad9 9.9.9.9 149.112.112.112
OpenDNS 208.67.222.222 208.67.220.220
AdGuard 94.140.14.14 94.140.15.15
NextDNS 45.90.28.0 45.90.30.0
CleanBrowsing 185.228.168.9 185.228.169.9
Comodo Secure 8.26.56.26 8.20.247.20
Level3 4.2.2.1 4.2.2.2
Verisign 64.6.64.6 64.6.65.6
Norton/LifeLock 199.85.126.10 199.85.127.10
Yandex 77.88.8.8 77.88.8.1
DNS.WATCH 84.200.69.80 84.200.70.40
Freenom 80.80.80.80 80.80.81.81
Alternate DNS 76.76.19.19 76.223.122.150

Requirements

  • Python 3.13+

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simurgh_dns-0.1.0.tar.gz (63.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simurgh_dns-0.1.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file simurgh_dns-0.1.0.tar.gz.

File metadata

  • Download URL: simurgh_dns-0.1.0.tar.gz
  • Upload date:
  • Size: 63.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for simurgh_dns-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d025a3cb964e9d24814509cc09e686644eae9ee8874374a93ab699303d85f981
MD5 3ef27c8b24aa6c3df1c98700fe54f4fb
BLAKE2b-256 b33667c6305bd7fb9ac408dff185b6b7b8b47975a032c7c32d74415948de22b6

See more details on using hashes here.

File details

Details for the file simurgh_dns-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: simurgh_dns-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for simurgh_dns-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 958559e609857ee3b88eb760c1d4960cfd71adbc5c0be8e677a9fdf851e44c55
MD5 fc0808b24b062e3bef7a25d753dbc6a9
BLAKE2b-256 c7151404d44b34322236c64a75d3ecf9d16b11826b5ad86ebd14f80ff196ddbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page