Instalace PI-hole na Ubuntu (Install Pihole Ubuntu)

By | 23/03/2021

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:

pi-hole ubuntu
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.

pi-hole ubuntu

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.

pi-hole ubuntu

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:

pihole dns servers

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:

pihole block list

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á:

pihole linux

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:

pihole ip address

PI-hole také načetl ze síťového rozhraní enp0s3 IPv6 adresu:

pihole ubuntu

Nainstalovat webadmin rozhraní zvolením možnosti On:

pihole ubuntu

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.

pihole ubuntu

Volba On bude logovat DNS dotazy, které budou zobrazeny v dashboardu:

pi-hole logs

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:

pi-hole FTL

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

pi-hole ubuntu

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í:

pihole ubuntu

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:

nastaveni DNS serveru

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:

pi-hole reklamy

Takto vypadá výsledek s použitím PI-Hole:

pihole blokovani reklam block ads

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:

set DNS server

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

pihole backup 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:

pi-hole error

Ř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

pihole block ads

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/

pihole admin

3) Webové rozhraní nemá grafiku:

pihole no graphics

Ř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

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *