Fai da te

Come utilizzare Raspberry Pi come router e filtro dei contenuti

Come utilizzare Raspberry Pi come router e filtro dei contenuti

Se hai bambini a casa, potresti aver sentito il bisogno di bloccare alcuni siti Web indesiderati. Un'altra area problematica comune sono i siti web di social media: potresti sentire che i bambini (e gli adulti) perdono troppo tempo su Facebook, Twitter ecc. E vogliono bloccarli, o almeno renderli accessibili solo in determinati momenti della giornata.

Per renderlo possibile, abbiamo bisogno di un file router più filtro dei contenuti - un dispositivo attraverso il quale tutti i nostri dispositivi come laptop, smartphone e tablet si connettono a Internet. Questo dispositivo intercetta anche i siti Web a cui questi dispositivi accedono e li blocca se tentano di accedere a un sito Web nella lista nera.

Sul mercato sono disponibili filtri di contenuto commerciali pronti per l'uso, ma per noi tipi fai-da-te non c'è divertimento in questo. Quindi, ci sporcheremo le mani e imposteremo un Raspberry Pi per il lavoro. Abbiamo scelto il Raspberry Pi per questo progetto a causa delle sue dimensioni ridotte e del consumo energetico trascurabile. tuttavia, queste istruzioni funzioneranno quasi senza modifiche con quasi tutti i computer che eseguono Debian Linux o un derivato (Ubuntu, Mint ecc.).

Disclaimer: Questa guida presuppone un livello intermedio di esperienza con Linux e la volontà di risolvere i problemi se e quando si presentano. Una precedente esperienza con righe di comando e firewall è un vantaggio.

Come funziona

Hardware

Useremo il Raspberry Pi 3 come filtro per il contenuto del router. Per questo, avremo bisogno due interfacce di rete su di esso - uno per connettersi a Internet e l'altro per fungere da hotspot WiFi a cui gli altri dispositivi possono connettersi. Il Raspberry Pi 3 ha un jack Ethernet integrato e un modulo WiFi. Quindi, in questo scenario, possiamo utilizzare un cavo Ethernet (eth0) per connettersi a Internet, mentre il modulo WiFi (wlan0) fungerà da hotspot.

Ovviamente, la connessione a Internet tramite Ethernet non è sempre possibile. In questo caso, avrai bisogno di un dongle WiFi USB compatibile (wlan1) per connettersi a Internet, mentre il modulo WiFi integrato (wlan0) fungerà da hotspot. Questa è la configurazione che useremo in questa guida.

Tieni presente che mentre un Raspberry Pi 3 è per lo più adeguato per una configurazione domestica con alcuni laptop e smartphone, non fornirà le prestazioni necessarie per la configurazione di un grande ufficio. Cerca hardware più capace se molti client si connetteranno al tuo filtro dei contenuti.

Software

Useremo l'eccellente E2guardian per intercettare e filtrare le nostre richieste web. Poiché il filtraggio dei contenuti può avere un impatto sulle prestazioni (a seconda delle dimensioni della blocklist), utilizzeremo la cache Squid per compensare questo calo di prestazioni.

Prerequisiti

1. Raspberry Pi 3 con l'ultima versione del sistema operativo Raspbian installato e accesso a Internet. Se stai solo iniziando con Raspberry Pi, ti consigliamo di leggere la nostra guida su come iniziare con Raspberry Pi 3.

2. [Opzionale] Dongle WiFi USB - Questo è necessario se e solo se non riesci a connettere il tuo Raspberry Pi 3 a Internet con un cavo Ethernet. Se hai intenzione di utilizzare il WiFi sia per la connessione a Internet che come hotspot, questo è necessario.

3. Accesso fisico al Raspberry Pi - A causa della natura di questo articolo, un singolo errore nella configurazione del firewall può bloccarti fuori dal tuo Pi se lo usi in modalità headless. Pertanto, si consiglia di collegare un monitor, una tastiera e un mouse durante la configurazione fino a quando tutto è impostato.

Usa Raspberry Pi come router

1. Collega il tuo Pi a Internet tramite Ethernet (eth0). Se stai usando un dongle WiFi USB (probabilmente wlan1), invece, collegalo a Internet. Lascia il modulo WiFi integrato (wlan0) come è per ora.

2. Ottenere il software prerequisito di cui abbiamo bisogno:

sudo apt install iptables iptables-persistent hostapd dnsmasq squid3

