GNU/Linux >> Linux Esercitazione >  >> Linux

Pi-Hole - Il triangolo DNS

Internet moderno è un posto abbastanza fastidioso. Molto spesso, attività innocenti come leggere testi o guardare video vengono interrotte da messaggi promozionali meglio conosciuti come annunci. Questo non sarebbe un problema se gli annunci fossero pertinenti, tempestivi o non invadenti, ma nonostante i molti "progressi" nell'intelligenza artificiale, nell'apprendimento profondo e altre parole d'ordine, non sono nessuno di questi. Quindi, abbiamo la privacy e quant'altro.

La battaglia tra ad giver e ad blocker infuria. Sta anche lentamente aumentando, poiché sempre più persone si stanno rivoltando contro il modello pubblicitario aggressivo in faccia. Per la maggior parte, se utilizzi un'estensione di blocco degli annunci nel tuo browser, sei pronto. Ma poi, sei alla mercé della società di browser e di ciò che consentono, inoltre questo non funziona sempre in tutti i browser e/o sistemi operativi. La soluzione è completare le richieste di blocco della rete agli ad server, e questo è ciò che fa Pi-Hole. Esaminiamo.

Per iniziare

Pi-Hole è un buco nero per gli inserzionisti di Internet. È un insieme di strumenti software che bloccherà le richieste DNS ai domini identificati per essere pubblicati in modo che le tue sessioni di navigazione, o qualsiasi attività connessa a Internet, non includa mai pubblicità. Questa è una soluzione a livello di rete e, in quanto tale, dovrebbe funzionare per tutti gli scenari. I vantaggi, oltre alla riduzione del rumore, includono anche un volume di traffico ridotto, una migliore privacy e quant'altro.

Questo mi ha incuriosito e ho deciso di configurare Pi-Hole. Ora, in generale, Pi-Hole è progettato per essere utilizzato come apparecchio. Come suggerisce il nome, potresti voler utilizzare un dispositivo Raspberry Pi economico, installare Pi-Hole su di esso e quindi usarlo come filtro di rete. Qui sta il problema numero uno:è necessaria una certa comprensione della rete per poter configurare correttamente Pi-Hole. Nel complesso, una soluzione Pi-Hole completa copre:

  • Configurazione di un dispositivo che eseguirà il software Pi-Hole:questo può essere un sistema dedicato sulla tua rete, oppure puoi configurare Pi-hole su qualsiasi macchina che esegue Linux. Ad esempio, se hai un paio di laptop o desktop Linux, ognuno potrebbe essere il proprio filtro di rete.
  • Il passaggio successivo consiste nel configurare Pi-Hole come server DNS - In sostanza, navighiamo utilizzando i nomi di dominio anziché gli indirizzi IP. Gli esseri umani trovano molto più facile ricordare qualcosa come dedoimedo.com o example.com piuttosto che una sequenza di numeri come 1.2.3.4 o simili. Questo viene fatto tramite il servizio di risoluzione DNS (Domain Name System), che esegue la traduzione da nomi leggibili dall'uomo in numeri. Pi-Hole può applicare le sue regole di filtraggio a questo punto:se identifica una richiesta a un indirizzo che ritiene appartenga a uno degli inserzionisti Internet, può quindi eliminare questa richiesta e quindi tale contenuto non verrà mai servito. Naturalmente, questo può includere anche falsi positivi.
  • L'ultimo passaggio consiste nel configurare altri sistemi per utilizzare Pi-Hole come server DNS - Anche in questo caso, ciò richiede una certa conoscenza delle reti. Ma questo in realtà si applica a qualsiasi sistema operativo. Sebbene l'appliance Pi-Hole debba essere Linux, qualsiasi macchina può modificare la sua configurazione DNS per utilizzare l'appliance e, da quel momento in poi, Pi-Hole sarà l'intermediario, filtrando le richieste di rete.

Quindi è necessario ricordare che tutto quanto sopra richiede esperienza. Non puoi semplicemente collegare e riprodurre casualmente una soluzione di questa natura nella tua configurazione. Ma se hai un amico nerd, potrebbe essere in grado di farlo per te. Quanto sia semplice o complicato, beh, continuiamo.

Installazione guidata

Ho scaricato lo script e l'ho eseguito. Ottieni una procedura guidata basata su testo che è relativamente semplice da seguire. L'ho eseguito su KDE neon e ha installato solo software dai repository di sistema, a parte i suoi componenti, che provengono da GitHub.

Devi dire a Pi-Hole quale DNS usare. Ad esempio, puoi utilizzare il tuo router, che è in genere quello che utilizzeranno i sistemi Linux, qualcosa come 192.168.1.1 o 192.168.2.1 o simili. Le cose sono un po' più difficili da capire con systemd in atto ora, ma ci arriveremo. Hai anche la possibilità di utilizzare alcuni dei DNS Internet esistenti (come Google o CloudFlare). Ho deciso di iniziare con la mia configurazione personalizzata.

