DIY

Hur man använder Raspberry Pi som router och innehållsfilter

Hur man använder Raspberry Pi som router och innehållsfilter

Om du har barn hemma kanske du har känt behov av att blockera vissa oönskade webbplatser. Ett annat vanligt problemområde är webbplatser för sociala medier - du kanske känner att barn (och vuxna) slösar för mycket tid på Facebook, Twitter etc. och vill blockera dem eller åtminstone göra dem tillgängliga endast under vissa tider på dygnet..

För att möjliggöra detta behöver vi en router plus innehållsfilter - en apparat genom vilken alla våra enheter som bärbara datorer, smartphones och surfplattor ansluter till internet. Den här apparaten avlyssnar också webbplatser som dessa enheter använder 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 inget roligt i det. Således kommer vi att smutsa händerna och ställa in en Raspberry Pi för jobbet. Vi valde Raspberry Pi för detta projekt på grund av dess lilla storlek och försumbar strömförbrukning. i alla fall, dessa instruktioner fungerar nästan omodifierade med nästan vilken dator som helst som kör Debian Linux eller ett derivat (Ubuntu, Mint etc.).

varning: 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 av kommandorader och brandväggar är en bonus.

Hur det fungerar

Hårdvara

Vi kommer att använda Raspberry Pi 3 som ett router-innehållsfilter. För detta behöver vi två nätverksgränssnitt på den - den ena för att ansluta till internet och den andra för att fungera som en WiFi-hotspot för våra andra enheter att ansluta till. Raspberry Pi 3 har ett inbyggt Ethernet-uttag och WiFi-modul. Så i det här scenariot kan vi använda en Ethernet-kabel (eth0) för att ansluta till internet, medan WiFi-modulen (wlan0) fungerar som en hotspot.

Naturligtvis är det inte alltid möjligt att ansluta till internet med Ethernet. I det här fallet behöver du en kompatibel USB WiFi-dongel (wlan1) för att ansluta till internet, medan den inbyggda WiFi-modulen (wlan0) fungerar 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 tillräcklig för en heminstallation med några bärbara datorer och smartphones, det ger inte den prestanda som behövs för en stor kontorsinstallation. Titta på mer kapabel hårdvara om många kunder kommer att ansluta till ditt innehållsfilter.

programvara

Vi kommer att använda den utmärkta E2guardian för att fånga upp och filtrera våra webbförfrågningar. Eftersom innehållsfiltrering kan ha en prestandapåverkan (beroende på storleken på blocklistan) kommer vi att använda Squid-cache för att kompensera för denna prestationshit.

Förutsättningar

1. Raspberry Pi 3 med den senaste versionen av Raspbian OS installerad 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. [Frivillig] USB WiFi-dongel - 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 en hotspot krävs detta.

3. Fysisk tillgång till Raspberry Pi - På grund av artens art 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-dongel (förmodligen wlan1) istället, anslut det till internet. Lämna den inbyggda WiFi-modulen (wlan0) som det är för nu.

2. Få den förutsättningsprogramvara som vi behöver:

sudo apt installera iptables iptables-persistent hostapd dnsmasq squid3

3. Vi kommer att ställa in hostapd så att vår Pi kan fungera som en WiFi-hotspot. För detta skapar du till exempel en konfigurationsfil med din favorittextredigerare sudo nano /etc/hostapd/hostapd.conf, och klistra in innehållet från vår GitHub-sida.

Några rader som du kanske vill ändra efter smak är:

ssid = RaspberryPiAP

Denna rad dikterar vad namnet på åtkomstpunkten kommer att vara. jag valde HallonPiAP.

wpa_passphrase = beebom.com

Detta anger lösenfrasen som används för att komma åt hotspot. jag använde beebom.com, men det rekommenderas att ändra det till en stark lösenfras som du väljer.

4. Därefter gör vi det ställa in en DHCP-server använder sig av dnsmasq. Redigera konfigurationsfilen /etc/dnsmasq.conf, och lägg till följande rader i slutet:

[sourcecode] gränssnitt = lo, wlan0

no-dhcp-interface = lo

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

Detta gör att gränssnittet är på wlan0 (den inbyggda WiFi-modulen) delar ut IP-adresser till klienter i 192.168.8.20 till 192.168.8.254 räckvidd.