3. Ci sistemeremo hostapd in modo che il nostro Pi può fungere da hotspot WiFi. Per questo, crea un file di configurazione usando il tuo editor di testo preferito, ad esempio sudo nano /etc/hostapd/hostapd.conf, e incolla il contenuto dalla nostra pagina GitHub.

Alcune linee che potresti voler modificare in base ai tuoi gusti sono:

ssid = RaspberryPiAP

Questa riga determina quale sarà il nome del punto di accesso. Ho scelto RaspberryPiAP.

wpa_passphrase = beebom.com

Specifica la passphrase utilizzata per accedere all'hotspot. ero solito beebom.com, ma si consiglia di cambiarla con una passphrase forte di tua scelta.

4. Successivamente, lo faremo configurare un server DHCP utilizzando dnsmasq. Modifica il file di configurazione /etc/dnsmasq.conf, e aggiungi le seguenti righe alla fine:

[codice sorgente] interfaccia = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20,192.168.8.254,255.255.255.0,12h [/ sourcecode]

Questo attiva l'interfaccia wlan0 (il modulo WiFi integrato) distribuisce gli indirizzi IP ai client nel file 192.168.8.20 per 192.168.8.254 gamma.

5. Impostare un indirizzo IP statico per il modulo WiFi integrato wlan0. Apri il file / etc / network / interfaces. Probabilmente assomiglia a questo (enfasi mia):

[codice sorgente] directory-sorgente /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manuale

allow-hotplug wlan0
iface wlan0 inet manuale
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manuale
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Qui, individuare le linee in grassetto con wlan0, e cambiali, in modo che il file sia simile al seguente:

[codice sorgente] directory-sorgente /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manuale

allow-hotplug wlan0
iface wlan0 inet statico
hostapd /etc/hostapd/hostapd.conf
indirizzo 192.168.8.1
maschera di rete 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manuale
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Questo imposta un indirizzo IP statico 192.168.8.1 su wlan0. Ricorda questo indirizzo, come questo è l'indirizzo che useremo per comunicare in seguito con il nostro Raspberry Pi.

6. Adesso configurare l'inoltro IP. Modifica il file /etc/sysctl.conf, e aggiungi la seguente riga:

net.ipv4.ip_forward = 1

7. Adesso lo faremo configurare la traduzione dell'indirizzo di rete (NAT) nel nostro firewall. Per fare ciò, inserisci i seguenti 2 comandi:

sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4

Il primo comando imposta NAT, mentre il secondo comando salva la nostra attuale configurazione del firewall in un file chiamato /etc/iptables/rules.v4. Ciò garantisce che la configurazione persista durante i riavvii.

8. A questo punto, riavvia il tuo Raspberry Pi. Questo per assicurarci che tutte le modifiche apportate ai file di configurazione siano funzionali.

9. Dopo il riavvio, dovresti essere in grado di vedere il file RaspberryPiAP hotspot (a meno che tu non abbia cambiato il nome nel passaggio 3) su altri dispositivi come laptop e smartphone. Puoi connetterti ad esso usando la password che hai specificato e accedere a Internet.

Questo è tutto ciò che devi fare se hai bisogno di un router di base a bassa potenza. Se vuoi impostare anche un filtro dei contenuti, continua a leggere.

Configurare il filtro dei contenuti utilizzando E2guardian

E2guardian non è presente nei repository Raspbian predefiniti. Per installarlo, vai alla pagina Github del progetto e scarica il file che termina con armhf.deb. Ora apri Terminal, vai al tuo Download cartella (o dove hai scelto di scaricare il file) e installalo:

cd ~ / Download sudo dpkg -i ./e2guardian_*_jessie_armhf.deb

Probabilmente vedrai alcuni errori sui pacchetti mancanti quando installi E2guardian. Per correggere questo problema, lascia che l'installazione finisca e inserisci il seguente comando:

sudo apt-get install -f

Utilizzo degli elenchi di contenuti

Ci sono diversi elenchi presenti nel file / etc / e2guardian / lists directory. Questi file includono bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist e altro. Questi file sono adeguatamente documentati con commenti. Dai un'occhiata a loro per familiarizzare.

Ad esempio, supponiamo che lo desideri bloccare alcuni popolari social network. Apri il / etc / e2guardian / lists / bannedsitelist file e sotto il Coperta SSL / CONNECT block (poiché questi siti Web utilizzano https invece di semplice http), aggiungi le seguenti righe:

