De onderstaande stappen en configuraties zijn gebaseerd op het gebruik van Docker Compose voor het installeren van Pi-hole en Unbound in Docker containers. Voor Unbound wordt gebruik gemaakt van de versie 1.18.0, gebaseerd op het Dockerfile van MatthewVance/unbound-docker, terwijl Pi-hole wordt ingezet met de standaard configuratie van docker-pi-hole.
Deze setup biedt een geïntegreerde oplossing voor DNS-beheer en advertentieblokkering op een Synology NAS, wat wordt bereikt door de volgende stappen:
SSH inschakelen op je Synology NAS:
- SSH inschakelen op je Synology NAS:
- Log in op DSM (DiskStation Manager).
- Ga naar Configuratiescherm > Terminal & SNMP.
- Vink SSH-service inschakelen aan en klik op Toepassen.
Verbinden met je NAS via SSH:
- Gebruik een SSH-client zoals PuTTY (Windows) of de terminal (macOS/Linux).
- Maak verbinding met je NAS door het volgende commando uit te voeren:
ssh [gebruikersnaam]@[IP-adres-van-je-NAS]
Identificeer de LAN-interface van de Synology:
- Voer het volgende commando in:
/sbin/ifconfig -a
- Noteer de naam van de LAN-interface, bijvoorbeeld ovs_eth0.
Creëer een macvlan netwerk:
- Voer het volgende commando in, waarbij je [parent-interface] vervangt door de naam van de LAN-interface die je hebt geïdentificeerd:
sudo docker network create -d macvlan -o parent=[parent-interface] --subnet=192.168.10.0/24 --gateway=192.168.10.1 --ip-range=192.168.10.30/31 pihole_unbound_network
Maak de benodigde mappen aan:
- Voer de volgende commando’s in:
mkdir -p /volume1/docker/pihole/dnsmasq.d
mkdir -p /volume1/docker/pihole/pihole
mkdir -p /volume1/docker/unbound
Bestanden downloaden naar de unbound map:
- Download de benodigde bestanden van de Unbound configuratie van GitHub naar de unbound map die je eerder hebt aangemaakt.
https://gitea.ipalm.nl/palmw01/Unbound
Let op, er is geen forwarding opgenomen in de configuratie, dus alle DNS-queries worden rechtstreeks door de Unbound DNS-server zelf afgehandeld zonder doorverwijzing naar externe DNS-servers.
Docker Compose YAML-bestand maken:
- Maak een Docker Compose YAML-bestand aan (docker-compose.yml) voor het deployen van de containers met behulp van Portainer.
version: "3.9"
services:
pihole:
image: pihole/pihole
container_name: pihole
mem_limit: 2g
cpu_shares: 768
security_opt:
- no-new-privileges:false
restart: on-failure:5
networks:
pihole_unbound_network:
ipv4_address: 192.168.10.30
pihole_bridge:
ipv4_address: 192.168.90.30
volumes:
- /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d:rw
- /volume1/docker/pihole/pihole:/etc/pihole:rw
environment:
WEB_BIND_ADDR: 192.168.10.30
WEB_PORT: 8080
WEBPASSWORD: [wachtwoord]
TZ: Europe/Amsterdam
DNSMASQ_USER: root
DNSMASQ_LISTENING: all
PIHOLE_DNS_1: 192.168.10.31
cap_add:
- NET_ADMIN
unbound:
image: mvance/unbound:latest
container_name: unbound
restart: on-failure:5
volumes:
- /volume1/docker/unbound:/opt/unbound/etc/unbound:rw
ports:
- "53:53/udp"
- "53:53/tcp"
- "8953:8953/tcp"
networks:
pihole_unbound_network:
ipv4_address: 192.168.10.31
networks:
pihole_bridge:
driver: bridge
ipam:
config:
- subnet: 192.168.90.0/24
gateway: 192.168.90.1
pihole_unbound_network:
external:
name: pihole_unbound_network
- Vervang 192.168.10.30 en 192.168.10.31 door de gewenste IP-adressen binnen het subnet dat je eerder hebt ingesteld voor het macvlan netwerk.
- Indien je dit vervangt moet je ook het gewenste IP-adres vervangen bij het WEB_BIND_ADDR (IP-adres Pi-Hole) en PIHOLE_DNS_1 (IP-adres Unbound).
Docker Compose stack deployen via Portainer:
- Log in op Portainer en navigeer naar Stacks.
- Klik op Add stack en plak de inhoud van je Docker Compose YAML-bestand (docker-compose.yml) in het veld.
- Geef je stack een naam, bijvoorbeeld pihole_unbound_stack.
- Klik op Deploy the stack.
Controleer de deployed services:
- Ga naar Containers in Portainer om te controleren of de pihole en unbound containers correct zijn gestart.
Wijzig DNS-instellingen op Synology NAS:
- Log in op DSM (DiskStation Manager) van je Synology NAS.
- Navigeer naar Configuratiescherm > Netwerk > Algemeen.
- Selecteer DNS-server handmatig configureren.
- Verander de DNS-serverinstellingen naar het IP-adres dat je hebt ingesteld voor de pihole container in het Docker Compose YAML-bestand. Kies ook een alternatieve DNS-server zoals 1.1.1.1 om geen DNS problemen te krijgen met andere docker containers.
- Klik op toepassen.
Wijzig de DNS-instellingen in je netwerk (bijvoorbeeld UniFi):
- Log in op de beheerinterface van je netwerkapparatuur (bijvoorbeeld UniFi Controller).
- Navigeer naar de instellingen voor je netwerk of VLAN waar je Synology NAS en andere apparaten zijn verbonden.
- Wijzig de DNS-instellingen zodat de Pi-hole container als DNS-server wordt gebruikt.
Wijzig unbound.conf om unbound-control in te schakelen:
- Log in op je Synology NAS via SSH.
- Navigeer naar de unbound map waar je unbound.conf zich bevindt (bijvoorbeeld /volume1/docker/unbound).
- Open het unbound.conf bestand met een teksteditor.
- Zoek naar de regel die unbound-control instellingen bevat.
- Verander de waarde van unbound-control van no naar yes.
- Sla het bestand op en sluit de teksteditor af.
Herstart de Unbound-container:
- Om de wijzigingen in unbound.conf toe te passen, herstart je de Unbound-container.
- Ga terug naar Portainer of gebruik SSH om de Unbound-container te herstarten.
docker restart unbound
Gebruik unbound-control via SSH:
- Met unbound-control kun je verschillende operationele commando’s uitvoeren op de Unbound DNS-server.
- Gebruik het volgende commando via SSH om unbound-control commando’s uit te voeren:
docker exec unbound unbound-control <command>
- Vervang <command> door het gewenste commando.
Lijst met beschikbare unbound-control commando’s:
- status: Toon de huidige status van de Unbound-server.
- reload: Herlaad de configuratie van de Unbound-server.
- start: Start de Unbound DNS-server.
- stop: Stop de Unbound DNS-server.
- stats_noreset: Toon statistieken zonder deze te resetten.
- flush_zone : Verwijder de cache voor een specifieke DNS-zone.
docker exec unbound unbound-control status
docker exec unbound unbound-control reload
docker exec unbound unbound-control stats_noreset
Een volledige lijst met de commands kun je vinden via:
https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound-control.html
Door deze stappen te volgen, kun je unbound-control inschakelen, de Unbound DNS-server beheren en specifieke commando’s uitvoeren via SSH op je Synology NAS.