Troubleshooting¶
Fixes for the problems you are most likely to hit with Unbound DNS Resolver. Each entry gives the symptom, the usual cause, and what to do.
Queries from another host are refused or time out¶
Cause: by design, the resolver listens on 127.0.0.1 and answers only
127.0.0.1.
Fix: add an interface and an access-control allow rule for your
clients, restart Unbound, and open port 53 in the security group, as
described in Answer queries from your VPC.
A dig from the instance with -b 127.0.0.2 is refused on purpose.
A private zone does not resolve, or returns SERVFAIL¶
Cause: Unbound does not know where the zone lives, or the zone is not DNSSEC-signed and fails validation.
Fix: add a forward zone with domain-insecure, as described in
Forward a private zone.
An internal name resolves, but the answer has no address¶
Cause: answers that point into private or link-local address ranges are stripped for names that are not marked as private.
Fix: add private-domain: "<zone>." for that zone.
app.broken.test returns SERVFAIL¶
This is expected. broken.test is the negative DNSSEC check: its trust
anchor matches no key, so validation fails.
app.secure.test starts returning SERVFAIL after a year¶
Cause: the test zone's signatures last 365 days from first boot.
Fix: sign the zone again. Stop both services, remove the keys and the signed zone, rerun first boot, then start the services:
sudo systemctl stop unbound unbound-auth
sudo rm -rf /var/lib/unbound-dnssec/
sudo rm /etc/unbound/zones/secure.test.zone /etc/unbound/secure.test.ds
sudo systemctl restart sushi-unbound-firstboot
sudo systemctl start unbound-auth unbound
Other names are not affected.
A service is not running after boot¶
Cause: first boot failed, or a configuration change does not pass its check.
Fix: read the logs:
systemctl status sushi-unbound-firstboot unbound-auth unbound --no-pager
sudo journalctl -b -u sushi-unbound-firstboot -u unbound-auth -u unbound --no-pager
Run sudo unbound-checkconf after any edit. First boot never overwrites an
existing configuration, signed zone or key, and it refuses to continue if
state paths have been replaced with links. Restore those files from your
backup as regular files rather than working around the check.