5. Uppstart en statisk IP-adress för den inbyggda WiFi-modulen wlan0. Öppna filen / etc / nätverk / gränssnitt. Det ser antagligen ut så här (betoning min):

[källkod] källkatalog /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]

Här, lokalisera raderna i fetstil med wlan0, och ändra dem, så att filen ser ut som följande:

[källkod] källkatalog /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet statisk
hostapd /etc/hostapd/hostapd.conf
adress 192.168.8.1
nätmask 255.255.255.0
allow-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 den här adressen, som det här är adressen vi kommer att använda för att kommunicera med vår Raspberry Pi senare.

6. Nu ställa in IP-vidarebefordran. Redigera filen /etc/sysctl.conf, och lägg till följande rad i den:

net.ipv4.ip_forward = 1

7. Nu kommer vi konfigurera nätverksadressöversättning (NAT) i vår brandvägg. För att göra detta, ange följande två 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 ställer in NAT, medan det andra kommandot sparar vår nuvarande brandväggskonfiguration i en fil som heter /etc/iptables/rules.v4. Detta ser till att konfigurationen kvarstår omstart.

8. Vid denna punkt, starta om din Raspberry Pi. Detta för att se till att alla ändringar som vi gjort i konfigurationsfilerna fungerar.

9. Efter omstart bör du kunna se det nyskapade HallonPiAP hotspot (om du inte ändrade namnet i steg 3) på dina andra enheter som bärbara datorer och smartphones. Du kan ansluta till det med det lösenord du angav och komma åt internet.

Det här är allt du behöver göra för att du behöver en grundläggande router med låg effekt. Om du också vill ställa in ett innehållsfilter, läs vidare.

Ställ in innehållsfilter med E2guardian

