Here's how to use unbound as a local caching resolver:
Edit /etc/resolv.conf so it queries localhost on port 53:
# Generated by age0 dhclient
nameserver 127.0.0.1
lookup file bind
Inside /var/unbound/etc/unbound.conf, you will see this at the top:
server:
interface: 127.0.0.1
interface: ::1
# override the default "any" address to send queries; if multiple
# addresses are available, they are used randomly to counter spoofing
#outgoing-interface: 192.0.2.1
#outgoing-interface: 2001:db8::53
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: ::0/0 refuse
access-control: ::1 allow
Make sure you are listening on 127.0.0.1 (for localhost) so that your VPS can query localhost on port 53, and also ::1 on port 53 (for IPv6).
For access control, you want to refuse 0.0.0.0/0 (all IPv4s) but allow 127.0.0.0/8 (everything that originates locally). Again, refuse ::0/0 (all IPv6s) but allow ::1 (localhost).
Put this at the bottom of the file:
forward-zone:
name: "." # use for ALL queries
forward-addr: 163.53.248.170
forward-addr: 103.236.162.119
forward-addr: 192.99.85.244
forward-addr: 31.171.251.118
forward-addr: 51.254.25.115
forward-addr: 46.101.70.183
forward-addr: 45.71.112.70
forward-addr: 87.98.175.85
forward-addr: 185.208.208.141
forward-addr: 89.35.39.64
forward-addr: 87.98.175.85
forward-addr: 172.98.193.42
forward-addr: 111.67.20.8
These are IP addresses for DNS servers which I got from [[https://servers.opennic.org/]]. However, the servers change regularly so make sure you update the list.
To start unbound:
$ doas rcctl enable unbound
$ doas rcctl start unbound
To test if unbound is working:
$ dig @127.0.0.1 google.com
You should see something like this:
;; ANSWER SECTION:
google.com. 29 IN A 172.217.27.142