Last Updated on 08/11/2023 by administrator
Instalace PI-hole na Ubuntu (Install Pihole Ubuntu)
Install Pihole Ubuntu
Motivace:
Pi-hole je aplikace, která slouží k blokování reklam a pofiderních domén na principu DNS sinkhole či DNS blackhole. Aplikace funguje jako DNS server s filtrací doménových jmen. Pokud na PI-hole dorazí DNS dotaz se „škodlivou“ doménou, odpoví na dotaz sinkhole IP adresou, což je neexistující IP adresa.
Takto není potřeba na každé síťové zařízení zvlášť instalovat externí aplikaci či doplněk do prohlížeče pro blokování, jelikož tato blokace bude probíhat centrálně v aplikaci PI-hole.
Díky blokaci reklamy se také rychleji načte webová stránka. Zejména videoreklama zatěžuje CPU/GPU, baterii notebooku ale také internetovou linku.
OS:
Implementace byla prakticky vyzkoušena na Ubuntu 22.04 LTS, Ubuntu 20.04 LTS a Ubuntu 18.04 LTS.
Implementace [1,2]:
Nejdříve je nutné nainstalovat gamin, aby se předešlo problémům s instalací instalačním problémům PI-hole Ubuntu:
sudo apt-get install gamin
Pokud by později nastaly komplikace s první instalaci PI-hole, jednoduše se dá odinstalovat pomocí pihole uninstall a provést znovu kroky instalace.
Any byl mohl být PI-hole stažen, je potřeba nainstalovat curl balíček:
sudo apt-get install curl
Pro instalaci PI-hole aplikovat příkaz níže:
curl -sSL https://install.pi-hole.net | bash
Pokračovat OK:
Ke správné funkci je velmi doporučeno, aby měl Ubuntu server přiřazenou statickou IP adresu. Pokud tomu tak není, tento článek pojednává, jak ji nastavit.
Pokud má Pihole Ubuntu server více síťových rozhraních, objeví se obrázek níže. Zde enp0s3 definuje LAN rozhraní a enp0s8 WLAN rozhraní. V tomto případě je zamýšleno pouze používat pro Pihole rozhraní LAN, a tak bude vybrána možnost enp0s3. Hvězdičkou se vybere možnost a potvrdí ENTEREM.
Vybrat libovolného Upstream DNS poskytovatele. Níže je možné nadefinovat i jiný DNS server, než je obsažen v tomto seznamu (volba Custom). Zde bude vybrán server Quad 9 (filtered, DNSSEC), který blokuje škodlivé domény a je zabezpečen pomocí DNSSEC. Pro info DNSSEC chrání domény proti podvodnému přesměrování a to tak, že každá doména je digitálně podepsána. Výpis všech DNS poskytovatelů a jejich popis či vlastnosti lze najít na https://docs.pi-hole.net/guides/dns/upstream-dns-providers. Volbu DNS poskytovatelů lze později změnit:
PI-hole se při blokování reklam spoléhá na seznam třetích stran. Zde je tedy možné vybrat jen jeden, nicméně pokud se zobrazí v nabídce více seznamů, tak je doporučeno vybrat všechny:
Pozn. Všechny blokované servery tímto seznamem lze nalézt zde: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts. Seznam je pravidelně aktualizovaný a obsahuje i české servery.
Je možné blokovat reklamy nejen na IPv4 ale i na IPv6 protokolu. Zde budou vybrány oba. Možnost IPv6 může být zvolena, i když se IPv6 protokol nepoužívá:
Pro PIhole Ubuntu bylo definované síťové rozhraní enp0s3, čili z tohoto rozhraní byla načetla IPv4 adresa 192.168.0.99/24 s výchozí branou 192.168.0.1:
PI-hole také načetl ze síťového rozhraní enp0s3 IPv6 adresu:
Nainstalovat webadmin rozhraní zvolením možnosti On:
Pokud neměl doteď Ubuntu server nainstalovaný nějaký webový server (např. o Apache server, NGINX, …) zvolit možnost On a tím se nainstaluje lighttpd server.
Pozn 1: Zda byl webový server již nainstalován se dá zjistit pomocí příkazu telnet localhost 80. Pokud se objeví hláška Connected to localhost, je webový server nainstalovaný a může se zvolit volba Off. Nicméně pravděpodobně bude potřeba doinstalovat PHP moduly, pokud nebyly nainstalovány, ale to se může provést až později pomocí sudo apt install php libapache2-mod-php.
Pozn 2: V praxi byla vyzkoušena instalace lighttpd i přestože byl apache server nainstalován a běžel. Díky tomu se lighttpd nepustí (vyzkoušen stop/start, restart – bez efektu). PI-hole tak běžel pod Apache serverem bez problému.
Volba On bude logovat DNS dotazy, které budou zobrazeny v dashboardu:
Tímto bude definována úroveň podrobností zobrazení ve statistikách. Volba 0 – Show everything, zobrazí všechny statistiky. Více se lze dočíst zde https://docs.pi-hole.net/ftldns/privacylevels/. Tuto volbu lze později změnit v nastavení PI-hole:
Instalace je hotova. Nezapomenou si někam poznačit admin heslo k webovému rozhraní. V tomto případě běží webové rozhraní PI-hole na http://192.168.0.99/admin
Pokud je potřeba změnit heslo k webovému rozhraní provede se to příkazem níže:
sudo pihole -a -p
Ukázka PI-hole webového rozhraní:
Pozn. Pokud webové rozhraní Pihole nelze zobrazit, může pomoct toto řešení.
Pokud je nakonfigurovaný firewall (lze zjistit příkazem sudo ufw status), je nutné povolit provoz UDP/53:
sudo ufw allow 53/udp
V podstatě se nemusí provádět žádná konfigurace PI-hole a je možné přejít k ověření funkce.
Ověření:
Ještě před změnou DNS serveru na 192.168.0.99 na DHCP serveru, bude ověřeno, zda funguje DNS resolving přes nslookup. Tento příkaz lze použít na OS Windows, či OS Linux. Formát dotazu je: nslookup <doménové jméno> <IP adresa PI-hole>:
C:\>nslookup abc.cz 192.168.0.99 Server: lubuntu20 Address: 192.168.0.99 Non-authoritative answer: Name: abc.cz Address: 185.62.108.251
Jedno z blokovaných doménových jmen je např. ad.centrum.cz. Jedná se o reklamní server. Pokud je doménové jméno blokováno, PIhole Ubuntu vrátí 0.0.0.0, a tak nedojde k přesměrování přímo na server ad.centrum.cz.
C:\Users\sec>nslookup ad.centrum.cz 192.168.0.99 Server: lubuntu20 Address: 192.168.0.99 Name: ad.centrum.cz Addresses: :: 0.0.0.0
Pro ověření blokace bude nakonfigurován manuálně PI-hole jako DNS server. Jak již bylo popsáno, PI-hole běží na IP adrese 192.168.0.99:
Příkaz níže smaže DNS cache v OS Windows:
ipconfig /flushdns
Test blokace:
Takto vypadal výsledek před použitím PI-Hole:
Takto vypadá výsledek s použitím PI-Hole:
Aby filtrování přes PI-hole bylo funkční v celé domácí síti, je nutné provést změnu na domácím routeru / wifi routeru, či na jakémkoliv síťovém zařízení poskytující DHCP server. Zde je příklad nastavení pro TP-Link:
Pak záleží na nastavení Lease Time v DHCP nastavení. Zde je Lease time nastaven na 120min, čili změny by se měly projevit pro všechna síťová zařízení nejpozději po tomto čase.
Síťová zařízení, která již používají PI-hole jako DNS server, lze najít ve webovém rozhraní pod Tools > Network.
Další blocklisty pro PI- hole:
Další block listy, které lze použít lze najít zde: https://firebog.net/
Tyto block listy lze manuálně po přihlášení ve webovém rozhraní PI-hole vložit v Group Management > Adlists > Add a new adlist.
TIP: Při zprovoznění dalšího PI-hole není potřeba vyklikávat všechny block listy v GUI rozhraní, stačí pouze mezi PI-hole servery překopírovat soubor gravity.db ve složce /etc/pihole.
Info k aktualizacím seznamů blokovaných domén:
Pi-hole udržuje tzv. gravity list, který obsahuje seznam blokovaných doménových jmen. List je aktualizovaný každý víkend v neděli v náhodný čas pomocí cronu. Lze jej najít v souboru /etc/cron.d/pihole. [3]
Gravility list lze také manuálně aktualizovat pomocí příkazu:
pihole -g
Další užitečné příkazy lze nalézt zde: https://docs.pi-hole.net/core/pihole-command/
Update Pihole na novější verzi:
Zobrazí, zda je možné aktualizovat Pi-hole Core, Web Interface či FTL (FTLDNS):
pihole -up --check-only
Aktualizace na novější verzi Pi-hole, AdminLTE a FTL (FTLDNS) se provede pomocí příkazu:
pihole -up
Záloha a obnova konfigurace Pihole:
Zálohu konfigurace je možné provést na webovém rozhraní přes Settings > Teleporter > Backup
nebo pomocí příkazu:
pihole -a -t
Obnovení konfigurace je možné provést na webovém rozhraní přes Settings > Teleporter > Restore
Po obnovení zálohy stačí provést upgrade gravility listu pomocí příkazu:
pihole -g
Mobilní aplikace pro Android:
Pihole má dokonce Android aplikaci Pi-Hole Connect, kde je možné vidět Statistiky, nastavené filtry, logy a obecně lze provádět správu Pi-hole.
Pro správu z mobilní aplikace je potřeba API Token, který lze získat přes webové rozhraní Pi-hole a to přes Settings > API / Web interface > API Settings > Show API token, což zobrazí QR kód.
V mobilní aplikaci Pi-Hole Connect pak stačí kliknout nahoře vpravo na tři tečky > Preferences > vybrat pihole a v poli API Token kliknout na ikonu QR kód a ofotit QR kód z webového rozhraní.
Pozn. Po aktualizaci Pi-Hole není potřeba vkládat znovu API Token.
DNS soubory:
DNS soubory lze najít ve složce /etc/pihole/custom.list pro A záznamy a /etc/dnsmasq.d/05-pihole-custom-cname.conf pro CNAME záznamy.
Odinstalování Pihole:
Provede se příkazem níže:
pihole uninstall
Řešení problémů [4]:
1) Nezobrazují statistiky ve webovém rozhraní, jak lze vidět níže:
Řešení problému:
Je potřeba vyčistit cache prohlížeče. Návod zde https://www.refreshyourcache.com/en/home/
Pokud to nepomůže, je možné aplikovat restart služby pihole-FTL pomocí příkazu níže:
service pihole-FTL restart
2) Nelze zobrazit webové rozhraní:
Může se stát, že již pod IP adresou jede jiná služba. Např. Já již využíval službu LibreNMS. V tomto případě webové rozhraní pi.hole/admin, nebo 192.168.0.99/admin nemusí fungovat.
Řešení problému:
Jedním z řešením je použit koncept virtualhostů. Jedná se o způsob, jak provozovat více webů (virtuálních webů) na jednom stroji pod jedinou IP adresou. Server podle příchozího požadavku HTTP GET v poli Host pozná, o jaký web se jedná.
Pokud Pihole jede pod webovým serverem Apache, je možné vytvořit soubor pihole.conf pro Virtualhost.
sudo vi /etc/apache2/sites-available/pihole.conf
A zkopírovat text níže:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName pihole ServerAlias www.pihole DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Pozn. 1 – Nelze použit tečku mezi řetezcem pi.hole, jelikož ta je brána jako DNS suffix, proto bylo použito doménové jméno pihole.
Pozn. 2 – Doménové jméno pihole lze libovolně změnit na jiné.
Aktivace konfiguračního souboru pihole.conf příkazem:
a2ensite pihole.conf
Pro aplikaci změn restartovat Apache:
systemctl reload apache2
Ověření, že je pihole.conf aktivní:
a2query -s | grep pihole
Otevřít soubor hosts:
vi /etc/hosts
a dopsat do souboru hosts příkaz níže:
192.168.0.99 pihole
, kde 192.168.0.99 je IP adresu serveru, na které Pihole běží a pihole je doménové jméno, které bylo definované v pihole.conf.
Restart služby pihole-FTL pomocí příkazu níže:
service pihole-FTL restart
Nakonec je nutné překonfigurovat DNS server směrující pihole server, který běží v tomto případě pod IP adresou 192.168.0.99.
Následně by měl být Pihole Ubuntu dostupný pod doménovým jménem níže přes prohlížeč:
http://pihole/admin/
3) Webové rozhraní nemá grafiku:
Řešení problému:
Je potřeba doinstalovat PHP moduly pomocí:
sudo apt install php libapache2-mod-php
4) Pi-Hole neblokuje Youtube reklamy ve videích:
Řešení problému:
Jelikož Youtube reklamy používají stejnou doménu jako Youtube videa, Pi-Hole prozatím neblokuje reklamy na serverech Youtube jako vyplývá z vyjádření zde: https://discourse.pi-hole.net/t/how-do-i-block-ads-on-youtube/253
Zdroje:
[1] https://www.yodiw.com/install-pi-hole-on-ubuntu-20-04-laptop-via-wifi/
[2] https://linuxincluded.com/install-pi-hole-on-ubuntu/
[3] https://discourse.pi-hole.net/t/does-pi-hole-keep-the-lists-updated/13224
[4] https://discourse.pi-hole.net/t/statistics-not-showing-in-dashboard/8972
[5] https://discourse.pi-hole.net/t/how-to-make-pi-hole-pick-a-specific-host-name/23505