GNU/Linux >> Znalost Linux >  >> Linux

Pi-Hole – DNS trojúhelník

Moderní internet je docela nepříjemné místo. Poměrně často jsou nevinné aktivity, jako je čtení textu nebo sledování videí, přerušovány propagačními zprávami, lépe známými jako reklamy. To by nebyl problém, kdyby byly reklamy relevantní, dobře načasované nebo nevtíravé, ale navzdory velkému „pokroku“ v oblasti umělé inteligence, hlubokého učení a dalších buzzwordů o nic takového nejde. Pak máme soukromí a co ještě.

Bitva mezi poskytovateli reklam a blokátory reklam zuří. Pomalu se to také stupňuje, protože stále více lidí se obrací proti agresivnímu modelu in-yer-face reklamy. Z velké části platí, že pokud v prohlížeči používáte rozšíření pro blokování reklam, máte hotovo. Ale pak jste vydáni na milost a nemilost společnosti zabývající se prohlížečem a tím, co povolují, navíc to ne vždy funguje v každém prohlížeči a/nebo operačním systému. Řešením je dokončit blokování síťových požadavků na reklamní servery, a to je to, co Pi-Hole dělá. Pojďme to zkontrolovat.

Začínáme

Pi-Hole je černá díra pro internetové inzerenty. Jedná se o sadu softwarových nástrojů, které budou blokovat požadavky DNS na domény identifikované jako reklamy, takže vaše relace procházení – nebo jakákoliv aktivita směřující k internetu – nikdy nezahrnují žádnou reklamu. Toto je řešení na úrovni sítě a jako takové by mělo fungovat pro všechny scénáře. Mezi výhody kromě snížení hluku patří také snížení objemu dopravy, lepší soukromí a podobně.

To mě zaujalo a rozhodl jsem se nastavit Pi-Hole. Nyní je Pi-Hole obecně navržen tak, aby byl použit jako spotřebič. Jak jeho název napovídá, možná budete chtít použít levné zařízení Raspberry Pi, nainstalovat na něj Pi-Hole a poté jej použít jako síťový filtr. V tom spočívá problém číslo jedna – potřebujete určité znalosti o sítích, abyste mohli správně nakonfigurovat Pi-Hole. Celkově kompletní řešení Pi-Hole pokrývá:

  • Nastavení zařízení, na kterém bude spuštěn software Pi-Hole – může to být vyhrazený systém ve vaší síti, nebo můžete Pi-hole nakonfigurovat na jakémkoli počítači se systémem Linux. Pokud máte například několik notebooků nebo stolních počítačů se systémem Linux, každý z nich může mít svůj vlastní síťový filtr.
  • Dalším krokem je konfigurace Pi-Hole jako serveru DNS – V podstatě prohlížíme pomocí názvů domén, nikoli IP adres. Pro lidi je mnohem snazší zapamatovat si něco jako dedoimedo.com nebo example.com než posloupnost čísel jako 1.2.3.4 nebo podobná. To se provádí prostřednictvím služby rozlišení DNS (Domain Name System), která provádí překlad z lidsky čitelných jmen na čísla. Pi-Hole může v tomto okamžiku použít svá pravidla filtrování – pokud identifikuje požadavek na adresu, o které se domnívá, že patří jednomu z internetových inzerentů, může tento požadavek zahodit, takže takový obsah nebude nikdy doručen. Samozřejmě to může zahrnovat i falešné poplachy.
  • Posledním krokem je nakonfigurovat ostatní systémy tak, aby používaly Pi-Hole jako svůj DNS server – opět to vyžaduje určité znalosti sítě. Ale to platí vlastně pro jakýkoli operační systém. Zatímco zařízení Pi-Hole musí být linuxové, u kteréhokoli počítače lze změnit konfiguraci DNS, aby zařízení mohlo používat, a od tohoto okamžiku bude Pi-Hole prostředníkem, který bude filtrovat síťové požadavky.

Musíte si tedy pamatovat, že vše výše uvedené vyžaduje odborné znalosti. Řešení tohoto druhu nemůžete jen tak náhodně plug 'n' play ve vašem nastavení. Ale pokud máte praštěného přítele, možná by to mohl udělat za vás. Pokud jde o to, jak jednoduché nebo složité to je, pojďme pokračovat.

Průvodce instalací

Stáhnul jsem si skript a spustil ho. Získáte textového průvodce, jehož sledování je poměrně jednoduché. Spustil jsem to na KDE neon a nainstalovalo to pouze software ze systémových úložišť, kromě vlastních komponent, které pocházejí z GitHubu.

Musíte Pi-Hole říct, jaké DNS má použít. Můžete například použít svůj vlastní router, což je obvykle to, co budou systémy Linux používat, něco jako 192.168.1.1 nebo 192.168.2.1 nebo podobně. Se zavedeným systemd je nyní věci trochu obtížnější pochopit, ale k tomu se dostaneme. Máte také možnost využít některé ze stávajících internetových DNS (jako Google nebo CloudFlare). Rozhodl jsem se začít s vlastním nastavením.

