ferrous-dns
Dns resolver server and dns block
3.5K
High-performance DNS server with network-wide ad-blocking, written in Rust
Documentation • Quick Start • Configuration • Benchmarks • Roadmap
Full documentation is available at ferrous-networking.github.io/Ferrous-DNS.
At 482,506 queries/second under identical Docker conditions (16 CPUs, cache enabled, log info, rate limiting disabled), Ferrous-DNS is 4.9× faster than AdGuard Home, 4.7× faster than Blocky, and 233× faster than Pi-hole — all running a full feature stack (DNS server, REST API, Web UI, SQLite query log, blocking engine) in a single process. PowerDNS Recursor (884K QPS) and Unbound (952K QPS) lead as purpose-built pure recursive resolvers with no additional features.
Performance
Encrypted DNS
dns.google.com resolved at startup)Blocking & Filtering
*.ads.com)Client Management
Security
Compatibility & Deployment
docker run -d \
--name ferrous-dns \
--restart always \
--network host \
--user root \
-e FERROUS_CONFIG=/data/config/ferrous-dns.toml \
-e FERROUS_DATABASE=/data/db/ferrous.db \
-e FERROUS_DNS_PORT=53 \
-e FERROUS_WEB_PORT=8080 \
-e FERROUS_BIND_ADDRESS=0.0.0.0 \
-e FERROUS_LOG_LEVEL=info \
-e TZ=America/Sao_Paulo \
--dns 10.0.0.1 \
--cap-add NET_ADMIN \
--cap-add SYS_TIME \
--cap-add SYS_NICE \
--cap-add NET_BIND_SERVICE \
andersonviudes/ferrous-dns:latest
Access the dashboard at http://localhost:8080
services:
ferrous-dns:
image: andersonviudes/ferrous-dns:latest
container_name: ferrous-dns
restart: always
network_mode: host
user: root
environment:
- FERROUS_CONFIG=/data/config/ferrous-dns.toml
- FERROUS_DATABASE=/data/db/ferrous.db
- FERROUS_DNS_PORT=53
- FERROUS_WEB_PORT=8080
- FERROUS_BIND_ADDRESS=0.0.0.0
- FERROUS_LOG_LEVEL=info
- TZ=America/Sao_Paulo
dns:
- 10.0.0.1
cap_add:
- NET_ADMIN
- SYS_TIME
- SYS_NICE
- NET_BIND_SERVICE
volumes:
- ferrous-data:/data/
volumes:
ferrous-data:
docker compose up -d
| Variable | Default | Description |
|---|---|---|
FERROUS_CONFIG | — | Path to TOML config file (optional) |
FERROUS_DNS_PORT | 53 | DNS server port |
FERROUS_WEB_PORT | 8080 | Web dashboard port |
FERROUS_BIND_ADDRESS | 0.0.0.0 | Bind address |
FERROUS_DATABASE | /var/lib/ferrous-dns/ferrous.db | SQLite database path |
FERROUS_LOG_LEVEL | info | Log level: debug, info, warn, error |

Bug reports, feature requests, and pull requests are welcome.
Content type
Image
Digest
sha256:1f2c72d38…
Size
11.7 MB
Last updated
4 months ago
docker pull andersonviudes/ferrous-dns