facebook.com twitter.com reddit.com

Ora ricarica il servizio E2guardian usando il comando sudo service e2guardian reload (dovrai eseguire questo comando ogni volta che modifichi i file di configurazione). Tutti i client che utilizzano il filtro dei contenuti non saranno ora in grado di accedere a questi siti web. Anche i siti mobile (es. M.twitter.com) e le app dedicate per smartphone non funzioneranno.

E2guardian anche blocca il porno per impostazione predefinita. Se desideri consentirlo (ehi, non stiamo giudicando), apri il file / etc / e2guardian / lists / bannedphraselist file e individuare la riga seguente:

.Includere

Commentalo aggiungendo un file hash (# simbolo) in primo piano, in modo che assomigli a questo:

#.Includere

Di nuovo, ricarica la configurazione con sudo service e2guardian reload, e hai finito.

Configurazione dei client

Ora che il nostro server proxy è impostato, possiamo passare alla configurazione dei client. Per utilizzare il filtro dei contenuti, tutti i client devono essere collegati all'hotspot di Rapberry Pi e configurati per utilizzare il proxy. La configurazione di un proxy è diversa in tutti i sistemi operativi e i dispositivi. Tuttavia, dimostreremo come configurarlo su Windows e Android, poiché questi sono più popolari.

finestre

Vai a Pannello di controllo> Rete e Internet> Opzioni Internet. Nella finestra che si apre, vai al file Connessioni scheda e fare clic su Impostazioni LAN.

Qui fare clic su Avanzate, ed entra 192.168.8.1 come indirizzo proxy e 8080 come il porto. Assicurati che il file Utilizza lo stesso server proxy per tutti i protocolli la casella è selezionata. Clic ok.

Questo è tutto ciò che devi fare. I browser Web più popolari come Google Chrome e Firefox rileveranno automaticamente le impostazioni del proxy di sistema.

Android

Vai a Impostazioni di sistema> WiFi. Ora tocca e tieni premuto l'hotspot Raspberry Pi e seleziona Modifica rete. Sotto Opzioni avanzate, impostare il Proxy opzione per Manuale. Adesso, sotto Nome host proxy, inserisci l'indirizzo IP del Pi 192.168.8.1. Sotto Porta proxy, accedere 8080, e tocca Salva.

È ora possibile testare la configurazione del proxy. Prova ad andare su un sito web nella tua lista nera: vedrai una pagina "Accesso negato" come questa:

Applicazione dell'utilizzo del proxy

Finora, ci affidiamo a client che si comportano bene e utilizzano Internet attraverso il filtro dei contenuti. Naturalmente, questo accade raramente nel mondo reale. Quindi, per imporre a tutti i client di passare attraverso il proxy, eseguire i seguenti comandi:

sudo iptables -A PREROUTING -t nat -p tcp --destination-port 80 -j REDIRECT --to-ports 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 443 -j REDIRECT --to- porte 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4

Questo reindirizzerà automaticamente tutto http (porta 80) e https (porta 443) traffico sull'hotspot del raspberry Pi al proxy del filtro dei contenuti. Ora, senza configurare le impostazioni proxy sui tuoi dispositivi, non saranno in grado di accedere in modo sicuro https siti Web come Facebook, Gmail, Twitter, ecc. Questo assicura che chiunque desideri connettersi al tuo hotspot Pi debba passare attraverso il proxy.

Questo è tutto ciò che devi sapere per l'utilizzo di base del filtro dei contenuti. Se desideri apprendere alcune funzionalità avanzate, continua a leggere.

Scenari di utilizzo avanzati

Impostazione di un filtro basato sul tempo

Supponiamo che tu voglia bloccare i siti web che abbiamo menzionato nel file Utilizzo degli elenchi di contenuti sezione sopra, ma solo in determinati momenti della giornata. Personalmente preferisco bloccare Reddit, Facebook e Twitter durante l'orario di lavoro (9:00 - 17:00) nei giorni feriali perché sono un incubo per la produttività.

Apri il / etc / e2guardian / lists / bannedsitelist file e aggiungi la seguente riga:

tempo: 9 0 17 0 01234

Questa linea funziona come segue: il timer inizia alle 9 (9 del mattino) 0 (00 minuti), fino a 17 (17:00 in formato 24 ore) 0 (00 minuti), da 0 (Lunedì) a 4 (Venerdì).

Facciamo un altro esempio:

tempo: 10 30 20 45024

Ciò bloccherà i siti configurati dalle 10:30 (10 30) alle 20:45 (20 45) lunedì (0), mercoledì (2) e venerdì (4).

Consentire a determinati indirizzi IP di ignorare il proxy

È possibile consentire a determinati indirizzi IP di bypassare il filtro dei contenuti. Questo può essere impostato da configurazione del firewall. Potresti aver notato che nel nostro dnsmasq.conf, impostiamo solo l'hotspot da cui assegnare indirizzi IP 192.168.8.20 per 192.168.8.254 ai clienti. Ciò significa indirizzi da 192.168.8.2 per 192.168.8.19 non verrà assegnato automaticamente a nessun client (non possiamo utilizzare 192.168.8.1 perché questo è ciò che utilizza il nostro Raspberry Pi stesso).

Per fare questo, prima impostare un IP statico sul dispositivo a cui si desidera concedere l'accesso completo. Ad esempio, per impostare un IP statico di 192.168.8.2 su una macchina Windows, utilizza queste impostazioni:

Ora, sul tuo Raspberry Pi, esegui i seguenti comandi.

sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j RETURN sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j RETURN

Adesso, disabilita l'utilizzo del proxy sul tuo dispositivo, e prova ad aprire un sito web vietato. Dovresti essere in grado di aprirlo. Se ci sono più indirizzi IP che desideri aggiungere alla whitelist, esegui di nuovo i due comandi precedenti, ma sostituisci l'indirizzo IP con quello che desideri. Una volta che sei soddisfatto della whitelist, esegui il seguente comando per salvare la configurazione del firewall:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Una cosa importante da tenere a mente è che non dovresti far conoscere a nessuno gli indirizzi IP autorizzati. Altrimenti, possono semplicemente impostare il proprio dispositivo su quell'indirizzo IP per bypassare il proxy.

Problemi di sicurezza

Poiché il tuo Raspberry Pi sarà il punto di ingresso e di uscita per tutte le tue comunicazioni, è importante proteggerlo. Ecco alcuni suggerimenti su come migliorare la sicurezza. Tieni presente che questi sono solo suggerimenti di base e non un elenco completo di insidie ​​per la sicurezza. La quantità di sicurezza dipenderà dalla natura della tua rete (casa, piccolo ufficio ecc.) E da quanto sono dispettosi gli utenti.

Disabilita i servizi non necessari

Poiché si tratta di un router, è meglio eseguire solo i servizi di cui abbiamo bisogno. Più servizi in esecuzione significano più vulnerabilità che possono essere potenzialmente sfruttate. Decisamente non utilizzare questo sistema come un normale desktop.

Vai a Menu> Preferenze> Configurazione Raspberry Pi. Nel Interfacce scheda, disabilita tutti i servizi che non ti servono.

Modifica la password predefinita

Una nuova installazione di Raspbian viene fornita con la password predefinita "raspberry" per l'utente predefinito "pi". Si consiglia di cambiarlo con una password più sicura. Per cambiarlo, apri un terminale esegui questo comando:

passwd

Rimuovere il monitor e altre periferiche

Poiché tutto ciò che verrà eseguito su questo Pi è il software necessario per utilizzarlo come router e filtro web, non abbiamo bisogno di un monitor o di altre periferiche come un mouse e una tastiera collegati ad esso. Se è necessario modificare le impostazioni e simili, è sempre possibile utilizzare SSH o collegare un monitor e una tastiera secondo necessità.

Disattiva l'accesso automatico

Raspbian è configurato per accedere automaticamente con le credenziali utente "pi" senza richiedere la password. Questo potrebbe essere ok per un desktop familiare generico, ma pericoloso per un router. Per disabilitarlo, sul desktop Raspbian, vai a Menu> Preferenze> Configurazione Raspberry Pi. Nel Sistema scheda, davanti al file Login automatico intestazione, deseleziona il Accedi come utente "pi" casella di controllo.

Nella stessa finestra di dialogo è anche consigliabile impostare il file Stivale impostazione su Alla CLI. Ciò consentirà di risparmiare risorse poiché non abbiamo bisogno di una GUI su un router. Se desideri utilizzare il desktop per qualsiasi motivo, accedi con il tuo nome utente ed esegui il file startx comando per attivare l'interfaccia grafica.

Risoluzione di problemi comuni

Le interfacce continuano a essere rinominate

Questo è molto comune se stai usando due interfacce wireless sul tuo Pi. Se stai utilizzando Ethernet per connettere il tuo Pi a Internet, puoi tranquillamente ignorare questa sezione. Il problema è che entrambe le interfacce wireless (wlan0 e wlan1) a volte scambiano i nomi dopo un riavvio. Cioè, il modulo WiFi integrato wlan0 viene rinominato in wlan1, e viceversa. Questo è ovviamente un grosso problema poiché ci affidiamo al fatto che abbiano un nome coerente per i nostri file di configurazione. Ecco come renderlo coerente tra i riavvii:

1. Scopri il file Indirizzo MAC delle tue interfacce. Esegui il comando ifconfig | grep HWaddr sul tuo Raspberry Pi. Vedrai un output come il seguente:

Annotare il testo a destra della parola "HWaddr" nel file wlan0 e wlan1 sezione. Puoi tranquillamente ignorare il file eth0 sezione. Questi sono gli indirizzi MAC delle tue interfacce wireless.

Se non sei sicuro di quale indirizzo MAC appartenga a quale interfaccia, scollega semplicemente il dongle WiFi USB ed esegui nuovamente il comando. Il wlan L'interfaccia che viene visualizzata ora è la tua interfaccia WiFi integrata, mentre l'altra è USB.

2. Crea un nuovo file /etc/udev/rules.d/10-network.rules utilizzando il tuo editor di testo preferito. Per esempio :

sudo nano /etc/udev/rules.d/10-network.rules

3. Immettere il testo seguente in questo file. Sostituisci xx: xx: xx: xx ecc. Con l'indirizzo MAC appropriato:

[codice sorgente] # Imposta il modulo WiFi integrato come wlan0. Sostituisci xx: xx: xx ecc. Con
# indirizzo MAC del modulo integrato
SUBSYSTEM == "net", ACTION == "add", ATTR address == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"

# Configura il dongle WiFi USB come wlan1. Sostituisci yy: yy: yy ecc. Con
# Indirizzo MAC del dongle USB
SUBSYSTEM == "net", ACTION == "add", ATTR address == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ sourcecode]

