Configure Ubuntu 22.04 as a DNS server using ControlD
Introduction
If you want to run your own DNS server for increased security, privacy, and control, using
Control D
is a great way to accomplish this.Control D is a fully customizable DNS service, similar to Pi-Hole, AdGuard or NextDNS, but with proxy capabilities.
This means it not only blocks things (ads, porn, etc), but can also unblock websites and services.
Prerequisites
An active
Control D
account.A
Control D
Resolver ID.A device and profile already configured on the Dashboard.
Installation
Install the
ctrld
utility.
Substitute RESOLVER_ID_HERE
for your actual Resolver ID.
Start the
Control D
DNS proxy service.
Here is a successful start:
Edit the
/etc/controld/ctrld.toml
file to change theip = '127.0.0.1'
line to the actual IP address of the server.
Restart the
ctrld
service.
Verify that the server's IP address is listed as the only nameserver in the
/etc/resolv.conf
file and change this if necessary, for example:
Make the following changes to the
/etc/systemd/resolved.conf
file:
Substitute RESOLVER_ID_HERE
for your actual Resolver ID.
Use one of ControlD
's DNS resolvers as the DNS IP address, for example: 76.76.2.22.
See the Free DNS Resolvers page for more detail.
Restart the
systemd-resolved
service.
Restart the
ctrld
service one more time.
Run a test query using the
dig
command specifying the IP address of the system.
If verify.controld.com
resolves, you are successfully using Control D
for DNS requests. You can now use this system as the DNS server for your entire network by simply configuring your router to use this system's IP address.
If you are unable to specify a DNS server in your router, you can also change any client on your network to point to this system's IP address as an alternative.