Ad blocking with Raspberry Pi and Pi-hole

Published on

Sick of ads on the Web, YouTube and other services?

Do you have a Raspberry Pi (4, 3, or even a Zero like me) laying around collecting dust and you want to make use of it?

Use it for ad-blocking in your home network and to finally browse the web, watch videos etc. without annoying ads.

pi-hole-dashboard.png

One-liner install

Take out your Raspberry Pi from your forgotten drawer and connect to it via SSH.

Now run the following for a simple installation of Pi-hole:

curl -sSL https://install.pi-hole.net | bash

Follow the on-screen instructions based on your preferences (query logging, static IP etc.) and you’re one-step away for a ad-free experience while browsing the Web.

NB: Keep track of the password to access the admin panel!

pi-hole-password.png

Get the latest on Clean Code, Elixir, Node.js, Testing and Programming
Get updates from me in your inbox!

Configure the Router or individual devices

If you don’t want to fiddle around with your router configuration, you can configure each device indidually.

That’s the easiest method I find. For more information see discourse.pi-hole.net.

On your devices, head over to the DNS settings, and set as the only DNS server address the Raspberry’s IP:

On iOS

pi-hole-settings-ios.png

On Mac OS

pi-hole-settings-mac.png

Verify DNS resolution

To verify that the Raspberry Pi is used for DNS resolution, you can use a simple trick.

I used dig to interrogate DNS name servers, like this:

dig +trace cri.dev

You’ll see a similar output (check for your Raspberry’s IP address):

~ dig +trace cri.dev

; <<>> DiG 9.10.6 <<>> +trace cri.dev
;; global options: +cmd
.			509447	IN	NS	a.root-servers.net.
.			509447	IN	NS	b.root-servers.net.
.			509447	IN	NS	c.root-servers.net.
.			509447	IN	NS	d.root-servers.net.
.			509447	IN	NS	e.root-servers.net.
.			509447	IN	NS	f.root-servers.net.
.			509447	IN	NS	g.root-servers.net.
.			509447	IN	NS	h.root-servers.net.
.			509447	IN	NS	i.root-servers.net.
.			509447	IN	NS	j.root-servers.net.
.			509447	IN	NS	k.root-servers.net.
.			509447	IN	NS	l.root-servers.net.
.			509447	IN	NS	m.root-servers.net.
.			509447	IN	RRSIG	NS 8 0 518400 20200516050000 20200503040000 48903 . NtC6ObYfTRgLakuNLhMl ...
;; Received 525 bytes from 192.168.1.127#53(192.168.1.127) in 60 ms

...

As you can see, the Raspberry Pi’s IP address (192.168.1.127 on port 53) is first interrogated for the DNS resolution.

Get the latest on Clean Code, Elixir, Node.js, Testing and Programming
Get updates from me in your inbox!

Admin Panel

Pi-hole’s administration panel can be accessed at http://{PI_IP_ADDRESS}/admin and optionally configure it further.

Personally, I prefer to set the DNS resolver privacy level to Anonymous mode so that even in your own home-network your privacy is respected.

pi-hole-anonymous-mode.png

## Donate to pi-hole

Head over to pi-hole.net/donate/ and if you’re feeling generous, support pi-hole for the greater good.

pi-hole-donate.png

Here, have a slice of pizza 🍕