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.1.tar.gz (64.0 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.1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: simurgh_dns-0.1.1.tar.gz
  • Upload date:
  • Size: 64.0 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.1.tar.gz
Algorithm Hash digest
SHA256 c464898e287935ab33b39a2be4b92899e736a429a1d0a5d36c1ebb3752a01fb4
MD5 a4fc16bc678156860217fa44cfe6bc76
BLAKE2b-256 f72ec81959bbc5ee0cd59672041a359971c1553897d529cad4669cad95a05889

See more details on using hashes here.

File details

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

File metadata

  • Download URL: simurgh_dns-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc6584561dd5d77472b57a67647b6ec27eb2643a04a7958450b176101e2efea6
MD5 b51a839578aeb1ae3e9074def871bbb0
BLAKE2b-256 24229e81e4a33feff0cc034b86451d66c62103c559cd60a4a1cc8a550b53867f

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