---
title: pihole
description: dns sinkhole, dhcp server, dns server / proxy
editor: markdown
showHero: false
author: wompmacho
date: '2024-04-27 23:53:26.059000+00:00'
lastmod: '2025-02-08'
tags: ['dns', 'adblock', 'network']
---

The Pi-hole is a DNS sinkhole that protects your devices from unwanted content,
without installing any client-side software. Useful for blocking ad services at
a DNS level. It uses a list of known ad services stored on github, can add your
own. It can also operate as a internal dns router and dhcp server.

## Pihole Setup

If you have a raspberry-pi or another device, its super easy to get things
going.

- [pihole setup](https://github.com/pi-hole/pi-hole/?tab=readme-ov-file#one-step-automated-install).

Any debian based system should be able to get things going quickly. Then all you
need to do is set your devices to use your pihole as the **primary** dns server.

**Debian based one-step install**

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

> [!NOTE]
>   I find this to be a little flaky when it comes to DNS, often times OS will need reboots and cache to be cleared in order to actively start using pihole DNS.
>
> Browsers also store dns info so many things can conflict before your DNS
    switches over. I find that using Pihole as primary DHCP server forces your
    devices to use the correct DNS server and fixes a lot of problems.
>
> Also keep in mind that **ipv6** can interfere if you are like me and have a ISP
    provider that tries to force their DNS

---

## Setup on Proxmox VM

My pihole is operating as a Debian GNU/Linux 12 (bookworm) virtual machine
running on Proxmox. I use it as a internal DNS router & DHCP server which makes
dns much easier in my case - due to my internet provider trying to force me to
use there dns servers. This setup is a little weird and in-order to get
everything to work a couple extra steps are need.

Will need to setup your pihole as a dhcp server, disable the existing dhcp
server on the router, reserve static ip addressed for proxmox and pihole so that
it can connect to the gateway, set the pihole as primary dns server on proxmox,
set proxmox to use dhcp rather than static ip and finally set pihole VM to
automatically boot first so that when it connects to the gateway devices
connected to the gateway are issued ip address from the pihole.

> [!WARNING]
> If you are using pihole for DHCP / DNS, keep in mind if the device goes down
that is hosting your pihole server, so will your DNS / DHCP. This May prevent
you from connecting to your network until you re-enable a dhcp server such as
the one in your router.

- reserve a ip address in router/gateway for proxmox server & pihole

    ![reserved_ip_example.png](reserved_ip_example.png)

- set pihole to enable DHCP

    ![pihole_dhcp_example.png](pihole_dhcp_example.png)

- set proxmox to get DHCP on boot rather than Static IP which is default

    ``` bash
    root@laptop-proxmox:~# cat /etc/network/interfaces
    auto lo
    iface lo inet loopback

    iface enp3s0 inet manual

    auto vmbr0
    iface vmbr0 inet dhcp
            bridge-ports enp3s0
            bridge-stp off
            bridge-fd 0

    iface wlp4s0 inet manual
    ```

- set proxmox default DNS server to pihole reserved address

    ![proxmox_dns_example.png](proxmox_dns_example.png)

- set pihole to automatically start on boot with highest priority boot order

    ![pihole_boot_order.png](pihole_boot_order.png)

- set sattic ip and gateway info for pihole netwoking configuration '

    ![pihole_network_settings_proxmox_example.png](pihole_network_settings_proxmox_example.png)

- Disable DHCP server in gateway / router settings

    ![router_disable_dhcp_example.png](router_disable_dhcp_example.png)

- If router has option to set default DNS, set to pihole reserved address
