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

  • Jack Hood
  • 0
  • 3401
  • 556

Om du har barn hemma kan du ha känt behovet 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 vid vissa tider på dagen.

För att göra detta möjligt behöver vi a 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 upptäcker också webbplatserna som dessa enheter har åtkomst till och blockerar dem om de försöker komma åt en svartlistad webbplats.

Det finns kommersiella, färdiga att använda innehållsfilter tillgängliga på marknaden, men för oss DIY-typer finns det inget kul med det. Således kommer vi att få våra händer smutsiga 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 energiförbrukning. i alla fall, dessa instruktioner fungerar nästan omodifierade med nästan alla datorer 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 med innehållsfilter. För detta kommer vi att behöva 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 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. Detta ä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 hemmakonfiguration med några bärbara datorer och smartphones, det kommer inte att ge de prestanda som krä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 påverka prestanda (beroende på storleken på blocklistan), kommer vi att använda Squid-cache för att kompensera detta resultat hit.

förutsättningar

1. Hallon Pi 3 med den senaste versionen av Raspbian OS installerat och tillgång till internet. Om du bara kommer igång med Raspberry Pi rekommenderar vi att du läser vår guide för hur du kommer igång med Raspberry Pi 3.

2. [Frivillig] 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 en hotspot krävs detta.

3. Fysisk tillgång till Raspberry Pi - På grund av den här artens art kan ett enda misstag i brandväggskonfigurationen låsa dig från 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 det tills allt är konfigurerat.

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 nu.

2. Få den förutsatt programvara som vi behöver:

sudo apt install 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 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ösenfrasen som används för att komma åt hotspot. jag använde beebom.com, men det rekommenderas att du ändrar det till ett starkt lösenfras som du väljer.

4. Nästa, vi kommer 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:

[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 gränssnittet 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 / network / interfaces. Det ser förmodligen ut något så här (betoning mitt):

[sourcecode] 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.confebrit/sourcecode]

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

[sourcecode] 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
netmask 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.confebrit/sourcecode]

Detta ställer in en statisk IP-adress 192.168.8.1 på wlan0. Kom ihåg den här adressen, som detta ä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 till 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 anger du 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 till en fil som heter /etc/iptables/rules.v4. Detta ser till att konfigurationen kvarstår över omstarter.

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

