Diit.cz - Novinky a informace o hardware, software a internetu

STAVÍME: Raspberry Pi Zero v roli blokátora reklamy

Pokud Raspberry Pi leží ladem, proč jej nevyužít o něco efektivněji. Tentokrát jako hardwarový AdBlock

Určitě to všichni dobře znáte. Na internetu objevíte levnou zajímavou hračku a impulzivně ji koupíte, aníž byste pro ni měli využití. V mém případě šlo o Raspberry Pi Zero W, které jsem koupil, vyzkoušel a chvíli používal jako přehrávač multimédií, což fungovalo až překvapivě dobře. V kombinaci s podomácku vyrobeným monitorem, který jsem rovněž zde na diitu zdokumentoval, šlo o zajímavé kombo přenosné multimediální stanice.

Čas šel a Raspberry začalo být pomalé, což se rovněž dalo čekat, a tak jsem jej nahradil výkonnějším RPi 4 a staré Zero skončilo na pomyslném podstavci na poličce (ono nešlo úplně o pomyslný podstavec, destička byla doslova a do písmene našroubována do dřevěného podstavce s vkusným popisem Pi Zero vypáleného do dřeva pájkou). Avšak internet a vlastní zvědavost mi přinesla další zajímavý nápad. Raspberry Pi tentokrát jako fyzický blokátor reklam, který (skoro) funguje dle představ.

Oč jde

Prvně o projektu. Celá sranda je pojmenována jako Pi-Hole, za kterou stojí celá komunita vyvíjející software a rozšiřuje kompatibilitu. Jde vlastně o podprogram, který je spuštěn jako služba v linuxovém systému, v našem případě Raspbianu, který z malého počítače vytváří jednoduchý DNS server.

Trochu podrobněji, Raspberry je jako mezičlen, či poslíček, který zpracovává každý požadavek nebo dotaz ze zdrojového zařízení (například telefonu nebo počítače, o tom později) a namísto toho, aby doručil adresu a všechny náležitosti zpět na zdrojové zařízení z cíle, doručí pouze omezený obsah, v našem případě pouze důležitý obsah bez nežádoucích služeb, jako jsou kupříkladu reklamy.

V praxi to pak znamená, že pokud nastavíte správně Pi-Hole jako výchozí DNS server na telefonu, budete vidět jen a pouze konkrétní obsah a veškeré reklamy, které se běžně stahují v aplikacích telefonu budou na námi vybudovaném DNS serveru odmítnuty jako neplatný požadavek.

Server, který reklamu poslal si tak bude fungovat dál v domnění, že reklama byla poskytnuta (a některé programy doslova vyžadují reklamu k tomu, aby fungovali) ale do koncového zařízení se dostane jen ten obsah, který chceme. Zní to zajímavě? Můžu potvrdit, že to zajímavé je a ve velkém procentu případu i funkční způsob, jak se nadobro zbavit otravné reklamy.

Stavíme...

K vybudování vlastního DNS směrovače je zapotřebí mít funkční stroj nebo desku, na které běží linuxová distribuce. Dále je potřeba nainstalovat program Pi-Hole. Jde o multiplatformní program, tak je možné jej nainstalovat prakticky kamkoliv, ale v mém konkrétním případě pro nastavení budu používat Raspberry Pi Zero W (Jen pro doplnění, jde o verzi s integrovanou bezdrátovou konektivitou). 

Zavaděč NOOBS umožňuje instalaci různých distribucí, které mají podporu pro Raspberry Pi. Obrovskou výhodou je, že v případě karambolu, kdy systém nebude možné spustit nebo dojde k jiné fatální chybě Vám umožní pohodlně systém znovu nainstalovat i bez funkčního PC v tzv. Recovery moodu. Systém lze instalovat lokálně bez nutnosti mít aktivní připojení k internetu, ovšem příhodnější je celou instalaci provádět přes internet.

Na Pi Zero prvně stáhneme Noobs skrze oficiální stránky a podle návodu nahrajeme systém na paměťovou kartu a destičku zapojíme k monitoru a napájení, abychom byli svědky prvního Bootu zařízení. Po spuštění necháme Raspbian zkompilovat skrze automatizovaný program a počkáme, než bude celá operace hotova. Vše je dobře zdokumentované, tak nebudu zacházet do detailů.

