Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

dns-rs

dns-rs is a network-wide DNS sinkhole written in Rust, a modern alternative to Pi-hole built to run in a container and as stateless replicas on Kubernetes. It forwards queries to an upstream resolver with a cache, blocks the names on your blocklists, answers local records, and forwards chosen domains to their own server. It exports a query log, Prometheus metrics and Kubernetes probes.

All configuration is a TOML file that dns-rs reloads without a restart. The project is young: see the README for its current status.

Where to start

Pages

PageContent
Getting startedRun the image or the Helm chart, check it, point clients at it
Migrating from Pi-holeHow Pi-hole concepts map to dns-rs, and what is missing
ConfigurationEvery setting, default, environment override and reload behavior
BlocklistsSupported formats, rule syntax, blocking modes, download limits
Metrics and probesThe HTTP endpoint: /healthz, /readyz, /metrics, /api/v1/check, /api/v1/status and the metric series
LoggingThe query log and the operational log messages
Container imagePublished tags, running the image, ports, signals
ReleasingCutting a release: the tag checks and what gets published
KubernetesThe Helm chart: objects, values, configuration changes, pod security
Architecture decisionsWhy dns-rs works the way it does

Source code and issues: github.com/EvannDev/dns-rs.