A split-horizon home resolver: dnscrypt-proxy as the client-facing resolver, knot as the authoritative server for the local example.com zone.
The files for this example are on Github.
| Service | Role | Static IP |
|---|---|---|
dnscrypt-proxy |
Resolver clients point at. Forwards example.com (and 10.in-addr.arpa) to knot; everything else goes out over DNSCrypt/DoH to public resolvers. |
10.179.215.2 |
knot |
Authoritative DNS server for the example.com zone. |
10.179.215.3 |
Both attach to the pre-existing external incusbr0 network, alongside caddy, which serves the *.example.com sites this zone resolves to.
incus-compose up
Point a client's DNS at 10.179.215.2.
knot's storage volume is bind-mounted with x-incus: security.shifted: true and initial.uid/initial.gid: 53, so the container's knot user (uid/gid 53) owns the files correctly under Incus's idmapped mounts.