Come qualsiasi adblocker, Pi-Hole utilizza gli elenchi per bloccare gli annunci. Questo è l'anello più forte e più debole della soluzione, perché se gli elenchi non sono aggiornati, sono imprecisi o realizzati male, potresti avere lacune o falsi positivi, in cui i domini legittimi vengono rifiutati. Ma del resto, questo non è diverso dal blocco degli annunci tramite le estensioni del browser, tranne per il fatto che è un po' più completo, quindi aggressivo. La maggior parte delle estensioni del browser applica regole solo a domini di terze parti, quindi le possibilità che il dominio previsto non si comporti è relativamente basso. Pi-Hole è pensato per essere infallibile e ciò significa che potrebbe impedire il caricamento di siti legittimi.

L'interfaccia utente Web sembra una bella cosa. L'avevo configurato.

E questo è tutto. Presumibilmente, Pi-Hole è stato installato e configurato e potrei usarlo ora.

Ha funzionato?

No. Non avevo connettività Internet:errore nella risoluzione dei nomi. Il mio sistema locale - neon - utilizzava se stesso come DNS (o meglio il Pi-Hole installato, che utilizzava il router), ma sembrava che Pi-Hole non fornisse il suo servizio di risoluzione.

Il problema a questo punto è che non puoi andare online perché non hai Internet, quindi se vuoi cercare le risposte, hai bisogno di un'altra macchina. Ho provato a disinstallare Pi-Hole e questa è stata una soluzione semplice e pulita e la connettività è stata immediatamente ripristinata. L'ho installato di nuovo e ho ottenuto gli stessi risultati.

Ho deciso di provare alcuni controlli da riga di comando. Pi-Hole viene fornito con diversi comandi che ti consentono di abilitarlo, disabilitarlo, avviare il servizio di risoluzione dei nomi, controllare lo stato e simili. Si scopre che stavo avendo un problema con qualcosa chiamato pihole-FTL. Bene, va bene.

pihole enable
[i] Abilitazione blocco
[✗] pihole-FTL:nessun processo trovato
[✓] Pi-hole abilitato

Ho provato a eseguire pihole-FTL, ma non si avviava. Bene, a quanto pare, avevo bisogno di sudo. Guardando la documentazione in linea, gli errori di installazione non sono ben documentati. Quindi sembrerebbe che io abbia superato il mio primo ostacolo nella configurazione.

pihole-FTL
FATAL:Apertura del registro FTL (/var/log/pihole-FTL.log) fallita!
Assicurati che esista e sia scrivibile dall'utente neon

sudo pihole-FTL
FTL iniziato!

Ma non avevo ancora Internet. Ho pensato che il servizio DNS fosse ancora inattivo, quindi ho provato a riavviarlo.

pihole restartdns
[✗] Impossibile avviare pihole-FTL.service:unità pihole-FTL.service non trovata.

Dall'errore, ho pensato che non ci fosse alcun file di unità per avviare il servizio FTL o che fosse bloccato. Cercando online, ho appreso che il file di servizio doveva essere modificato. Vale a dire, in /etc/init.d/pihole-FTL, ho dovuto modificare una riga che invoca FTL da:

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

Solo a questa riga:

/usr/bin/pihole-FTL

Successivamente, Pi-Hole è stato avviato senza errori.

sudo pihole restartdns
[✓] Avvio del servizio DNS

Pi-Hole non bloccava gli annunci

Avevo la connettività, ma c'erano gli annunci. Pi-Hole non stava eseguendo alcun filtraggio. Quindi ho deciso di accedere all'interfaccia utente Web e vedere se potevo apportare modifiche e ritocchi lì. Ma quando ho provato ad andare all'indirizzo Pi-Hole, non c'era alcun server Web in ascolto. http://indirizzo-ip/admin e http://pi-hole/admin non hanno fatto nulla.

Ho eseguito altri test sulla riga di comando e, a quanto pare, il servizio lighttpd non era in esecuzione, il che spiegherebbe perché non avevo l'interfaccia utente Web. Quindi era tempo di fare un po' più di magia e, ancora una volta, la documentazione era un po' scarsa su questo argomento. Ho riscontrato più errori:

sudo systemctl restart lighttpd.service
Job per lighttpd.service non riuscito perché il processo di controllo è terminato con un codice di errore. Per i dettagli, vedere "systemctl status lighttpd.service" e "journalctl -xe".

Questa volta, però, poiché avevo Internet, ho potuto cercare online e presto ho scoperto il motivo del problema. Il thread seguente mi ha portato alla risposta giusta, sebbene non ci sia NIENTE nei registri degli errori che indicherebbe la soluzione. E qui, vorrei sottolineare, ancora una volta, l'indecifrabile complessità di systemd. Ho dovuto cercare informazioni in un registro binario e anche allora le informazioni erano inutili.

