lazydns

Implementation status vs upstream mosdns

This document summarizes the current implementation status of the Rust lazydns project against the upstream mosdns feature list (see upstream-features.md). It lists implemented features, partial implementations, and known gaps. Paths reference current source files where applicable.

Summary

1. Core DNS functionality

Status: IMPLEMENTED (core parsing and record support).

2. Transport & server features

Status: PARTIAL — UDP/TCP/DoH/DoT/DoQ present, not all features.

3. Plugin system

Core plugin coverage (select)

Executable & control plugins

ipset / nftset integration

Status: IMPLEMENTED (CLI-based integration). Note: upstream native netlink integration is not used; a native implementation could be added later.

4. Configuration system

Status: PARTIAL — YAML loading and validation implemented; hot-reload present as a reloader component.

5. Advanced features

Status: PARTIAL — basic observability and TLS present; more integrations possible.

6. Deployment & management

Status: IMPLEMENTED (basic deployment support present).

7. Testing coverage

Status: IMPLEMENTED — good test coverage; integration tests added for key behaviors.

  1. DoQ (DNS over QUIC): implement DoQ server and transport support to match upstream feature set.
  2. Replace CLI-based ipset/nft manipulation with native netlink integration (via a Rust netlink crate) for more robust system integration and error handling.
  3. Expand documentation per-plugin (config examples and QuickSetup documentation) and add README snippets linking examples/etc/config.yaml to plugin behaviors.
  4. Add further integration tests for multi-plugin sequences (e.g., forward->ipset->ros_addrlist flow) and permissioned system behaviors.
  5. Verify Prometheus metrics coverage and add exporter where missing.

File references (key files)