DNS is a very old and robust service. Actually, it is so robust that more and more features have been added over time. Unfortunately, the classic tools haven't been updated to easily interoperate with these modern features.
mhost is a new tool that aligns with modern DNS. And what better language to choose for such a tool than Rust!
mhost is very fast and uses multiple DNS servers concurrently to aggregate all results for more reliable lookups. You can use hundreds of name servers. If you don't know that many name servers personally,
mhost allows you to download up-to-date server lists from public-dns and OpenNIC. It also comes with a serious list of publicly available name servers built-in.
mhost supports classic DNS over UDP and TCP as well as modern DNS over TLS (DoT) and HTTP (DoH).
mhost presents results in an easy, human readable format as well as JSON for post-processing. In case you want to do service lookups,
mhost helps you with easy to use service lookups.
In addition to lookups,
mhost may be used to discover host names and subdomains of domains as well as lint DNS zone configurations. You can use all these capabilities of
mhost in your own projects using the async
mhost Rust library.
You can install
mhost via homebrew or cargo as well as by packaged binaries for Redhat and Ubuntu. There is also a ready to use Docker image.
Future steps will include support of more DNS record types and extending the set of lints as much as possible. I'm happy about any feedback and especially PRs.