9. Efter omstart bör du kunna se det nyskapade RaspberryPiAP hotspot (såvida 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 få tillgång till internet.

Detta är allt du behöver göra för att behöva en grundläggande lågdrivna router. Om du vill konfigurera ett innehållsfilter också, läs vidare.

Ställ in innehållsfilter med E2guardian

E2guardian finns inte i Raspbian standardfö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 antagligen se några fel om paket som saknas när du installerar E2guardian. För att åtgärda detta, låt installationen slutföras och ange följande kommando:

sudo apt-get install -f

Använda innehållslistor

Det finns flera listor i / etc / e2guardian / listor katalogen. 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.

Låt oss som exempel anta att du vill blockera några populära sociala nätverk. Öppna / Etc / e2guardian / listor / bannedsitelist 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 E2guardian-tjänsten nu med kommandot sudo service e2guardian ladda om (du måste köra detta kommando varje gång du ändrar konfigurationsfilerna). Alla kunder som använder innehållsfiltret kan nu inte komma åt dessa webbplatser. Även mobilwebbplatserna (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 dömer inte), öppna / Etc / e2guardian / listor / bannedphraselist arkivera och hitta följande rad:

.Omfatta

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

#.Omfatta

Ladda om konfigurationen igen med sudo service e2guardian ladda om, och du är klar.

Konfigurera klienter

Nu när vår proxyserver är konfigurerad 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 är olika på alla operativsystem och enheter. Vi kommer emellertid att visa 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. Navigera till fönstret som öppnas anslutningar och klicka på LAN-inställningar.

Klicka här Avancerad, och gå in 192.168.8.1 som proxy-adress, och 8080 som hamn. Se till att Använd samma proxyserver för alla protokoll rutan är markerad. Klick OK.

Det är allt du behöver göra. De mest populära webbläsarna som Google Chrome och Firefox hämtar automatiskt systemproxyinställningarna.

Android

Gå till Systeminställningar> WiFi. Klicka nu och håll inne 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 för Pi 192.168.8.1. Under Proxyport, stiga på 8080, och tryck på Spara.

Nu kan du testa konfigurationen av proxy. Försök att gå till en webbplats i din svartlista - du kommer att se en "Access Denied" -sida som denna:

Bekräfta proxyanvändning

Hittills förlitar vi oss på att klienter spelar trevligt och använder internet genom innehållsfiltret. Naturligtvis händer detta sällan i den verkliga världen. Så för att tvinga alla klienter att gå igenom proxy, kör följande kommandon:

sudo iptables -A PREROUTING -t nat -p tcp - destination-port 80 -j REDIRECT --to-portar 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 omdirigerar automatiskt alla http (port 80) och https (port 443) trafik på hallon Pis hotspot till innehållsfilterproxy. Utan att konfigurera proxyinställningar på dina enheter kan de inte 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 proxy.

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 scenarier för användning

Ställa in ett tidsbaserat filter

Låt oss säga att du vill blockera de webbplatser vi nämnde i Använda innehållslistor avsnittet 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 det är en produktivitetsmardröm.

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

tid: 9 0 17 0 01234

Den här linjen 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 kommer att blockera de konfigurerade webbplatserna från 10:30 till 10:45 (20 45) på måndag (0), onsdag (2) och fredag ​​(4).

Att låta vissa IP-adresser förbikoppla proxy

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 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 av 192.168.8.2 Använd en av dessa inställningar på en Windows-maskin:

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 de två kommandona ovan 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äggskonfigur:

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

En viktig sak att komma ihåg är att du inte ska låta någon få veta de vitlistade IP-adresserna. Annars kan de helt enkelt ställa in sin enhet till den IP-adressen för att kringgå proxy.

Säkerhetsproblem

Eftersom din Raspberry Pi kommer att vara in- och utgångspunkten för all din kommunikation, är det viktigt att säkra det. 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 pekare och inte en omfattande lista över säkerhetsfallgropar. Mängden säkerhet kommer att bero på ditt nätverk (hem, små kontor etc.) och hur elakta 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 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 fliken, inaktivera alla tjänster som du inte behöver.

Ändra standardlösenordet

En färsk Raspbian-installation kommer med standardlösenordet 'hallon' för standardanvändaren 'pi'. Det rekommenderas att ändra detta till ett säkrare lösenord. För att ändra den, öppna en terminal kör detta kommando:

passwd

Ta bort skä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 webbfilter, behöver vi inte en bildskärm eller andra kringutrustning som en mus och tangentbord som är anslutet till den. Om du behöver ändra inställningar och sådant kan du alltid använda SSH eller ansluta en skärm och tangentbord efter behov.

Stäng av automatisk inloggning

Raspbian är konfigurerad för att automatiskt logga in med användaruppgifterna 'pi' utan att fråga om lösenord. Det här kan vara okej för ett skrivbord för allmänt bruk, men farligt för en router. Gå till om du vill inaktivera detta på Raspbian-skrivbordet Meny> Inställningar> Raspberry Pi-konfiguration. I Systemet -fliken framför Automatisk inloggning rubrik, avmarkera Logga in som användare 'pi' kryssruta.

I samma dialogruta rekommenderas det också 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 vill använda skrivbordet av någon anledning loggar du in med ditt användarnamn och kör startx kommando för att slå på det grafiska gränssnittet.

Felsökning vanliga problem

Gränssnitt Fortsätt 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 döpt till WLAN1, och vice versa. Detta är naturligtvis ett stort problem eftersom vi förlitar oss på att de har ett konsekvent namn på våra konfigurationsfiler. Så här gör du det konsekvent mellan omstarter:

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

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

Om du inte är säker på vilken MAC-adress som hör till vilket gränssnitt, koppla helt enkelt ur USB-WiFi-dongeln och kör kommandot igen. De wlan gränssnittet 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 rätt 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 == "lägg till", 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 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äll 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 in brandväggskonfigurationen, kör följande kommandon för att börja från början:

sudo iptables - flush sudo iptables - bord nat - flush sudo iptables - delete-chain sudo iptables - bord 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 OGSÅ: Hur man kör kommandon på Raspberry Pi via e-post

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

Det är allt på 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 ett steg känns för förvirrande, känn dig fri att ställa oss en fråga i kommentarerna nedan.




Ingen har kommenterat den här artikeln än.

Gadgetköpguider, tekniker som betyder något
Vi publicerar detaljerade guider för att köpa utrustning, skapar intressanta listor över de bästa produkterna på marknaden, täcker nyheter från teknikvärlden