A basic nameserver implementation for your home or lab environment.
- 2 user defined upstream nameservers (primary + secondary)
- user defined, A, AAAA and CNAME records
- see
labns.json
for an example configuration file
- requires a linux distro with systemd and golang 1.15+ in the system path
- run the
systemd-install.sh
script as a super user or root - enable labns to start on boot (if desired):
sudo systemctl enable labns.service
- start labns as superuser:
sudo systemctl start labns.service
- check the status of labns:
sudo systemctl status labns
- build the image from the dockerfile:
docker build -t labns:prod .
- run the image, exposing UDP port 53 and mount the configuration file to the container at runtime e.g.
docker run --name labns -p 53:53/udp -v /path/to/config.json:/dist/config.json labns:prod
labns supports a number of configuration parameters parsed as environment variables:
LABNS_CONFIG_PATH
: an absolute path to the JSON configuration file (defaults to /etc/labns/labns.json)
LABNS_DNS_SERVICE_PORT
: specify a non standard port to start the UDP listener on (defaults to 53)
LABNS_LOG_PATH
: specify a log file to redirect stdout and stderr into (note this will prevent the service from logging to stdout)
Note that in order for clients to use your labns host as a nameserver you will need to open port 53 to incoming UDP traffic in your system firewall with a tool such as iptables or firewalld.
Stay tuned for more features!