Om du har barn i ditt hem, kanske du har känt behovet av att blockera vissa oönskade webbplatser. Ett annat vanligt problemområde är sociala medier webbplatser - du kanske känner att barn (och vuxna) slösa för mycket tid på Facebook, Twitter etc. och vill blockera dem, eller åtminstone göra dem tillgängliga endast vid vissa tider på dagen.
För att göra det möjligt behöver vi ett router plus innehållsfilter - en apparat genom vilken alla våra enheter som bärbara datorer, smartphones och surfplattor ansluts till internet. Denna apparat avlyssnar också de webbplatser som dessa enheter har åtkomst till och blockerar dem om de försöker komma åt en svartlistad webbplats.
Det finns kommersiella, färdiga innehållsfilter tillgängliga på marknaden, men för oss DIY-typer är det inte kul i det. Således får vi våra händer smutsiga och sätter upp en Raspberry Pi för jobbet. Vi valde Raspberry Pi för detta projekt på grund av sin lilla storlek och försumbar strömförbrukning. Dessa instruktioner fungerar emellertid nästan omodifierade med nästan vilken dator som helst som kör Debian Linux eller ett derivat (Ubuntu, Mint etc.).
Ansvarsbegränsning : Den här guiden förutsätter en mellanliggande erfarenhet av Linux, och en vilja att felsöka problem om och när de uppstår. Tidigare erfarenhet med kommandoreder och brandväggar är en bonus.
Hur det fungerar
Hårdvara
Vi kommer att använda Raspberry Pi 3 som ett router cum innehållsfilter. För detta behöver vi två nätverksgränssnitt på den - en för att ansluta till internet och den andra att fungera som en WiFi-hotspot för våra andra enheter att ansluta till. Raspberry Pi 3 har en inbyggd Ethernet-jack och WiFi-modul. Så i detta scenario kan vi använda en Ethernet-kabel ( eth0 ) för att ansluta till Internet, medan WiFi-modulen ( wlan0 ) kommer att fungera som en hotspot.
Naturligtvis är det inte alltid möjligt att ansluta till Internet via Ethernet. I det här fallet behöver du en kompatibel USB WiFi-dongle ( wlan1 ) för att ansluta till internet, medan den inbyggda WiFi-modulen ( wlan0 ) kommer att fungera som en hotspot. Det här är den konfiguration som vi kommer att använda i den här guiden.
Tänk på att medan en Raspberry Pi 3 mestadels är lämplig för en heminstallation med några bärbara datorer och smartphones, kommer det inte att ge den prestanda som behövs för en stor kontorsinstallation . Titta på mer skicklig hårdvara om många kunder kommer att ansluta till ditt innehållsfilter.
programvara
Vi kommer att använda den utmärkta E2guardianen för att fånga upp och filtrera våra webbförfrågningar. Eftersom innehållsfiltrering kan ha en prestationspåverkan (beroende på blocklistans storlek) använder vi Squid-cachen för att kompensera denna prestationsfrekvens.
förutsättningar
1. Raspberry Pi 3 med den senaste versionen av Raspbian OS installerat och tillgång till internet. Om du bara börjar med Raspberry Pi rekommenderar vi att du läser vår guide om hur du kommer igång med Raspberry Pi 3.
2. [Valfritt] USB WiFi Dongle - Detta behövs om och bara om du inte kan ansluta din Raspberry Pi 3 till Internet med en Ethernet-kabel. Om du planerar att använda WiFi för både anslutning till internet och som hotspot krävs detta.
3. Fysisk tillgång till Raspberry Pi - På grund av naturen i denna artikel kan ett enda misstag i brandväggskonfigurationen låsa dig ur din Pi om du använder den i huvudlöst läge. Därför rekommenderas att du ansluter en bildskärm, tangentbord och mus medan du konfigurerar den tills allt är inställt.
Använd Raspberry Pi som Router
1. Anslut din Pi till Internet med Ethernet ( eth0 ). Om du använder en USB WiFi-dongle (förmodligen wlan1 ) istället, anslut den till internet. Lämna den inbyggda WiFi-modulen ( wlan0 ) som den är för nu.
2. Få den nödvändiga programvaran vi behöver:
sudo apt installera iptables iptables-persistent hostapd dnsmasq squid3
3. Vi kommer att skapa hostapd
så att vår Pi kan fungera som WiFi-hotspot . För detta, skapa en config-fil med din favorit textredigerare, till exempel sudo nano /etc/hostapd/hostapd.conf
och klistra in innehållet från vår GitHub-sida.
Några linjer som du kanske vill modifiera enligt smak är:
SSID = RaspberryPiAP
Denna rad dikterar vad namnet på åtkomstpunkten kommer att vara. Jag valde RaspberryPiAP
.
wpa_passphrase = beebom.com
Detta anger lösenordsfrasen som används för att komma åt hotspot. Jag använde beebom.com
, men det rekommenderas att ändra det till en stark lösenordsval enligt ditt val.
4. Nästa kommer vi att dnsmasq
en DHCP-server med dnsmasq
. Redigera konfigurationsfilen /etc/dnsmasq.conf
, och lägg till följande rader i slutet:
[Source] interface = lo, wlan0
no-dhcp-interface = lo
dhcp-range = 192.168.8.20, 192.168.8.254, 255.255.255.0, 12h [/ käll]
Detta gör att gränssnittet på wlan0
(den inbyggda WiFi-modulen) ger ut IP-adresser till kunder i 192.168.8.20 till 192.168.8.254- serien.
5. Ställ in en statisk IP-adress för den inbyggda WiFi-modulen wlan0
. Öppna filen /etc/network/interfaces
. Det ser nog ut som om det här (betonar min):
[källkod] källkatalog /etc/network/interfaces.d
auto lo
om det gick tillbaka
iface eth0 inet manual
tillåt-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
tillåt-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Här kan du hitta raderna i fetstil som handlar om wlan0
, och ändra dem så att filen ser ut som följande:
[källkod] källkatalog /etc/network/interfaces.d
auto lo
om det gick tillbaka
iface eth0 inet manual
tillåt-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
adress 192.168.8.1
nätmask 255.255.255.0
tillåt-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]
Detta ställer in en statisk IP-adress 192.168.8.1
på wlan0. Kom ihåg denna adress, eftersom det här är adressen vi kommer att använda för att kommunicera med vår Raspberry Pi senare .
6. Ställ in IP-vidarebefordran . Redigera filen /etc/sysctl.conf
och lägg till följande rad:
net.ipv4.ip_forward = 1
7. Nu ska vi konfigurera nätverksadressöversättning (NAT) i vår brandvägg. För att göra detta anger du följande 2 kommandon:
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
Det första kommandot sätter upp NAT, medan det andra kommandot sparar vår nuvarande brandväggskonfiguration till en fil som heter /etc/iptables/rules.v4
. Detta säkerställer att konfigurationen fortsätter över omstart.
8. Starta nu din Raspberry Pi på den här tiden . Det här är för att se till att alla ändringar som vi gjort i konfigurationsfilerna är funktionella.
9. Efter omstart bör du kunna se det nyskapade RaspberryPiAP
hotspotet (om du inte ändrade namnet i steg 3) på andra enheter som bärbara datorer och smartphones. Du kan ansluta till det med det lösenord du angav och få tillgång till internet.
Detta är allt du behöver göra om du behöver en grundläggande, lågdriven router. Om du vill skapa ett innehållsfilter, läs vidare.
Ställ in innehållsfilter med hjälp av E2guardian
E2guardian är inte närvarande i standard Raspbian repositories. För att installera det, gå till projektets Github-sida och hämta filen som slutar i armhf.deb
. Öppna nu Terminal, gå till din nedladdningsmapp (eller vart du valde att ladda ner filen) och installera den:
cd ~ / Nedladdningar sudo dpkg -i ./e2guardian_*_jessie_armhf.deb
Du kommer förmodligen att se några fel om att sakna paket när du installerar E2guardian. För att rätta till detta, låt installationen avslutas och skriv följande kommando:
sudo apt-get install -f
Använda innehållslistor
Det finns flera listor i /etc/e2guardian/lists
. Dessa filer inkluderar bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist och mycket mer. Dessa filer dokumenteras korrekt med kommentarer. Ta en titt på dem för att bekanta dig själv.
Till exempel, låt oss antar att du vill blockera några populära sociala nätverk . Öppna /etc/e2guardian/lists/bannedsitelist
och under fliken SSL / CONNECT (eftersom dessa webbplatser använder https istället för vanlig http ) lägger du till följande rader:
facebook.com twitter.com reddit.com
Uppdatera nu E2guardian-tjänsten med kommandot sudo service e2guardian reload
( du måste springa detta kommando varje gång du ändrar konfigurationsfilerna ). Alla klienter som använder innehållsfiltret kommer nu inte att kunna komma åt dessa webbplatser. Även de mobila sidorna (t.ex. m.twitter.com) och dedikerade smartphone-appar kommer inte att fungera.
E2guardian blockerar också porno som standard . Om du vill tillåta det (hej, vi bedömer inte) öppnar du /etc/e2guardian/lists/bannedphraselist
och hittar följande rad:
.Inkludera
Kommentera det genom att lägga till en hash (# symbol) framåt så att den ser ut så här:
#.Inkludera
Återuppdatera konfigurationen med sudo service e2guardian reload
, och du är klar.
Konfigurera klienter
Nu när vår proxyserver är konfigurerad kan vi fortsätta konfigurera klienterna. För att använda innehållsfiltret måste alla klienter vara anslutna till Rapberry Pi-hotspot och konfigurerade för att använda proxyn. Konfigurera en proxy är annorlunda i alla operativsystem och enheter. Vi kommer emellertid att visa hur du ställer in det på Windows och Android, eftersom dessa är mer populära.
Windows
Gå till Kontrollpanelen> Nätverk och Internet> Internetalternativ . I fönstret som öppnas, navigerar du till fliken Anslutningar och klickar på LAN-inställningar .
Klicka här på Avancerat och skriv 192.168.8.1
som proxys adress och 8080
som port. Kontrollera att använd samma proxyserver för alla protokollrutor är markerad. Klicka på OK .
Det är allt du behöver göra. Mest populära webbläsare som Google Chrome och Firefox tar automatiskt in proxyinställningarna för systemet.
Android
Gå till Systeminställningar> WiFi . Nu knackar du på och håller Raspberry Pi hotspot och väljer Ändra nätverk . Under Avancerade alternativ ställer du in proxyalternativet till Manuell . Nu, under proxy värdnamn, ange IP-adressen till Pi 192.168.8.1
. Under proxyporten anger du 8080
och trycker på Spara .
Du kan nu testa proxyens konfiguration. Försök att gå till en webbplats i din svarta lista - du kommer att se en "Access Denied" -sida så här:
Förstärkning av proxyanvändning
Hittills är vi beroende av att kunderna spelar bra och använder internet via innehållsfiltret. Självklart händer det sällan i den verkliga världen. Så att genomdriva alla klienter för att gå igenom proxyen, kör följande kommandon:
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- portar 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4
Detta kommer automatiskt att omdirigera all http (port 80) och https (port 443) trafik på raspberry Pi-hotspot till innehållsfilterproxyn. Nu kan du inte få tillgång till säkra https- webbplatser som Facebook, Gmail, Twitter etc. utan att konfigurera proxyinställningar på dina enheter. Detta gör att alla som vill ansluta till din Pi hotspot måste gå igenom proxyen.
Detta är allt du behöver veta för grundläggande användning av innehållsfiltret. Om du vill lära dig några avancerade funktioner, läs vidare.
Avancerade användningsscenarier
Ställa in ett tidsbaserat filter
Låt oss säga att du vill blockera de webbplatser som vi nämnde i avsnittet Användande innehållslistor ovan, men bara vid vissa tider på dagen . Jag föredrar personligen att blockera Reddit, Facebook och Twitter under arbetstid (09:00 - 17:00) på vardagar eftersom de är en produktivitetsmardröm.
Öppna /etc/e2guardian/lists/bannedsitelist
och lägg till följande rad:
tid: 9 0 17 0 01234
Den här raden fungerar som följer - timern börjar kl 9 (00:00), till 17 (5:00 i 24-timmarsformat) 0 (00 minuter), från 0 (måndag) till 4 (fredag).
Låt oss ta ett annat exempel:
tid: 10 30 20 45 024
Detta kommer att blockera de konfigurerade platserna från kl. 10.30 (10 30) till 8:45 (20 45) på måndag (0), onsdag (2) och fredag (4).
Låta vissa IP-adresser förbi proxyn
Det är möjligt att låta vissa IP-adresser kringgå innehållsfiltret. Det här kan ställas in genom att konfigurera brandväggen . Du kanske har märkt att i vår dnsmasq.conf
vi bara in hotspotet för att tilldela IP-adresser från 192.168.8.20 till 192.168.8.254 till kunder. Det betyder att adresser från 192.168.8.2 till 192.168.8.19 kommer inte automatiskt att tilldelas någon klient (vi kan inte använda 192.168.8.1 eftersom det är vad vår Raspberry Pi själv använder).
För att göra det här måste du först konfigurera en statisk IP på enheten som du vill ge full åtkomst till. Till exempel, för att ställa in en statisk IP på 192.168.8.2 på en Windows-dator, använd dessa inställningar:
Nu, på din Raspberry Pi, kör följande kommandon.
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
Aktivera nu användningen av proxy på din enhet och försök att öppna en förbjuden webbplats. Du borde kunna öppna den. Om det finns fler IP-adresser som du vill lägga till i vitlistan, kör de två kommandona ovan, men byt ut IP-adressen med den du vill ha. När du är nöjd med whitelisten kör du följande kommando för att spara din brandväggs konfiguration:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
En viktig sak att tänka på är att du inte borde låta någon veta de vitlistade IP-adresserna. Annars kan de helt enkelt ställa in deras enhet till den IP-adressen för att kringgå proxyn.
Säkerhetshinder
Eftersom din Raspberry Pi kommer att vara start- och utgångspunkt för all din kommunikation, är det viktigt att säkra det. Här är några tips om hur du förbättrar säkerheten. Tänk på att dessa bara är grundläggande tips och inte en omfattande lista över säkerhetsfallen. Mängden säkerhet kommer att bero på arten av ditt nätverk (hem, litet kontor etc.) och hur olyckligt användarna är.
Inaktivera onödiga tjänster
Eftersom det här är en router är det bäst att bara köra de tjänster som vi behöver. Fler tjänster som körs innebär fler sårbarheter som potentiellt kan utnyttjas. Definitivt använd inte detta system som ett vanligt skrivbord .
Gå till Meny> Inställningar> Raspberry Pi-konfiguration . På fliken Gränssnitt, inaktivera alla tjänster som du inte behöver.
Ändra standardlösenordet
En ny Raspbian-installation kommer med standard lösenord "hallon" för standardanvändaren "pi". Det rekommenderas att ändra detta till ett säkrare lösenord. För att ändra det, öppna en terminal kör detta kommando:
passwd
Ta bort bildskärmen och andra kringutrustning
Eftersom allt som kommer att köras på denna Pi är programvaran som krävs för att använda den som en router och ett webfilter, behöver vi inte en bildskärm eller andra kringutrustning som en mus och tangentbord som är ansluten till den. Om du behöver ändra inställningar och så kan du alltid använda SSH, eller fästa en skärm och ett tangentbord efter behov.
Stäng av automatisk inloggning
Raspbian är inställd för att automatiskt logga in med användaruppgifterna för "pi" utan att behöva fråga om lösenord. Det här kan vara bra för en generell familjeskrivbord, men farlig för en router. För att inaktivera detta på Raspbian-skrivbordet, gå till Meny> Inställningar> Raspberry Pi-konfiguration . Avmarkera kryssrutan Logga in som användare "pi" i fliken System, framför rubriken Automatisk inloggning .
I samma dialogruta är det också lämpligt att ställa in Boot- inställningen till To CLI . Detta sparar resurser eftersom vi inte behöver en GUI på en router. Om du vill använda skrivbordet av någon anledning loggar du in med ditt användarnamn och kör startx
kommandot för att startx
det grafiska gränssnittet.
Felsökning vanliga problem
Gränssnitt håller att bli bytt namn
Detta är mycket vanligt om du använder två trådlösa gränssnitt på din Pi. Om du använder Ethernet för att ansluta din Pi till Internet kan du säkert ignorera det här avsnittet . Problemet är att både de trådlösa gränssnitten ( wlan0 och wlan1 ) byter namn ibland efter en omstart. Det innebär att den inbyggda WiFi-modulen wlan0 omdirigeras till wlan1 och vice versa. Detta är naturligtvis ett stort problem eftersom vi är beroende av att de har ett konsekvent namn för våra konfigurationsfiler. Så här gör du det konsekvent på omstart:
1. Ta reda på MAC-adressen på dina gränssnitt . Kör kommandot ifconfig | grep HWaddr
ifconfig | grep HWaddr
på din Raspberry Pi. Du får se en utmatning som följande:
Notera texten till höger om ordet 'HWaddr' i wlan0 och wlan1- sektionen. Du kan säkert ignorera et0- sektionen. Det här är MAC-adresserna på dina trådlösa gränssnitt.
Om du inte är säker på vilken MAC-adress som hör till vilket gränssnitt, koppla bara ur USB WiFi-dongeln och kör kommandot igen. WLAN- gränssnittet som kommer upp nu är ditt inbyggda WiFi-gränssnitt, medan den andra är USB.
2. Skapa en ny fil /etc/udev/rules.d/10-network.rules
med din favorit textredigerare. Till exempel :
sudo nano /etc/udev/rules.d/10-network.rules
3. Ange följande text i den här filen. Byt xx: xx: xx: xx etc. med lämplig MAC-adress :
[källkod] # Ställ in den inbyggda WiFi-modulen som wlan0. Byt xx: xx: xx etc. med
# inbyggd modulens MAC-adress
SUBSYSTEM == "net", ACTION == "add", ATTR {adress} == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"
# Ställ in USB WiFi-dongeln som wlan1. Byt ut yy: yy: yy etc. med
# USB-dongles MAC-adress
SUBSYSTEM == "net", ACTION == "add", ATTR {adress} == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ källkod]
Kontrollera att det inbyggda WiFi-gränssnittets MAC-adress motsvarar wlan0 och USB WiFi till wlan1 eftersom det är den konvention vi följer i den här guiden.
4. Starta om din Raspberry Pi. Dina gränssnitt börjar med det korrekta namnet nu.
Återställning av brandväggskonfiguration
Ett annat vanligt problem är en dåligt konfigurerad brandvägg. Beroende på din nätverkskonfiguration kan det ta flera försök innan du får brandväggen rätt. Om du på något sätt tror att du kanske har brutit upp brandvägskonfigurationen, kör följande kommandon för att börja från början:
sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain
Detta tar bort alla brandväggskonfigurationer. Du kan nu börja konfigurera brandväggen från början. När du är nöjd, kör kommandot sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo iptables-save | sudo tee /etc/iptables/rules.v4
att göra konfigurationen permanent.
Använd din Raspberry Pi som router och innehållsfilter
Det är allt på att göra din Raspberry Pi till en potent router plus innehållsfilterproxy. Du kan få exakta konfigurationsfiler som vi använde för vår inställning på vår GitHub-sida. Låt oss veta hur det fungerar för dig. Om något inte fungerar som förväntat, eller om ett steg känns förvirrat, tveka inte att fråga oss en fråga i kommentarfältet nedan.