In realtà mi mancava un pacchetto - gamin - perché non è installato subito come dipendenza, non ne ho idea. Ma una volta che l'ho installato, lighttpd è iniziato bene e l'interfaccia utente Web era lì per me da esplorare.

sudo apt-get install gamin

systemctl status lighttpd.service
● lighttpd.service - Daemon Lighttpd
Caricato:caricato (/lib/systemd/system/lighttpd.service; abilitato; preimpostazione del fornitore:abilitato)
Attivo:attivo ( in esecuzione) da Thu 2019-05-09 15:34:03 CEST; 2s fa
Processo:19060 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
PID principale:19069 (lighttpd )
Compiti:6 (limite: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

Accesso e password dell'interfaccia utente Web

Ma non avevo ancora gli annunci bloccati. Quindi ho provato ad accedere e mi sono reso conto di avere un altro problema:non potevo accedere alla pagina di amministrazione in cui potevo effettivamente controllare tutti i registri e i dettagli e apportare modifiche. Ancora una volta, cercando online, ho scoperto che dovevo reimpostare la password predefinita dalla riga di comando:

pihole -a -p

Ho quindi avuto accesso alle impostazioni dell'interfaccia utente Web. È un'interfaccia davvero bella e potente. Hai molte opzioni, inclusa la possibilità di interrompere temporaneamente Pi-Hole, quindi se riscontri problemi, invece di cambiare tutto, puoi solo mettere in pausa il filtro. Non c'è bisogno di giocare con le impostazioni DNS.

Popolare le liste bloccate

E passando attraverso l'interfaccia, mi sono reso conto che le mie liste di blocco erano tutte vuote. Sì, questo è evidente dalla pagina principale, ma devi sapere cosa stai cercando. Perché Pi-Hole non dovrebbe chiederti di aggiornare gli elenchi o effettivamente farlo come parte dell'installazione? Ho eseguito un aggiornamento manuale dalla riga di comando e gli elenchi sono stati generati.

pihole -g -f

Va bene, ha funzionato?

Sì, ora, finalmente funzionava! Pi-Hole ora stava facendo il suo dovere DNS e stava anche filtrando il traffico. Devo dire che è stato efficace e non invadente. E se non sbaglio, c'è stato anche un leggero aumento delle prestazioni lato rete, poiché il sistema doveva gestire meno query e offrire meno contenuti. In effetti, anche con una navigazione innocente, il 20% di tutte le query è stato bloccato. Sembra molto. Ma mette anche in evidenza la situazione attuale di Internet moderna. Il fatto che ci siano oltre 100.000 domini nella blocklist racconta anche la sua parte di questa triste storia. Spiega anche il leggero miglioramento della latenza.

Conclusione

Alla fine della giornata, avevo Pi-hole in esecuzione, ma l'installazione era tutt'altro che banale. C'erano quattro o cinque problemi cardinali e nessuno di questi avrebbe dovuto verificarsi, perché la procedura guidata di installazione avrebbe potuto eseguire controlli separati per assicurarsi che le cose funzionassero. Parte della prima esecuzione potrebbe essere il controllo del servizio e, se ci sono problemi, una sorta di autodiagnosi per assicurarsi che FTL sia attivo e funzionante. Lo stesso vale per il servizio Web. Quindi, c'è la reimpostazione della password e l'aggiornamento dell'elenco. Tutto ciò renderebbe l'esperienza molto più snella.

Come prodotto, Pi-Hole è uno strumento molto bello e potente. Fa il suo lavoro molto bene, è veloce, efficace e robusto e l'interfaccia utente Web è ben progettata. Ne guadagni anche un po' dal lato del traffico, poiché ci sono meno contenuti che devono essere serviti e meno query da risolvere, quindi un miglioramento delle prestazioni per le cose che contano. La configurazione non è banale ma è realizzabile e hai molta flessibilità nel modo in cui cabli la tua rete. Potresti avere Pi-Hole come sistema autonomo o potrebbe servire tutti i diversi dispositivi della tua casa. Tutto sommato, questa è l'arma del giorno del giudizio per se e quando Internet si trasforma in canaglia su di te. Vale la pena provare, ma ricorda la seconda regola della termodinamica. Non puoi avere banalità e complessità allo stesso tempo.


Linux
  1. Un'introduzione all'editor vi

  2. Come installare il resolver DNS Unbound su Ubuntu 22.04

  3. Avvia su Rackspace Cloud

  4. Quali sono i tipi di server DNS

  5. Qual è l'utilità della riga di comando del DNS inverso?

EasyOS 2.3 - Il moderno Prometeo Tux

Cockpit - Autostrada per la zona amministrativa

E la migliore distribuzione del 2019 è...

CentOS 8 Stream - la distribuzione streampunk

Recensione Cairo Dock - Il dock è nel dettaglio

Backup della home directory - La guida rapida e sporca