| Crates.io | dns-bench |
| lib.rs | dns-bench |
| version | 0.11.0 |
| created_at | 2023-10-03 17:28:01.263967+00 |
| updated_at | 2025-08-04 17:59:51.272977+00 |
| description | Find the fastest DNS in your location to improve internet browsing experience. |
| homepage | https://github.com/qwerty541/dns-bench |
| repository | https://github.com/qwerty541/dns-bench |
| max_upload_size | |
| id | 991291 |
| size | 149,739 |
This repository provides a DNS benchmarking command-line tool written in Rust. It iterates through a built-in list of public DNS servers as well as automatically detected system DNS servers, measures their response times, and prints a table of sorted results in the console. You can use it to find the fastest DNS server for your location, improving your internet browsing experience. A preview, list of features, and the list of built-in DNS servers are provided below.
|
|
|
Run the following command and wait until the crate is compiled:
$ cargo install dns-bench
Now you can run compiled binary:
$ dns-bench [OPTIONS]
Run the following command and wait until the crate is compiled:
$ cargo install --git https://github.com/qwerty541/dns-bench.git --tag v0.11.0 dns-bench
Also you can remove tag option to install the latest development version.
Now you can run compiled binary:
$ dns-bench [OPTIONS]
Run the following command to pull the image:
$ docker pull qwerty541/dns-bench:latest
Now you can run this tool inside the container:
$ docker run --rm -it --name dns-bench qwerty541/dns-bench:latest
If you want to pass some options, you can do it like this:
$ docker run --rm -it --name dns-bench qwerty541/dns-bench:latest /bin/bash -c "dns-bench --requests 20 --domain microsoft.com --style re-structured-text"
In case you want to use custom servers list, you have to mount the file with custom servers list to the container and pass the path to the file as an argument:
$ docker run --rm -it --name dns-bench --volume /home/alexandr/projects/dns-bench/examples/ipv4-custom-servers-example.txt:/ipv4-custom-servers-example.txt qwerty541/dns-bench:latest /bin/bash -c "dns-bench --custom-servers-file /ipv4-custom-servers-example.txt"
You can download the latest Windows executable file from the releases page.
After downloading, open the command line, navigate to the directory where you saved the file, and run it with the following command:
dns-bench.exe [OPTIONS]
[!WARNING] The Windows executable file is not signed, so you may see a warning when running it. You can ignore this warning if you trust the source of the file. If you want to avoid this warning, you can build the crate from source using Rust programming language environment installed on your machine or use the Docker image as described above.
Below is a list of currently supported options.
| Option | Description | Default value | Possible values |
|---|---|---|---|
--domain |
Domain to resolve. | google.com | Any domain |
--threads |
Number of threads to use. | 8 | 1..256 |
--requests |
Number of requests to each DNS server. | 25 | 1..1000 |
--timeout |
Timeout in seconds. | 3 | 1..60 |
--protocol |
Protocol to use. | udp | tcp, udp |
--name-servers-ip |
IP version to use for establishing connection. | v4 | v4, v6 |
--lookup-ip |
IP version to use for lookup. | v4 | v4, v6 |
--style |
Table style to use. | rounded | empty, blank, ascii, psql, markdown, modern, sharp, rounded, modern-rounded, extended, dots, re-structured-text, ascii-rounded |
--save-config |
Save the configurations to a file in users home directory. | ||
--custom-servers-file |
Provide a path to a file with custom servers list to use instead of built-in list. An example of file format can be found here for IPv4 and here for IPv6. | ||
--format |
Format of the output. | human-readable | human-readable, json, xml, csv |
--skip-system-servers |
Skip auto-detection of system DNS servers. |
Below is a list of currently supported subcommands.
| Subcommand | Description |
|---|---|
dns-bench config init |
Create a config file with default values if it does not exist. |
dns-bench config set [--key value ...] |
Set one or more config values. Supports all options listed above. |
dns-bench config reset |
Reset config file to default values. |
dns-bench config delete |
Delete config file. |
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.