Running services inside your own household is an absolute blast. It usually starts with some application you need to keep running after you close your laptop. Before you know it, you have a Raspberry Pi in every room, at least one Intel NUC, and a small server rack in your Amazon shopping cart.
When going down this path myself, I noticed an interesting problem arose after I introduced the second server. Talking to one machine is easy, just memorize the static IP. But once you start to introduce multiple machines or multiple services on the same machine, it becomes a game of "what IP, what port, what path." And for the other people in the household, it's impossible to understand.
For me to continue, I needed my own DNS server. Luckily, I already introduced one into my ecosystem when I starting running Pi-Hole (for blocking tracking/ads).
In the next section, I'm going to show you how to quickly augment Pi-Hole to serve internal domains as well as block those pesky external domains.
Pi-Hole, under the hood, is running DNSMasq. So we want to provide it with some additional hosts to resolve.
First is the additional configuration to run after Pi-Hole:
Second is the list of hosts and their static IPs:
.conf file should be placed in the
/etc/dnsmasq.d/ folder. And the
.list file should be placed in the
For this demonstration, we're going to manage Pi-Hole locally in a Docker container. Here is my
docker-compose file that mounts those files correctly:
If we run Pi-Hole with those settings, we can validate they are accepted by using
$ dig @127.0.0.1 haas.example.com +short 10.0.0.205 $ dig @127.0.0.1 pihole.example.com +short 10.0.0.205 $ dig @127.0.0.1 plex.example.com +short 10.0.0.210 $ dig @127.0.0.1 go +short 10.0.0.215 $ dig @127.0.0.1 modem +short 192.168.100.1
And that external domains are still routed:
$ dig @127.0.0.1 google.com +short 220.127.116.11 $ dig @127.0.0.1 github.com +short 18.104.22.168
All of the steps and configurations you saw in this guide are available to checkout from my GitHub Gist:
$ git clone https://gist.github.com/d441e26e4d77a975fd3ebb4e6f19e3d6.git ... $ cd d441e26e4d77a975fd3ebb4e6f19e3d6 $ make ...