-
Home devices
Phones, laptops, the TV and the server's containers: they all ask here.
-
Router DHCP
When giving a device its address, the router tells it which DNS to use: this one, on all three segments.
-
The hypervisor and its containers
The server resolves here too since October, with a public one as fallback if this doesn't answer.
-
Public resolvers
Whatever isn't cached is asked outside, over HTTPS.
-
Cloudflare DNS
Where my domains' public records live.
-
DNS entry point
The same address as always: devices didn't notice the server change.
-
Local zones
The homelab's and the lab's internal names. Never asked outside.
-
Persistent cache
Stores answers honouring their expiry, survives restarts and refreshes the most used ones ahead of time.
-
Encrypted upstream (DoH)
Queries leaving home go over HTTPS: anyone watching the line can't see which names are asked. Checked: nothing leaves on port 53 any more.
- Technitium DNS
- Linux / SSH hardening
-
Block lists
The same twelve lists I had on Pi-hole, over 276,000 ad and tracking domains.
-
Manual blocks
A few domains blocked by hand, plus the signals some browsers check to bypass the network's DNS.
-
DNSSEC validation
If a signed domain answers with a signature that doesn't add up, the answer is rejected.
- Technitium DNS
- Linux / SSH hardening
-
Admin panel
Only from inside, behind the internal door with two-factor. The service doesn't run as root.
-
The previous DNS
Pi-hole with Unbound. Left installed, stopped, as a way back.
-
Technitium on another port
The new server started next to the old one, on another port, to test it without affecting anyone.
- Linux (Debian, Alpine, Arch)
-
nftables redirect
A rule moved new connections on port 53 to the new server inside the same container. Those already open finished on the old one.
- Linux (Debian, Alpine, Arch)
-
Monitoring
Zabbix checks it resolves external names and both services are up; Wazuh watches for configuration changes.
-
IP sync
A minimal container with a script. It checks the home public IP every 5 minutes.
- Linux (Debian, Alpine, Arch)
-
What's my IP?
It asks outside which IP the world sees and compares it with the last known one.
- Linux (Debian, Alpine, Arch)
-
Public records
If the IP changed, it updates the records that should point home. Otherwise it does nothing.
-
Start-up order
After a power cut, DNS is the first container to start: everything else needs it.