Jako každý blokátor reklam i Pi-Hole používá seznamy k blokování reklam. Toto je nejsilnější a nejslabší článek řešení, protože pokud seznamy nejsou aktuální, náhodou jsou nepřesné nebo špatně vytvořené, můžete mít mezery nebo falešně pozitivní, kdy jsou legitimní domény odmítnuty. Ale když na to přijde, neliší se to od blokování reklam prostřednictvím rozšíření prohlížeče, až na to, že je o něco důkladnější, a tedy agresivní. Většina rozšíření prohlížeče aplikuje pravidla pouze na domény třetích stran, takže šance, že se očekávaná doména nebude chovat, je relativně nízká. Pi-Hole má být spolehlivý, a to znamená, že může zabránit načítání legitimních stránek.

Webové uživatelské rozhraní zní jako příjemná věc. Měl jsem to nakonfigurované.

A to bylo vše. Pravděpodobně byl Pi-Hole nainstalován a nakonfigurován a mohl jsem jej nyní používat.

Fungovalo to?

Ani náhodou. Neměl jsem připojení k internetu - selhání v rozlišení jmen. Můj místní systém - neon - používal sám sebe jako svůj DNS (nebo spíše nainstalovaný Pi-Hole, který používal router), ale zdálo se, že Pi-Hole svou službu rozlišení neposkytuje.

Problém v tomto bodě je - nemůžete se připojit k internetu, protože nemáte internet, takže pokud chcete hledat odpovědi, potřebujete jiný počítač. Zkusil jsem odinstalovat Pi-Hole a toto bylo jednoduché a čisté řešení a připojení bylo okamžitě obnoveno. Znovu jsem jej nainstaloval a získal stejné výsledky.

Rozhodl jsem se zkusit nějaké kontroly příkazového řádku. Pi-Hole přichází s několika příkazy, které vám umožní povolit, zakázat, spustit službu překladu názvů, zkontrolovat stav a podobně. Ukázalo se, že jsem měl problém s něčím, co se nazývá pihole-FTL. No, dobře.

pihole enable
[i] Povolení blokování
[✗] pihole-FTL:nebyl nalezen žádný proces
[✓] Pi-hole povoleno

Zkoušel jsem spustit pihole-FTL, ale nešlo to spustit. No, jak se ukázalo, potřeboval jsem sudo. Při pohledu na online dokumentaci nejsou chyby nastavení tak dobře zdokumentovány. Zdá se tedy, že jsem překonal svou první překážku v konfiguraci.

pihole-FTL
FATAL:Otevření protokolu FTL (/var/log/pihole-FTL.log) se nezdařilo!
Ujistěte se, že existuje a je zapisovatelný uživatelem neon

sudo pihole-FTL
FTL zahájen!

Ale stejně jsem neměl internet. Myslel jsem, že služba DNS je stále mimo provoz, tak jsem ji zkusil restartovat.

pihole restartdns
[✗] Nepodařilo se spustit pihole-FTL.service:Jednotka pihole-FTL.service nenalezena.

Z chyby jsem usoudil, že neexistuje žádný soubor jednotky pro spuštění služby FTL, nebo byla přerušena. Při vyhledávání online jsem zjistil, že je třeba změnit soubor služby. Konkrétně v /etc/init.d/pihole-FTL jsem musel upravit řádek, který vyvolává FTL z:

su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER"

Pouze k tomuto řádku:

/usr/bin/pihole-FTL

Poté začal Pi-Hole bez chyb.

sudo pihole restartdns
[✓] Spouštění služby DNS

Pi-Hole neblokoval reklamy

Měl jsem připojení, ale reklamy tam byly. Pi-Hole neprováděl žádné filtrování. Rozhodl jsem se tedy vstoupit do webového uživatelského rozhraní a zjistit, zda tam mohu provést nějaké změny a doladění. Ale když jsem se pokusil přejít na adresu Pi-Hole, žádný webový server neposlouchal. http://ip-address/admin a http://pi-hole/admin nic neprovedly.

Provedl jsem další testování na příkazovém řádku, a jak se ukázalo, služba lighttpd neběžela, což by vysvětlovalo, proč jsem neměl webové uživatelské rozhraní. Bylo tedy načase udělat další kouzla a opět, dokumentace byla na toto téma trochu řídká. Narazil jsem na více chyb:

sudo systemctl restart lighttpd.service
Úloha pro lighttpd.service se nezdařila, protože řídicí proces skončil s kódem chyby. Podrobnosti viz "systemctl status lighttpd.service" a "journalctl -xe".

Tentokrát jsem však, protože jsem měl internet, mohl hledat online a brzy jsem zjistil důvod problému. Následující vlákno mě přivedlo ke správné odpovědi - ačkoliv v chybových protokolech není NIC, co by naznačovalo řešení. A zde bych chtěl ještě jednou poukázat na nerozluštitelnou složitost systemd. Musel jsem hledat informace v binárním protokolu a i tak byly informace k ničemu.