Po instalaci je zapotřebí nastavit SSH přístup do zařízení Nebo nainstalovat VNC klienta z integrovaného repozitáře. Já, jelikož jsem příliš pohodlný a z konzole se mi dělají mdloby, jelikož do ní koukám prakticky denně, nainstaloval jsem VNC klienta, který funguje jako vzdálená plocha. Nastavíme heslo, zapamatujeme si přiřazenou IP adresu z raspberry (buďto přes správce zařízení a síťový adaptér nebo přes konzoli skrze příkaz ifconfig -a, čímž zobrazíme kompletní adresu síťového řadiče). Krok dvě je na počítač se systémem Windows nebo Linux nebo i Mac OS doinstalovat VNC klienta a přes IP adresu, kterou jsme předtím viděli v příkazové řádce se připojíme.

Ukázka VNC klienta ze systému Windows. Lze ale bez problému přistupovat i z jiných platforem (Linux, OSX, iOS nebo Android).

(Tip: VNC je dostupné jak pro Android, tak i pro iOS, tak není potřeba mít k dispozici ani počítač pro následnou konfiguraci a správu.). Pokud je vše nainstalované a funkční, můžeme Raspberry bez problému odpojit od monitoru a pro zbytek nastavování schovat na příhodné místo, kde bude mít konektivitu k internetu a napájení, jelikož nebude dál třeba se fyzicky o zařízení jakkoliv starat.

Instalace Pi-Hole

Pokud vše dopadlo dobře a po přesunutí RPi vše nastartovalo a připojení přes VNC funguje, stačí v tomto kroku pouze spustit příkazovou řádku na RPi a vložit jednoduchý příkaz, který je automatizovaný a vše nainstaluje, jak má bez nutnosti jakkoliv zasahovat:

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

 

Jelikož jde o oficiální příkaz, vše se automaticky stáhne a nainstaluje. Posléze jste uvítáni obrazovkou textového instalátoru, který se ptá na základní věci, ale jelikož vše funguje v základu skvěle, stačí slepě vše potvrdit a dojít do zdárného konce instalace, viz Obrázky. Nelekněte se, příkaz je celkem náročný na samotné RPi a tak pár minut trvá, než se vše nainstaluje. Já sám jsem se zaleknul, když se pár minut nic nedělo a měl jsem dokonce nahnáno, že se RPi zasekl a málem jsem instalaci přerušil tvrdým resetem. Takže buďte prosím trpěliví.

Jakmile je vše hotové, program Vás na konci instalátoru počestuje předem nastaveným komplikovaným heslem pro přístup. Jedna varianta je si heslo zapsat, ale lze to udělat i jinak. Vše potvrďte a jakmile celý instalační proces se dokončí, terminál ještě neukončujte. Vlastní heslo lze totiž snadno příkazem přenastavit.

sudo pihole -a -p

Po zadání příkazu se vás webová administrace přímo dotáže na nastavení nového hesla. Pokud pole ponecháte prázdné, webové rozhranní nebude heslo vyžadovat. Nastavení hesla ale doporučuji, jelikož může jít o potencionální slabost v síti.

Nastavujeme router

Před finálním nastavením je ještě potřeba se přihlásit na router a přiřadit statickou IP adresu pro RPi a to z prostého důvodu. Drtivá většina domácích sítí je nastavena na dynamické přiřazování IP adres, takže po každém restartování routeru nebo raspberry dojde k nastavení nové IP adresy, což dozajista znepříjemní následné přenastavování DNS serveru na telefonu nebo tabletu. Není ale třeba zcela vypínat DHCP server, nýbrž stačí současnou přiřazenou adresu rezervovat. Opět, každý využívá jiný router a tak je popis velmi obecný. Zkrátka v seznamu aktivních klientů na routeru vybereme RPi, zkopírujeme MAC adresu a přidáme jej do listu rezervovaných. Hotovo.

Ukázka, jak vypadá rezervovaná lokální adresa. Omluvte smazané MAC adresy a názvy. 

 Webová administrace 

