Linux with systemd

Build, install, enable.

# Build (Rust 1.85+)
cargo build --release

# Install
sudo install -Dm755 target/release/rdns /usr/local/bin/rdns
sudo install -Dm755 target/release/rdns-control /usr/local/bin/rdns-control
sudo install -Dm644 rdns.toml.example /etc/rdns/rdns.toml
sudo install -Dm644 dist/rdns.service /etc/systemd/system/rdns.service

# Create user
sudo useradd -r -s /usr/sbin/nologin rdns

# Run
sudo systemctl daemon-reload
sudo systemctl enable rdns
sudo systemctl start rdns

Verify

dig @127.0.0.1 example.com
sudo systemctl status rdns
rdns-control stats

Configuration

rDNS uses TOML. Copy rdns.toml.example and adjust. The most common starting point is forwarder mode:

[server]
mode = "resolver"

[listeners]
udp = ["0.0.0.0:53", "[::]:53"]
tcp = ["0.0.0.0:53", "[::]:53"]

[resolver]
forwarders = ["1.1.1.1", "8.8.8.8"]
dnssec = true

See the configuration reference for every option, or the use cases page for ready-made configs.

Get rDNS running in 60 seconds.

Single static binary. TOML config. MIT licensed. Linux, FreeBSD, and macOS.