Dacă aveți copii acasă, este posibil să fi simțit nevoia de a bloca anumite site-uri web nedorite. O altă zonă cu probleme comune sunt site-urile de socializare - s-ar putea să simțiți că copiii (și adulții) pierd prea mult timp pe Facebook, Twitter etc. și doresc să le blocheze sau cel puțin să le facă accesibile doar în anumite momente ale zilei.
Pentru a face acest lucru posibil, avem nevoie de un router la care se adauga filtru de conținut - un dispozitiv prin care toate dispozitivele noastre, cum ar fi laptopuri, smartphone-uri și tablete, se conectează la internet. Acest dispozitiv interceptează, de asemenea, site-urile web la care accesează aceste dispozitive și le blochează dacă încearcă să acceseze un site web pe lista neagră.
Există filtre de conținut comerciale, gata de utilizat disponibile pe piață, dar pentru noi tipurile de bricolaj, nu este deloc distractiv în asta. Astfel, ne vom murdări mâinile și vom configura un Raspberry Pi pentru serviciu. Am ales Raspberry Pi pentru acest proiect datorită dimensiunii sale mici și a consumului de energie neglijabil. in orice caz, aceste instrucțiuni vor funcționa aproape nemodificate cu aproape orice computer care rulează Debian Linux sau un derivat (Ubuntu, Mint etc.).
Declinare de responsabilitate: Acest ghid presupune un nivel intermediar de experiență cu Linux și dorința de a depana problemele dacă și când apar. Experiența anterioară cu liniile de comandă și firewall-urile este un bonus.
Cum functioneaza
Hardware
Vom folosi Raspberry Pi 3 ca filtru de conținut cu router. Pentru aceasta, vom avea nevoie două interfețe de rețea pe acesta - unul pentru a vă conecta la internet, iar celălalt pentru a acționa ca un hotspot WiFi pentru celelalte dispozitive la care să ne conectăm. Raspberry Pi 3 are un jack Ethernet încorporat și un modul WiFi. Deci, în acest scenariu, putem folosi un cablu Ethernet (eth0) pentru a vă conecta la internet, în timp ce modulul WiFi (wlan0) va acționa ca un hotspot.
Desigur, conectarea la internet folosind Ethernet nu este întotdeauna posibilă. În acest caz, veți avea nevoie de un dongle USB WiFi compatibil (wlan1) pentru a vă conecta la internet, în timp ce modulul WiFi încorporat (wlan0) va acționa ca un hotspot. Aceasta este configurația pe care o vom folosi în acest ghid.
Rețineți că, în timp ce un Raspberry Pi 3 este în mare parte adecvat pentru o configurare la domiciliu cu câteva laptopuri și smartphone-uri, nu va oferi performanța necesară pentru o configurație de birou mare. Căutați hardware mai capabil dacă mulți clienți se vor conecta la filtrul dvs. de conținut.
Software
Vom folosi excelentul E2guardian pentru a intercepta și filtra solicitările noastre web. Deoarece filtrarea conținutului poate avea un impact asupra performanței (în funcție de dimensiunea listei de blocuri), vom folosi cache-ul Squid pentru a compensa această lovitură de performanță.
Condiții prealabile
1. Raspberry Pi 3 cu cea mai recentă versiune a sistemului de operare Raspbian instalat și acces la internet. Dacă începeți doar cu Raspberry Pi, vă recomandăm să citiți ghidul nostru despre cum să începeți cu Raspberry Pi 3.
2. [Opțional] USB WiFi Dongle - Acest lucru este necesar dacă și numai dacă nu vă puteți conecta Raspberry Pi 3 la internet cu un cablu Ethernet. Dacă intenționați să utilizați WiFi atât pentru conectarea la internet, cât și ca hotspot, acest lucru este necesar.
3. Acces fizic la Raspberry Pi - Datorită naturii acestui articol, o singură greșeală în configurația firewall vă poate bloca din Pi dacă îl utilizați în modul fără cap. Prin urmare, este recomandat să conectați un monitor, tastatură și mouse în timp ce îl configurați până când totul este configurat.
Utilizați Raspberry Pi ca router
1. Conectați-vă Pi la internet utilizând Ethernet (eth0). Dacă utilizați un dongle USB WiFi (probabil wlan1) în schimb, conectați-l la internet. Părăsiți modulul WiFi încorporat (wlan0) așa cum este deocamdată.
2. Obține software prealabil că avem nevoie:
sudo apt install iptables iptables-hostapd persistent dnsmasq squid3
3. Ne vom înființa hostapd
astfel încât a noastră Pi poate acționa ca un hotspot WiFi. Pentru aceasta, creați un fișier de configurare folosind editorul de text preferat, de exemplu sudo nano /etc/hostapd/hostapd.conf
, și lipiți conținutul de pe pagina noastră GitHub.
Unele linii pe care ați putea dori să le modificați în funcție de gust sunt:
ssid = RaspberryPiAP
Această linie dictează care va fi numele punctului de acces. am ales RaspberryPiAP
.
wpa_passphrase = beebom.com
Aceasta specifică fraza de acces utilizată pentru a accesa hotspot-ul. obisnuiam beebom.com
, dar este recomandat să o schimbați într-o expresie de acces puternică la alegere.
4. În continuare, vom face configurați un server DHCP folosind dnsmasq
. Editați fișierul de configurare /etc/dnsmasq.conf
, și adăugați următoarele rânduri la final:
[sourcecode] interface = lo, wlan0
no-dhcp-interface = lo
intervalul dhcp = 192.168.8.20,192.168.8.254,255.255.255.0,12h [/ cod sursă]
Acest lucru face ca interfața să fie activată wlan0
(modulul WiFi încorporat) distribuie adresele IP clienților din 192.168.8.20 la 192.168.8.254 gamă.
5. Înființat o adresă IP statică pentru modulul WiFi încorporat wlan0
. Deschideți fișierul / etc / network / interfaces
. Arată probabil așa ceva (accentul meu):
[cod sursă] director-sursă /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Aici, localizați liniile cu litere aldine cu wlan0
, și schimbă-le, astfel încât fișierul să arate după cum urmează:
[cod sursă] director-sursă /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
adresa 192.168.8.1
netmask 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Aceasta setează o adresă IP statică 192.168.8.1
pe wlan0. Amintiți-vă această adresă, ca aceasta este adresa pe care o vom folosi pentru a comunica cu Raspberry Pi mai târziu.
6. Acum configurați redirecționarea IP. Editați fișierul /etc/sysctl.conf
, și adăugați următoarea linie:
net.ipv4.ip_forward = 1
7. Acum o vom face configurați traducerea adresei de rețea (NAT) în firewall-ul nostru. Pentru aceasta, introduceți următoarele 2 comenzi:
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
Prima comandă configurează NAT, în timp ce a doua comandă salvează configurația actuală a firewallului într-un fișier numit /etc/iptables/rules.v4
. Acest lucru vă asigură că configurația persistă la reporniri.
8. In acest punct, reporniți Raspberry Pi. Aceasta este pentru a ne asigura că toate modificările pe care le-am făcut în fișierele de configurare sunt funcționale.
9. După repornire, ar trebui să puteți vedea noul creat RaspberryPiAP
hotspot (cu excepția cazului în care ați schimbat numele la pasul 3) pe celelalte dispozitive, cum ar fi laptopuri și smartphone-uri. Vă puteți conecta utilizând parola pe care ați specificat-o și accesa internetul.
Aceasta este tot ceea ce trebuie să faceți dacă aveți nevoie de un router de bază, cu putere redusă. Dacă doriți să configurați și un filtru de conținut, citiți mai departe.
Configurați filtrul de conținut utilizând E2guardian
E2guardian nu este prezent în depozitele implicite Raspbian. Pentru a-l instala, accesați pagina Github a proiectului și descărcați fișierul care se termină în armhf.deb
. Acum deschideți Terminalul, mergeți la Descărcări (sau oriunde ați ales să descărcați fișierul) și instalați-l:
cd ~ / Descărcări sudo dpkg -i ./e2guardian_*_jessie_armhf.deb
Probabil că veți vedea câteva erori legate de pachetele lipsă atunci când instalați E2guardian. Pentru a remedia acest lucru, lăsați instalarea să se termine și introduceți următoarea comandă:
sudo apt-get install -f
Utilizarea listelor de conținut
Există mai multe liste prezente în / etc / e2guardian / lists
director. Aceste fișiere includ bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist și multe altele. Aceste fișiere sunt corect documentate cu comentarii. Aruncați o privire la ei pentru a vă familiariza.
De exemplu, să presupunem că doriți blocați câteva rețele sociale populare. Deschide / etc / e2guardian / lists / bannedsitelist
fișier și sub fișierul Pătură SSL / CONNECT bloc (deoarece aceste site-uri web folosesc https în loc de simplu http), adăugați următoarele rânduri:
facebook.com twitter.com reddit.com
Acum reîncărcați serviciul E2guardian folosind comanda sudo service reîncărcare e2guardian
(va trebui să executați această comandă de fiecare dată când modificați fișierele de configurare). Orice clienți care utilizează filtrul de conținut nu vor putea acum accesa aceste site-uri web. Nici site-urile mobile (de ex. M.twitter.com) și aplicațiile dedicate pentru smartphone nu vor funcționa.
E2guardian, de asemenea blochează pornirea în mod implicit. Dacă doriți să permiteți (hei, nu judecăm), deschideți fișierul / etc / e2guardian / lists / bannedphraselist
și găsiți următoarea linie:
.Include
Comentează-l adăugând un hash (# simbol) în față, astfel încât să arate astfel:
#.Include
Din nou, reîncărcați configurația cu sudo service reîncărcare e2guardian
, și gata.
Configurarea clienților
Acum că serverul nostru proxy este configurat, putem trece la configurarea clienților. Pentru a utiliza filtrul de conținut, toți clienții trebuie să fie conectați la hotspot-ul Rapberry Pi și să fie configurați pentru a utiliza proxy-ul. Configurarea unui proxy este diferită în toate sistemele și dispozitivele de operare. Cu toate acestea, vom demonstra cum să-l configurați pe Windows și Android, deoarece acestea sunt mai populare.
Windows
Mergi la Panou de control> Rețea și Internet> Opțiuni Internet. În fereastra care se deschide, navigați la Conexiuni și faceți clic pe Setări LAN.
Aici, faceți clic pe Avansat, si intra 192.168.8.1
ca adresă proxy și 8080
ca port. Asigurați-vă că Utilizați același server proxy pentru toate protocoalele caseta este bifată. Clic O.K.
Asta este tot ce trebuie să faci. Cele mai populare browsere web precum Google Chrome și Firefox vor prelua automat setările proxy ale sistemului.
Android
Mergi la Setări sistem> WiFi. Acum, țineți apăsat hotspot-ul Raspberry Pi și selectați Modificați rețeaua. Sub Opțiuni avansate, Seteaza Proxy opțiune pentru Manual. Acum, sub Numele gazdei proxy, introduceți adresa IP a Pi 192.168.8.1
. Sub Port proxy, introduce 8080
, și apăsați pe Salvați.
Acum puteți testa configurația proxy-ului. Încercați să accesați un site din lista dvs. neagră - veți vedea o pagină „Acces refuzat” astfel:
Aplicarea utilizării proxy-ului
Până în prezent, ne bazăm pe clienții care se joacă frumos și folosesc internetul prin filtrul de conținut. Desigur, acest lucru se întâmplă rar în lumea reală. Deci, pentru a impune tuturor clienților să treacă prin proxy, rulați următoarele comenzi:
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- porturi 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4
Aceasta va redirecționa automat toate http (portul 80) și https (portul 443) trafic pe hotspot-ul zmeurii Pi către proxy-ul filtrului de conținut. Acum, fără a configura setările proxy pe dispozitivele dvs., acestea nu vor putea accesa securizat https site-uri web precum Facebook, Gmail, Twitter etc. Acest lucru asigură că oricine dorește să se conecteze la hotspot-ul Pi trebuie să treacă prin proxy.
Aceasta este tot ce trebuie să știți pentru utilizarea de bază a filtrului de conținut. Dacă doriți să aflați câteva caracteristici avansate, citiți mai departe.
Scenarii de utilizare avansate
Configurarea unui filtru bazat pe timp
Să presupunem că doriți să blocați site-urile web menționate în Utilizarea listelor de conținut secțiunea de mai sus, dar numai în anumite momente ale zilei. Personal prefer să blochez Reddit, Facebook și Twitter în timpul orelor de lucru (9am - 5pm) în timpul săptămânii, deoarece acestea sunt un coșmar de productivitate.
Deschide / etc / e2guardian / lists / bannedsitelist
și adăugați următoarea linie:
timp: 9 0 17 0 01234
Această linie funcționează după cum urmează - cronometrul începe de la 9 (9 dimineața) 0 (00 minute), până 17 (17:00 în format de 24 de ore) 0 (00 minute), de la 0 (Luni) la 4 (Vineri).
Să luăm un alt exemplu:
timp: 10 30 20 45 024
Aceasta va bloca site-urile configurate de la 10:30 am (10 30) până la 8:45 pm (20 45) luni (0), miercuri (2) și vineri (4).
Permiterea anumitor adrese IP ocoli proxy-ul
Este posibil să permiteți anumitor adrese IP să ocolească filtrul de conținut. Acest lucru poate fi configurat de configurarea firewall-ului. S-ar putea să fi observat asta în dnsmasq.conf
, setăm hotspotul numai pentru a atribui adrese IP de la 192.168.8.20 la 192.168.8.254 către clienți. Asta înseamnă adrese de la 192.168.8.2 la 192.168.8.19 nu va fi atribuit automat niciunui client (nu putem folosi 192.168.8.1 deoarece asta folosește Raspberry Pi în sine).
Pentru a face acest lucru, mai întâi configurați un IP static pe dispozitivul la care doriți să acordați acces complet. De exemplu, pentru a configura un IP static de 192.168.8.2 pe o mașină Windows, utilizați aceste setări:
Acum, pe Raspberry Pi, executați următoarele comenzi.
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
Acum, dezactivați utilizarea proxy-ului pe dispozitivul dvs., și încercați să deschideți un site web interzis. Ar trebui să îl puteți deschide. Dacă există mai multe adrese IP pe care doriți să le adăugați în lista albă, rulați din nou cele două comenzi de mai sus, dar înlocuiți adresa IP cu cea dorită. Odată ce sunteți mulțumit de lista albă, rulați următoarea comandă pentru a salva configurarea firewall-ului:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Un lucru important de reținut este că nu trebuie să anunțați pe nimeni adresele IP din lista albă. În caz contrar, își pot seta dispozitivul la acea adresă IP pentru a ocoli proxy-ul.
Preocupările legate de securitate
Deoarece Raspberry Pi va fi punctul de intrare și ieșire pentru toate comunicațiile dvs., este important să o securizați. Iată câteva sfaturi despre cum să îmbunătățiți securitatea. Rețineți că acestea sunt doar indicii de bază și nu o listă cuprinzătoare de capcane de securitate. Cantitatea de securitate va depinde de natura rețelei dvs. (acasă, mic birou etc.) și de cât de răutăcioși sunt utilizatorii.
Dezactivați Serviciile inutile
Deoarece acesta este un router, cel mai bine este să rulăm doar serviciile de care avem nevoie. Mai multe servicii care rulează înseamnă mai multe vulnerabilități care pot fi potențial exploatate. Categoric nu utilizați acest sistem ca un desktop obișnuit.
Mergi la Meniu> Preferințe> Configurare Raspberry Pi. În Interfețe , dezactivați toate serviciile pe care nu le aveți nevoie.
Schimbați parola implicită
O nouă instalare Raspbian vine cu parola implicită „zmeură” pentru utilizatorul implicit „pi”. Este recomandat să schimbați acest lucru într-o parolă mai sigură. Pentru a-l schimba, deschideți un terminal rulați această comandă:
passwd
Scoateți monitorul și alte periferice
Deoarece tot ce va rula pe acest Pi este software-ul necesar pentru a-l utiliza ca router și filtru web, nu avem nevoie de un monitor sau alte periferice, cum ar fi mouse-ul și tastatura atașate la acesta. Dacă trebuie să modificați setările și altele, puteți folosi oricând SSH sau puteți atașa un monitor și o tastatură după cum este necesar.
Dezactivați autentificarea automată
Raspbian este configurat să se conecteze automat cu acreditările de utilizator „pi” fără a solicita parola. Acest lucru ar putea fi ok pentru un desktop de familie de uz general, dar periculos pentru un router. Pentru a dezactiva acest lucru, accesați desktopul Raspbian Meniu> Preferințe> Configurare Raspberry Pi. În Sistem filă, în fața fișierului Logare automata titlu, debifați Autentificare ca utilizator 'pi' Caseta de bifat.
În aceeași casetă de dialog, este de asemenea recomandabil să setați fișierul Cizmă setarea la Pentru CLI. Acest lucru va economisi resurse, deoarece nu avem nevoie de o interfață grafică pe un router. Dacă vreți să utilizați desktopul din orice motiv, conectați-vă cu numele dvs. de utilizator și rulați startx
comanda pentru a activa interfața grafică.
Depanarea problemelor obișnuite
Interfețele continuă să fie redenumite
Acest lucru este foarte frecvent dacă utilizați două interfețe wireless pe Pi. Dacă utilizați Ethernet pentru a vă conecta Pi-ul la internet, puteți ignora în siguranță această secțiune. Problema este că atât interfețele wireless (wlan0 și wlan1) schimbă uneori numele după o repornire. Adică modulul WiFi încorporat wlan0 devine redenumit în wlan1, si invers. Aceasta este, desigur, o mare problemă, deoarece ne bazăm pe faptul că aceștia au un nume consistent pentru fișierele noastre de configurare. Iată cum să îl faceți consecvent la reporniri:
1. Aflați Adresa MAC a interfețelor dvs.. Rulați comanda ifconfig | grep HWaddr
pe Raspberry Pi. Veți vedea o ieșire ca următoarea:
Notați textul din dreapta cuvântului „HWaddr” în wlan0 și wlan1 secțiune. Puteți ignora în siguranță eth0 secțiune. Acestea sunt adresele MAC ale interfețelor fără fir.
Dacă nu sunteți sigur care adresă MAC aparține cărei interfețe, pur și simplu deconectați dongle-ul USB WiFi și rulați din nou comanda. wlan interfața care apare acum este interfața WiFi încorporată, în timp ce cealaltă este USB.
2. Creați un fișier nou /etc/udev/rules.d/10-network.rules
folosind editorul de text preferat. De exemplu :
sudo nano /etc/udev/rules.d/10-network.rules
3. Introduceți următorul text în acest fișier. Înlocuiți xx: xx: xx: xx etc. cu adresa MAC corespunzătoare:
[sourcecode] # Configurați modulul WiFi încorporat ca wlan0. Înlocuiți xx: xx: xx etc. cu
# adresa MAC a modulului încorporat
SUBSISTEM == "net", ACTION == "adăugați", ATTR adresa == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"
# Configurați dongle-ul USB WiFi ca wlan1. Înlocuiți yy: yy: yy etc. cu
# Adresa MAC a dongle-ului USB
SUBSISTEM == "net", ACTION == "adăugați", ATTR adresa == "aa: aa: aa: aa: aa: aa", NUME = "wlan1" [/ codul sursă]
Asigurați-vă că adresa MAC a interfeței WiFi încorporate corespunde wlan0, și USB WiFi către wlan1 întrucât aceasta este convenția pe care o urmăm în acest ghid.
4. Reporniți Raspberry Pi. Interfețele dvs. vor începe acum cu numele corect.
Resetarea configurației firewall
O altă problemă obișnuită este un paravan de protecție greșit configurat. În funcție de configurația rețelei, este posibil să dureze mai multe încercări înainte de a obține paravanul corect. Dacă credeți că ați reușit să confundați în orice moment configurația firewallului, executați următoarele comenzi pentru a începe de la zero:
sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain
Aceasta se va șterge toate configurare firewall. Acum puteți începe configurarea firewall-ului de la zero. Odată ce sunteți mulțumit, rulați comanda sudo iptables-save | sudo tee /etc/iptables/rules.v4
pentru a face configurația permanentă.
VEZI ȘI: Cum se execută comenzi pe Raspberry Pi prin e-mail
Utilizați Raspberry Pi ca router și filtru de conținut
Asta este totul pentru a transforma Raspberry Pi într-un router puternic plus un filtru proxy de conținut. Puteți obține fișierele de configurare exacte pe care le-am folosit pentru configurarea noastră pe pagina noastră GitHub. Anunțați-ne cum funcționează pentru dvs. Dacă ceva nu funcționează așa cum era de așteptat sau dacă un pas este prea confuz, nu ezitați să ne puneți o întrebare în secțiunea de comentarii de mai jos.