Assicurati che l'indirizzo MAC dell'interfaccia WiFi integrata corrisponda a wlan0, e il WiFi USB su wlan1 poiché questa è la convenzione che stiamo seguendo in questa guida.

4. Riavvia il tuo Raspberry Pi. Le tue interfacce ora inizieranno con il nome corretto.

Ripristino della configurazione del firewall

Un altro problema comune è un firewall configurato male. A seconda della configurazione di rete, potrebbero essere necessari diversi tentativi prima di ottenere il firewall corretto. Se in qualsiasi momento pensi di aver incasinato la configurazione del firewall, esegui i seguenti comandi per ricominciare da zero:

sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain

Questo cancellerà tutti configurazione del firewall. È ora possibile iniziare a configurare il firewall da zero. Quando sei soddisfatto, esegui il comando sudo iptables-save | sudo tee /etc/iptables/rules.v4 per rendere permanente la configurazione.

VEDERE ANCHE: Come eseguire comandi su Raspberry Pi tramite e-mail

Usa il tuo Raspberry Pi come router e filtro dei contenuti

Questo è tutto per trasformare il tuo Raspberry Pi in un potente router più proxy per il filtro dei contenuti. Puoi ottenere i file di configurazione esatti che abbiamo utilizzato per la nostra configurazione sulla nostra pagina GitHub. Fateci sapere come funziona per voi. Se qualcosa non funziona come previsto o un passaggio sembra troppo confuso, sentiti libero di farci una domanda nella sezione commenti qui sotto.

7 buone maniere da considerare su Internet
Internet o semplicemente Rete (come la chiama la maggior parte della Gen Y) è una necessità di base di questi tempi. Non solo ti consente di rimanere...
I social media sono vita reale
Il mio primo editoriale ha ricevuto reazioni generalmente positive la scorsa settimana e, come ogni essere umano sensibile, volevo seguirlo con un deg...
Come impedire alle app di accedere a Internet su Mac
L'accesso a Internet è un servizio utilizzato da quasi tutte le app disponibili. Che si tratti di aggiornamenti automatici, sincronizzazione dei dati ...