Skip to content

earentir/dnsresolver

dnsresolver

A non standard DNS Server with multiple management interfaces. Its main function is it will do the same dns request to multiple DNS servers, if any of the servers replies with an authoritative reply it chooses that, otherwise it provides the reply from the fallback dns server. This will help in case for example you have a local dns server and you connect to work over a VPN and use that DNS server at the same time.

Diagram

image

Usage/Examples

start with interactive CLI

./dnsresolver

It will look like this:

2024/05/06 02:15:15 Starting DNS server on :53
> ?
Available commands:
stats           - Show server statistics
record          - Record Management
cache           - Cache Management
dns             - DNS Server Management
server          - Server Management
/               - Go up one level
exit, quit, q   - Shutdown the server
help, h, ?      - Show help
>

start as daemon

./dnsresolver --daemon

start in client mode (it will try to connect to the default unix socket)

./dnsresolver --client-mode

Config Files

File Usage
dnsrecords.json holds dns records
dnsservers.json holds the dns servers used for queries
dnscache.json holds queries already done if their ttl diff is still above 0
dnsresolver.json the app config

Roadmap

  • mDNS Server
  • DHCP Server
  • REST API
  • Remote Client (Over TCP)

Dependancies & Documentation

Go Mod

Go Reference

Dependancies

OpenSSF Best Practices

OpenSSF Scorecard

Code Climate issues

GitHub commit activity

Contributing

Contributions are always welcome! All contributions are required to follow the https://google.github.io/styleguide/go/

Authors

License

I will always follow the Linux Kernel License as primary, if you require any other OPEN license please let me know and I will try to accomodate it.

License