9 releases (4 breaking)
new 0.5.1 | May 16, 2024 |
---|---|
0.5.0 | May 14, 2024 |
0.4.0 | Apr 25, 2024 |
0.3.0 | Dec 23, 2023 |
0.1.2 | Oct 5, 2023 |
#575 in Network programming
247 downloads per month
345KB
685 lines
dns-bench
Description
This repository provides DNS benchmarking command line tool written in Rust. It iterates through built-in list of public DNS servers, measures their response time and print table with sorted results in console. It can be used to find the fastest DNS in your location for better internet browsing experience. An example of console output, list of features and list of built-in DNS servers can be found below.
Example
Features
- Built-in list of public DNS servers.
- Requests count configuration. By default, 10 requests are made to each DNS server.
- Threads count configuration. By default, 8 threads are used.
- Timeout configuration. By default, 3 seconds timeout is used.
- Domain configuration. By default, google.com domain is used.
- Protocol configuration, either TCP or UDP. By default, UDP is used.
- Lookup IP version configuration, either IPv4 or IPv6. By default, IPv4 is used.
- Configuration of IP version used to establish connection, either IPv4 or IPv6. By default, IPv4 is used.
- Table style configuration. By default, rounded style is used.
- Ability to save favorite configurations in a file inside user's home directory (
/home/user/.dns-bench/config.toml
) to avoid typing them every time.
List of built-in DNS servers
- Google Public DNS
- Cloudflare
- Quad9
- ControlD
- OpenDNS
- CleanBrowsing
- AdGuard DNS
- Comodo Secure DNS
- Level3
- Verisign
Installation
From crates.io (Recommended)
Run the following command and wait until the crate is compiled:
$ cargo install dns-bench
Now you can run compiled binary:
$ dns-bench [OPTIONS]
From git repository
Run the following command and wait until the crate is compiled:
$ cargo install --git https://github.com/qwerty541/dns-bench.git --tag v0.5.1 dns-bench
Also you can remove tag option to install the latest development version.
Now you can run compiled binary:
$ dns-bench [OPTIONS]
Options
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 | Any positive integer |
--requests |
Number of requests to each DNS server. | 10 | Any positive integer |
--timeout |
Timeout in seconds. | 3 | Any positive integer |
--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. |
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Dependencies
~9–21MB
~283K SLoC