Last Updated on 20/07/2022 by administrator
Konfigurace Pi-hole a BIND (Configure BIND with Pihole)
Configure BIND with Pihole
Motivace:
Tento návod popisuje, jak zprovoznit dohromady PiHole a BIND v rámci jednoho Ubuntu serveru.
Pokud instalace Pi-Hole nebo BIND nebyla provedena, je možné ji nainstalovat a nakonfigurovat díky článkům níže:
OS:
Implementace byla prakticky prováděna na Ubuntu 20.04 LTS, postup může být aplikovatelný na Ubuntu 19.10 a nižší.
Implementace [1]:
Obě aplikace Pi-Hole a BIND zpracovávají DNS požadavky, tudíž běží na sítových portech a to UDP/53 či TCP/53. Problémem je, že pouze jedna aplikace může obyčejně běžet na jednom portu pod jedním Ubuntu serverem a jednou IP adresou. Proto je nutné změnit u jedné z aplikací tento výchozí síťový port.
V tomto případě bude zachován standardní port 53 aplikace Pi-Hole a změní se port aplikace BIND.
Princip funkce:
Všechny DNS požadavky jsou DNS klientem standardně posílány na Ubuntu server na cílovém portu TCP/53 či UDP/53. Tuto DNS zprávu zachytí aplikace Pi-Hole běžící na portu TCP/53 či UDP/53 a podle nastavení tento DNS požadavek buďto vyfiltruje, nebo přepošle na cílovém portu TCP/53 či UDP/53 pro aplikaci BIND. Ta ji podle nastavení přepošle do internetu. Vše ukazuje obrázek níže:
Změna portu pro BIND se provede v souboru /etc/bind/named.conf.options.
vi /etc/bind/named.conf.options
V souboru named.conf.options je nutné přepsat port 53 na libovolný, který není OS Ubuntu používán. V tomto případě bude přepsán na port 533.
options { listen-on port 533 { any; }; listen-on-v6 port 533 { any; }; }
Restart služby BIND:
sudo service bind9 restart
Alternativně restart pomocí:
sudo systemctl restart bind9
Nastavení aplikace Pi-hole:
Přes webové rozhraní Pi-hole v cestě Settings > DNS zaškrtnout pouze Custom 1 pod Upstream DNS Servers a nastavit 127.0.0.1#533. Díky definici 127.0.0.1#533 Pi-hole aplikace ví, že má odchozí DNS požadavky předávat aplikaci BIND, která běží na portu TCP/533 či UDP/533:
Níže je pak nutné provést rozšířené nastavení při předávání DNS dotazů z Pi-hole na BIND. V tomto případě bylo odškrtnuto Never forward reverse lookups for private IP ranges a Use DNSSEC. Pod obrázkem je vysvětlení těchto dvou možností.
Never forward reverse lookups for private IP ranges
Pokud je tato možnost zaškrtla (✓), nebudou zasílány PTR DNS dotazy do aplikace BIND, pokud reverzní DNS dotaz obsahuje IP adresu z privátního rozsahu uvedenou níže:
- 10.0.0.0 – 10.255.255.255 (10/8 prefix)
- 172.16.0.0 – 172.31.255.255 (172.16/12 prefix)
- 192.168.0.0 – 192.168.255.255 (192.168/16 prefix)
Jelikož v aplikaci BIND používám reverzní zónu z privátními IP adresami, mám tuto možnost odškrtnutou, podle obrázku výše.
Use DNSSEC
Pokud je tato možnost zaškrtla (✓), ověřují se DNS odpovědi a cache DNSSEC dat v tomto případě mezi aplikacemi Pi-hole a BIND. Pokud DNS zóny pod BIND aplikací máte digitálně podepsané je možné ponechat možnost zaškrtlou (✓).
Jelikož DNS zóny pod BIND aplikací nemám digitálně podepsáné, mám tuto možnost odškrtnutou podle obrázku výše (BIND používám lokálně a nemám jej „vystrčený do internetu“ – řídím si ho sám).
Pozn. Jelikož je funkce DNSSEC defaultně zapnutá pod aplikací BIND, DNS odpovědi a cache DNSSEC mezi aplikací BIND a veřejnými DNS servery v internetu jsou automaticky ověřovány.
Nakonec přes webové rozhraní Pi-hole v cestě Settings > System kliknout na Restart DNS resolver:
Alternativně je možné provést restart DNS resolveru pomocí příkazu níže:
sudo pihole restartdns
Pokud je nakonfigurovaný firewall (lze zjistit příkazem sudo ufw status), je nutné povolit provoz UDP/53 a TCP/53:
sudo ufw allow 53/udp sudo ufw allow 53/tcp
Pozn. Není potřeba přidávat pravidlo ufw allow 533/udp, jelikoz předávání DNS požadavků se provádí mezi procesy jednoho serveru.
Řešení problémů:
1. Aktualizoval jsem DNS záznam v zóně přes BIND aplikaci, ale překlad nefunguje z klientské stanice/notebooku/PC.
a) Restart služby BIND:
sudo service bind9 restart
b) Restart restart DNS resolveru Pi-hole:
sudo pihole restartdns
c) Vymazání cache v OS Windows či OS Ubuntu
WIN:
ipconfig /flushdns
Linux:
sudo systemd-resolve --flush-caches
Zdroj:
[1] https://discourse.pi-hole.net/t/can-the-bind9-and-pihole-together-running/21973