Hermes is a compact DNS server in safe rust. It provides:
- Quick and easy configuration through a few select command line parameters.
- The ability to recursively resolve directly using the Internet root servers out of the box, to spare you from trusting anybody else's name servers.
- Alternatively, use it in forwarding mode to pass your queries onto a DNS server of your choice.
- The ability to act as an authoritative server for your own zones.
- A compact API with dual support for HTML and JSON media types across the same endpoints, for easy administration of zones and caching behavior.
Why? As a developer, I usually run many hosts and docker containers on my own machine and assign them names using hosts.txt. I wanted a more convenient way of accomplishing that. Additionally, I like having some insight into the network traffic that passes in and out of my machine and network, and monitoring the DNS layer for anomalies is actually a rather convenient way of doing so.
This is the result of running hermes -h
Usage: hermes [options]
Options:
-h, --help print this help menu
-a, --authority disable support for recursive lookups, and serve only
local zones
-f, --forward SERVER
forward replies to specified dns server
-p, --port PORT listen on specified port
By default, the API will run on port 5380.
All endpoints can return either JSON or HTML. When POST'ing, you can do so with either form data or json objects.
The following endpoints are available:
- /cache - List the current cache entries along with statistics
- /authority - List current authoritative zones
- /authority/[zone] - List the records within a zone
Comments and pull requests are welcome and encouraged.
Author: Emil Hernvall [email protected]