Vlastně mi chyběl balíček - gamin - proč se hned nenainstaluje jako závislost, netuším. Ale jakmile jsem to měl nainstalované, lighttpd se spustil v pořádku a bylo tu pro mě webové uživatelské rozhraní.

sudo apt-get install gamin

systemctl status lighttpd.service
● lighttpd.service - Lighttpd Daemon
Načteno:načteno (/lib/systemd/system/lighttpd.service; povoleno; přednastaveno dodavatelem:povoleno)
Aktivní:aktivní ( běží) od Čt 2019-05-09 15:34:03 CEST; před 2 s
Proces:19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
Hlavní PID:19069 (lighttpd )
Úkoly:6 (limit:4915)
CGroup:/system.slice/lighttpd.service
├─19069 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd .conf
├─19078 /usr/bin/php-cgi
├─19079 /usr/bin/php-cgi
├─19080 /usr/bin/php-cgi
├─19081 /usr/bin/php-cgi
└─19082 /usr/bin/php-cgi

Přihlašovací jméno a heslo webového uživatelského rozhraní

Ale stále jsem neměl žádné blokované reklamy. Zkusil jsem se tedy přihlásit a uvědomil jsem si, že mám další problém – nemohl jsem se dostat na stránku správce, kde bych mohl skutečně zkontrolovat všechny protokoly a podrobnosti a provést změny. Opět při hledání online jsem zjistil, že jsem musel resetovat výchozí heslo z příkazového řádku:

pihole -a -p

Poté jsem měl přístup k nastavení webového uživatelského rozhraní. Je to opravdu pěkné a výkonné rozhraní. Získáte spoustu možností, včetně možnosti dočasně zastavit Pi-Hole, takže pokud narazíte na problémy, místo změny všeho můžete filtrování pouze pozastavit. Není třeba si hrát s nastavením DNS.

Vyplňte seznamy blokovaných položek

A při procházení rozhraní jsem si uvědomil, že všechny mé seznamy blokovaných položek jsou prázdné. Ano, je to zřejmé z hlavní stránky, ale musíte vědět, co hledáte. Proč by vás Pi-Hole nevyzval k aktualizaci seznamů nebo to vlastně neudělal jako součást nastavení? Spustil jsem ruční aktualizaci z příkazového řádku a seznamy byly vygenerovány.

pihole -g -f

V pořádku, fungovalo to?

Ano, teď to konečně fungovalo! Pi-Hole nyní vykonával svou povinnost DNS a také filtroval provoz. Musím říct, že to bylo efektivní a nevtíravé. A pokud se nepletu, došlo dokonce k mírnému zvýšení výkonu na straně sítě, protože systém musel zpracovávat méně dotazů a obsluhovat méně obsahu. Dokonce i při nevinném procházení bylo zablokováno 20 % všech dotazů. To zní jako hodně. Ale také upozorňuje na současnou situaci moderního internetu. Svou část tohoto smutného příběhu vypovídá i skutečnost, že na seznamu blokovaných domén je více než 100 000 domén. Vysvětluje také jemné zlepšení latence.

Závěr

Na konci dne jsem měl Pi-hole spuštěný, ale nastavení nebylo ani zdaleka triviální. Vyskytly se čtyři nebo pět hlavních problémů a žádný z nich se neměl stát, protože průvodce instalací mohl projít samostatnými kontrolami, aby se ujistil, že věci fungují. Součástí prvního spuštění by mohla být servisní kontrola, a pokud se vyskytnou problémy, nějaký druh vlastní diagnostiky, aby se zajistilo, že FTL je v provozu. Totéž platí pro webovou službu. Pak je tu reset hesla a aktualizace seznamu. To vše by zážitek mnohem zjednodušilo.

Jako produkt je Pi-Hole velmi pěkný a výkonný nástroj. Svou práci plní velmi dobře, je rychlý, efektivní a robustní a webové uživatelské rozhraní je pěkně navržené. Získáte také nějaké na straně návštěvnosti, protože je potřeba obsluhovat méně obsahu a méně dotazů, které je třeba řešit, a tudíž zlepšení výkonu u věcí, na kterých záleží. Nastavení není triviální, ale je dosažitelné a máte velkou flexibilitu ve způsobu zapojení sítě. Můžete mít Pi-Hole jako samostatný systém, nebo by mohl sloužit všem různým zařízením ve vaší domácnosti. Celkově vzato, toto je zbraň soudného dne, pokud a kdy se proti vám internet otočí. Stojí za to vyzkoušet, ale nezapomeňte na druhé pravidlo termodynamiky. Nemůžete mít triviální a komplexní zároveň.


Linux
  1. Úvod do editoru vi

  2. Spusťte na Rackspace Cloud

  3. Co je nástroj příkazového řádku reverzního DNS?

  1. Rychlý úvod do souborového systému Linux pro uživatele Windows.

  2. Jak nainstalovat Unbound DNS resolver na Ubuntu 22.04

  3. Jaké jsou typy serverů DNS

  1. Jak vyprázdnit mezipaměť DNS na Ubuntu

  2. Slackware 15 - Stará brigáda

  3. Devuan Chimaera - Zpět do budoucnosti, vpřed do minulosti