- DNS Forwarding: Forwards DNS queries to one or more upstream DNS servers.
- Client-Based Routing: Route different clients to different upstream DNS servers (private/public).
- Domain Routing (Folder-Based): Forward DNS queries for specific domains to designated upstream servers using rules from all
.txtfiles in a folder. - Hot-Reload Routing Table: Automatically refresh domain routing rules at a configurable interval.
- Caching: Uses an in-memory cache to store DNS responses, reducing latency and upstream load.
- Stale Cache Updater: Proactively refreshes frequently accessed cache entries before they expire to prevent cache misses for popular domains.
- Cache Persistence: Automatically saves and restores cache to/from disk for hot starts after container restarts.
- Health Checks: Periodically checks upstream DNS server reachability and only uses healthy servers.
- Statistics: Logs DNS usage and cache hit/miss rates.
- Prometheus Metrics: Comprehensive metrics collection for monitoring and alerting.
- PID File Management: Creates and manages PID files for integration with monitoring tools like monit, Zabbix, and systemd.
- Configurable: All major parameters (DNS servers, cache TTL, ports, metrics, routing folders, reload intervals, etc.) are configurable via environment variables or a
.envfile. - Docker Support: Lightweight, production-ready Docker image with secure, dynamic configuration via folder mounts.