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:
- Benchmark all DNS servers (3 rounds by default)
- Display a ranked table of results
- 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 (
sudoon macOS/Linux, Administrator on Windows).
DNS Providers
| Provider | Primary | Secondary |
|---|---|---|
| 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c464898e287935ab33b39a2be4b92899e736a429a1d0a5d36c1ebb3752a01fb4
|
|
| MD5 |
a4fc16bc678156860217fa44cfe6bc76
|
|
| BLAKE2b-256 |
f72ec81959bbc5ee0cd59672041a359971c1553897d529cad4669cad95a05889
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc6584561dd5d77472b57a67647b6ec27eb2643a04a7958450b176101e2efea6
|
|
| MD5 |
b51a839578aeb1ae3e9074def871bbb0
|
|
| BLAKE2b-256 |
24229e81e4a33feff0cc034b86451d66c62103c559cd60a4a1cc8a550b53867f
|