Jelikož jde o lehký proces, nepředpokládám, že by se něco po cestě pokazilo a rovnou přejdu k Webové administraci. Pro přístup zadáme do prohlížeče IP adresu, kterou vám router pro RPi přidělil a jen doplníme dovětek /admin. (Ex.: http://172.16.1.8/admin/). Vše už je předem nastavené z instalátoru a tak nás čeká jen jediná věc - doplnit seznam všech serverů, které jsou označeny za reklamní. V sekci Blacklist přidáme seznam adres, které obsahují inkriminované servery a tak se rapidně zvýší šance, že dojde k úplnému zablokování adres s reklamou. Po přidání manuálně aktualizujeme seznam a případně celé RPi restartujeme skrze VNC pro jistotu a to je vše. Nic dalšího už není třeba nastavovat.

Mimo samotné nastavování webová administrace rovněž poskytuje přístup ke grafům , které zobrazí statistiku toho, co bylo povoleno nebo zakázáno a jaká je četnost blokace webů zaměřených především na reklamu.

Poslední nastavení na koncovém zařízení 

Poslední fází je nastavení našeho nového DNS serveru na koncové zařízení. Je možné DNS server nastavit přímo na routeru, ale z mé zkušenosti doporučuji nastavit RPi jako DNS server pouze na mobilních zařízení, které jsou nejvíce náchylné na nežádoucí reklamu, což v případě zablokování nesprávného webu umožní snadné hledání chyby skrze počítač. Adresa, která byla neprávem zablokována se dá poté nastavit do white listu, aby k další blokaci nedocházelo.

Ruční nastavení DNS serveru na tabletu (na kterým jsem mimo jiné zpracoval celý text i následné nastavení RPi přes VNC)

V nastavení u Android telefonu stačí zvolit současné připojení k internetu a staticky nastavit veškeré indície. Na konci nastavení si všimněte položky DNS. Zde nastavíme adresu RPi, která bude jako jediná a výchozí pro veškerou komunikaci s internetem. A to je z nastavení vše. Nyní si stačí vychutnat weby a aplikace bez otravné reklamy, které akorát přetěžují mobilní zařízení.

Závěrem... 

Na závěr bych jen dodal, že blokování skrze RPi není zcela stoprocentní a je potřeba s tím počítat. Weby totiž generují reklamu dynamicky a je obtížné obsáhnout všechny weby zaměřené na reklamu a proto čas od času reklama prosákne. Je to evidentní u YouTube, který buď nepřehraje reklamu žádnou nebo propustí úvodní a koncovou reklamu. Ostatní reklamy během přehrávání videa ale zobrazeny nejsou, i když v časové lince jsou jasně vytyčené časy, ve které bude reklama zobrazena.

Vše už je pouze na vás, jaký list na blokování reklamy vyberete a s trochou experimentování lze reklamu zcela zablokovat. Tak hurá do toho, Raspberry Pi lze zakoupit za pár stovek a když vás přestane Pi-Hole bavit, vždy jde tato destička využít jinak. Tak směle do toho. 

 A jelikož je Pi Zero maličké, lze jej umístit prakticky kamkoliv, kde je zásuvka a dosah k bezdrátové síti. V mém případě je Raspberry uschováno hluboko za televizí ztrácející-se ve změti ostatních krabiček. Popravdě, musel jsem vzpomínat, kde jsem Pi-Hole vlastně uschoval. 

Jiří "Kjutl" Kutlák

Proč nevytěžit z ničeho maximum aneb i odpad lze používat produktivně a neprodělečně!

více článků, blogů a informací o autorovi

Diskuse ke článku STAVÍME: Raspberry Pi Zero v roli blokátora reklamy

Středa, 9 Říjen 2019 - 16:41 | Fotobob | Musím pochválit smysluplný článek autora. Osobně...
Středa, 9 Říjen 2019 - 13:37 | Sinuhet | Chápu vaše rozladění, ale pokud stáhnu image z...
Úterý, 8 Říjen 2019 - 22:36 | vojtechjakl | Zdravím, nevíte jaký to má dopad na odezvu a...
Úterý, 8 Říjen 2019 - 15:14 | IT Joker | Vždyť to tam píše.
Úterý, 8 Říjen 2019 - 15:09 | IT Joker | Nestačí nastavení, kdy pro celou síť (kromě Pi-...
Úterý, 8 Říjen 2019 - 10:40 | chatumbabub | ale jak je to spravne nenapisete..
Úterý, 8 Říjen 2019 - 10:02 | Ashus | Ne, ale stejně tak telefony věčně nezůstávají v...
Úterý, 8 Říjen 2019 - 09:31 | Jack FX | Funguje Adaway bez roota? Výhoda pihole je, že...
Úterý, 8 Říjen 2019 - 09:05 | disposable | Ak je OS iba kernel+busybox, tak tam iná možnosť...
Úterý, 8 Říjen 2019 - 08:52 | disposable | Zježili sa mi chlpy na krku keď som to čítal....

Zobrazit diskusi