E2guardian finns inte i standard Raspbian-förvar. För att installera det, gå till projektets Github-sida och ladda ner filen som slutar på armhf.deb. Öppna nu Terminal, gå till din Nedladdningar mapp (eller var du än väljer 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 saknade paket när du installerar E2guardian. För att åtgärda detta, låt installationen avslutas och ange följande kommando:

sudo apt-get install -f

Använda innehållslistor

Det finns flera listor i / etc / e2guardian / lists katalog. Dessa filer inkluderar bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist och mer. Dessa filer är korrekt dokumenterade med kommentarer. Ta en titt på dem för att bekanta dig.

Som ett exempel, låt oss anta att du vill blockera några populära sociala nätverk. Öppna / etc / e2guardian / lists / bannedsitelist filen och under Filt SSL / CONNECT blockera (eftersom dessa webbplatser använder https istället för vanligt http), lägg till följande rader:

facebook.com twitter.com reddit.com

Ladda om tjänsten E2guardian nu med kommandot sudo service e2guardian reload (du måste köra det här kommandot varje gång du ändrar konfigurationsfilerna). Alla klienter som använder innehållsfiltret kommer nu inte att kunna komma åt dessa webbplatser. Även mobilwebbplatser (t.ex. m.twitter.com) och dedikerade smartphone-appar fungerar inte.

E2guardian också blockerar porr som standard. Om du vill tillåta det (hej, vi bedömer inte), öppna / etc / e2guardian / lists / bannedfraselist fil och leta upp följande rad:

.Omfatta

Kommentera det genom att lägga till en hash (# symbol) framåt så att det ser ut så här:

#.Omfatta

Återigen laddar du konfigurationen med sudo service e2guardian ladda om, och du är klar.

Konfigurera klienter

Nu när vår proxyserver är inställd kan vi gå vidare till att konfigurera klienterna. För att använda innehållsfiltret måste alla klienter vara anslutna till Rapberry Pis hotspot och konfigureras för att använda proxy. Konfigurera en proxy skiljer sig åt i alla operativsystem och enheter. Vi kommer dock att demonstrera hur man ställer in det på Windows och Android, eftersom dessa är mer populära.

Windows

Gå till Kontrollpanelen> Nätverk och Internet> Internetalternativ. Gå till fönstret som öppnas Anslutningar och klicka på LAN-inställningar.

Klicka här på Avancerad, och gå in 192.168.8.1 som proxyadress och 8080 som hamnen. Se till att Använd samma proxyserver för alla protokoll kryssrutan är markerad. Klick OK.

Det är allt du behöver göra. De flesta populära webbläsare som Google Chrome och Firefox hämtar automatiskt systemets proxyinställningar.

Android

Gå till Systeminställningar> WiFi. Tryck nu och håll ned Raspberry Pi-hotspot och välj Ändra nätverk. Under Avancerade alternativ, ställa in Ombud alternativ till Manuell. Nu, under Proxy-värdnamn, ange IP-adressen till Pi 192.168.8.1. Under Proxyport, stiga på 8080, och tryck på Spara.

Du kan nu testa konfigurationen av proxyn. Försök att gå till en webbplats i din svarta lista - du kommer att se en "Åtkomst nekad" sida så här:

Tillämpa proxyanvändning

Hittills förlitar vi oss på att klienter spelar trevligt och använder internet via innehållsfiltret. Naturligtvis händer detta sällan i den verkliga världen. Så för att tvinga alla klienter 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 FÖRSTÄLLNING -t nat -p tcp --destination-port 443 -j REDIRECT --to- portar 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4

Detta omdirigerar automatiskt alla http (port 80) och https (port 443) trafik på raspberry Pi: s hotspot till innehållsfiltrets proxy. Nu, utan att konfigurera proxyinställningar på dina enheter, kommer de inte att kunna komma åt säkert https webbplatser som Facebook, Gmail, Twitter etc. alls. Detta ser till 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 Använda innehållslistor avsnittet ovan, men bara vid vissa tider på dygnet. Jag personligen föredrar att blockera Reddit, Facebook och Twitter under arbetstid (09:00 - 17:00) på vardagar eftersom de är en produktiv mardröm.

Öppna / etc / e2guardian / lists / bannedsitelist fil och lägg till följande rad i den:

tid: 9 0 17 0 01234

Denna rad fungerar enligt följande - timern börjar kl 9 (9 am) 0 (00 minuter), till 17 (17: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 blockerar de konfigurerade platserna från 10:30 (10 30) till 20:45 (20 45) på måndag (0), onsdag (2) och fredag ​​(4).

Låta vissa IP-adresser kringgå proxyen

Det är möjligt att låta vissa IP-adresser kringgå innehållsfiltret. Detta kan ställas in av konfigurera brandväggen. Du kanske har lagt märke till det i vår dnsmasq.conf, vi ställer bara in hotspot för att tilldela IP-adresser från 192.168.8.20 till 192.168.8.254 till kunder. Det betyder adresser från 192.168.8.2 till 192.168.8.19 kommer inte att tilldelas automatiskt till 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 detta, först ställa in en statisk IP på den enhet 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-maskin, använd dessa inställningar:

Kör följande kommandon på din Raspberry Pi.

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

Nu, inaktivera 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 ovanstående två kommandon igen, men ersätt IP-adressen med den du vill ha. När du är nöjd med vitlistan kör du följande kommando för att spara din brandväggskonfiguration:

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

En viktig sak att tänka på är att du inte ska låta någon veta de vitlistade IP-adresserna. Annars kan de helt enkelt ställa in sin enhet på den IP-adressen för att kringgå proxyen.

Säkerhetsproblem

Eftersom din Raspberry Pi kommer att vara in- och utgångspunkt för all din kommunikation är det viktigt att säkra den. Här är några tips om hur du kan förbättra säkerheten. Tänk på att det här bara är grundläggande tips och inte en omfattande lista över säkerhetsgropar. Säkerheten kommer att bero på ditt nätverk (hemma, litet kontor etc.) och hur elak användarna är.

Inaktivera onödiga tjänster

Eftersom detta är en router är det bäst att bara köra de tjänster vi behöver. Fler tjänster som kör 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. I Gränssnitt inaktivera alla tjänster som du inte behöver.

Ändra standardlösenordet

En ny Raspbian-installation levereras med standardlösenordet 'hallon' för standardanvändaren 'pi'. Vi rekommenderar att du ändrar detta till ett säkrare lösenord. För att ändra det, öppna en terminal kör det här kommandot:

passwd

Ta bort monitorn och andra kringutrustning

Eftersom allt som kommer att köras på denna Pi är den programvara som krävs för att använda den som en router och webbfilter, behöver vi inte en bildskärm eller annan kringutrustning som en mus och ett tangentbord anslutet till den. Om du behöver ändra inställningar och sådant kan du alltid använda SSH eller ansluta en bildskärm och tangentbord efter behov.

Stäng av automatisk inloggning

Raspbian är inställt på att automatiskt logga in med 'pi' användaruppgifter utan att be om lösenord. Detta kan vara ok för ett allmänt skrivbord för familjen, men farligt för en router. För att inaktivera detta, gå till på Raspbian-skrivbordet Meny> Inställningar> Raspberry Pi-konfiguration. I Systemet fliken, framför Automatisk inloggning rubrik, avmarkera kryssrutan Logga in som användare 'pi' kryssruta.

I samma dialogruta är det också lämpligt att ställa in Känga inställning till Till CLI. Detta sparar resurser eftersom vi inte behöver ett GUI på en router. Om du av någon anledning vill använda skrivbordet, logga in med ditt användarnamn och kör startx kommando för att aktivera det grafiska gränssnittet.

Felsökning av vanliga problem

Gränssnitt fortsätter att byta 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åda de trådlösa gränssnitten (wlan0 och wlan1) byter ibland namn efter en omstart. Det vill säga den inbyggda WiFi-modulen wlan0 blir bytt namn till wlan1, och vice versa. Detta är naturligtvis ett stort problem eftersom vi litar på att de har ett konsekvent namn för våra konfigurationsfiler. Så här gör du det konsekvent över omstart:

1. Ta reda på MAC-adress för dina gränssnitt. Kör kommandot ifconfig | grep HWaddr på din Raspberry Pi. Du ser en utdata som följande:

Anteckna texten till höger om ordet 'HWaddr' i wlan0 och wlan1 sektion. Du kan säkert ignorera eth0 sektion. Det här är MAC-adresserna till dina trådlösa gränssnitt.

Om du inte är säker på vilken MAC-adress som tillhör vilket gränssnitt, kopplar du bara ur USB WiFi-dongeln och kör kommandot igen. De wlan gränssnitt som kommer upp nu är ditt inbyggda WiFi-gränssnitt, medan det andra är USB.

2. Skapa en ny fil /etc/udev/rules.d/10-network.rules med din favorittextredigerare. Till exempel :

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

3. Ange följande text i den här filen. Byt ut xx: xx: xx: xx etc. med lämplig MAC-adress:

[sourcecode] # Ställ in den inbyggda WiFi-modulen som wlan0. Byt ut xx: xx: xx etc. med
# inbyggd modulens MAC-adress
SUBSYSTEM == "net", ACTION == "add", ATTR address == "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 address == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ sourcecode]

Se till att det inbyggda WiFi-gränssnittets MAC-adress motsvarar wlan0, och USB WiFi till wlan1 eftersom det är konventionen vi följer i den här guiden.

4. Starta om din Raspberry Pi. Dina gränssnitt börjar med rätt namn nu.

Återställer 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 rätt brandvägg. Om du någon gång tror att du kanske har trasslat i brandväggskonfigurationen, kör du följande kommandon för att börja om från början:

sudo iptables - spola sudo iptables - tabell nat - spola sudo iptables --delete-chain sudo iptables - tabell nat - delete-chain

Detta kommer att raderas Allt brandväggskonfiguration. Du kan nu börja konfigurera brandväggen från grunden. När du är nöjd kör du kommandot sudo iptables-save | sudo tee /etc/iptables/rules.v4 för att göra konfigurationen permanent.

SE OCH: Hur man kör kommandon på Raspberry Pi via e-post

Använd din Raspberry Pi som router och innehållsfilter

Allt handlar om att förvandla din Raspberry Pi till en potent router plus innehållsfilterproxy. Du kan få exakta konfigurationsfiler som vi använde för vår installation 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ör förvirrande, kan du ställa oss en fråga i kommentarfältet nedan.

Beebom, som förbinder människor med foton, är nu öppet för inbjudan
Här välkomnar vi en helt ny webbplats som låter dig dela dina foton på bästa möjliga sätt, oavsett om det är professionella bilder av fotografer ell...
Hur Hur man tar bättre bilder med din iPhone
Hur man tar bättre bilder med din iPhone
Är du ofta besviken över resultatet av din iPhone-fotografering? Får du bilder som inte har den "pop" du vill att de ska? Tvättas färgerna ut? Eller v...
Hur Så här blockerar du Chrome-meddelanden på Windows, Mac och Android
Så här blockerar du Chrome-meddelanden på Windows, Mac och Android
Chrome 'push-meddelanden' är en väldigt smidig funktion, eftersom den meddelar dig om alla meddelanden, meddelanden från sociala medier, poäng och mer...