DEVELOPMENT ENVIRONMENT

~liljamo/felu-ng

ref: 19b891163d1a18c6947fb3353fcfb04bfc0f9319 felu-ng/felu-ns/README.md -rw-r--r-- 1.5 KiB
19b89116Jonni Liljamo docs: split docs to crate READMEs and more planning 21 hours ago

#felu-ns

Nameserver.

Many, hosted as ns1, ns2, nsN, ns9.

Requires a static public IPv4, which is used as the DNS (At least Do53 (Port 53 over UDP and TCP). Possibly DoT, DoH and DoQ in the future) interface.

Optionally the same interface used for DNS can be used as the interface that felu-mgmt connects to for management. Though ideally management is done via a VPN connection (e.g. Tailscale) and not via a public interface.

Completely stateless, receives configuration from felu-mgmt and stores it in memory. Stores nothing to disk.

Built-in HTTP server for things like Prometheus metrics at /metrics.

#Todo development notes

  • Don't start DNS servers until configuration from felu-mgmt is received.
  • Stress testing, I have no clue how performant the initial actor implementation will be.

#Architecture

#State Actor

Stores nameserver state/configuration.

#MgmtServer Actor

Tokio TcpListener on management port.

Sends configuration updates to state actor.

#DoUT Actor

DNS over UDP and TCP.

Reads records from state actor when responding to queries.

#CLI

Usage: felu-ns [OPTIONS]

Options:
      --mgmt-port <MGMT_PORT>  Port for management [default: 54321]
      --udp-port <UDP_PORT>    Override DNS over UDP port [default: 53]
      --tcp-port <TCP_PORT>    Override DNS over TCP port [default: 53]
  -h, --help

#Dependencies

  • hickory-dns as the DNS library, should support everything needed
  • hyper for HTTP server