Anbefalt, 2024

Redaksjonens

Slik bruker Raspberry Pi som ruter og innholdsfilter

Hvis du har barn i ditt hjem, har du kanskje følt behov for å blokkere visse uønskede nettsteder. Et annet vanlig problemområde er sosiale medier nettsteder - du kan føle at barn (og voksne) kaster bort for mye tid på Facebook, Twitter etc. og vil blokkere dem, eller i det minste gjøre dem tilgjengelige kun på bestemte tider av dagen.

For å gjøre dette mulig, trenger vi et ruter pluss innholdsfilter - et apparat som alle våre enheter, for eksempel bærbare datamaskiner, smarttelefoner og nettbrett, kobler til Internett. Dette apparatet opphever også nettstedene som disse enhetene får tilgang til, og blokkerer dem hvis de prøver å få tilgang til et svartelistet nettsted.

Det finnes kommersielle, brukervennlige innholdsfiltre tilgjengelig på markedet, men for oss DIY-typer er det ikke noe moro i det. Dermed vil vi få våre hender skitne og sette opp en Raspberry Pi for jobben. Vi valgte Raspberry Pi for dette prosjektet på grunn av sin lille størrelse og ubetydelig strømforbruk. Imidlertid vil disse instruksjonene fungere nesten umodifisert med nesten hvilken som helst datamaskin som kjører Debian Linux eller et derivat (Ubuntu, Mint etc.).

Ansvarsfraskrivelse : Denne veiledningen antar et middels erfaring med Linux, og en vilje til å feilsøke problemer hvis og når de oppstår. Tidligere erfaring med kommandolinjer og brannmurer er en bonus.

Hvordan det fungerer

maskinvare

Vi bruker Raspberry Pi 3 som et router cum innhold filter. For dette trenger vi to nettverksgrensesnitt på den - en til å koble til Internett, og den andre til å fungere som et WiFi-hotspot for at våre andre enheter skal koble til. Raspberry Pi 3 har en innebygd Ethernet-kontakt og WiFi-modul. Så i dette scenariet kan vi bruke en Ethernet-kabel ( eth0 ) til å koble til Internett, mens WiFi-modulen ( wlan0 ) vil fungere som et hotspot.

Selvfølgelig er det ikke alltid mulig å koble til Internett via Ethernet. I dette tilfellet trenger du en kompatibel USB WiFi-dongle ( wlan1 ) for å koble til Internett, mens den innebygde WiFi-modulen ( wlan0 ) vil fungere som et hotspot. Dette er konfigurasjonen som vi skal bruke i denne veiledningen.

Husk at mens en Raspberry Pi 3 hovedsakelig er tilstrekkelig for et hjemoppsett med noen bærbare datamaskiner og smarttelefoner, vil det ikke gi den ytelsen som trengs for et stort kontoroppsett . Se etter mer kompatibel maskinvare hvis mange kunder vil koble til innholdsfilteret ditt.

programvare

Vi vil bruke den utmerkede E2guardian til å fange opp og filtrere våre webforespørsler. Siden innholdsfiltrering kan ha en ytelsespåvirkning (avhengig av størrelsen på blokkerlisten), bruker vi blekksprutbufferen til å kompensere for denne ytelsen.

Forutsetninger

1. Raspberry Pi 3 med den nyeste versjonen av Raspbian OS installert, og tilgang til internett. Hvis du bare begynner med Raspberry Pi, anbefaler vi at du leser vår guide for hvordan du kommer i gang med Raspberry Pi 3.

2. [Valgfritt] USB WiFi Dongle - Dette er nødvendig hvis, og bare hvis du ikke kan koble din Raspberry Pi 3 til internett med en Ethernet-kabel. Hvis du planlegger å bruke WiFi for både tilkobling til internett og som et hotspot, er dette påkrevd.

3. Fysisk tilgang til Raspberry Pi - På grunn av naturen denne artikkelen kan en enkelt feil i brannmuren konfigurasjonen låse deg ut av Pi hvis du bruker den i hodeløs modus. Derfor anbefales det at du kobler til en skjerm, et tastatur og en mus mens du konfigurerer den til alt er satt opp.

Bruk Raspberry Pi som router

1. Koble Pi til Internett ved hjelp av Ethernet ( eth0 ). Hvis du bruker en USB WiFi-dongle (sannsynligvis wlan1 ), må du koble den til Internett. La den innebygde WiFi-modulen ( wlan0 ) som den er for nå.

2.forutsetningen programvare som vi trenger:

 sudo apt installer iptables iptables-vedvarende hostapd dnsmasq blekksprut3 

3. Vi vil sette opp hostapd slik at vår Pi kan fungere som en WiFi-hotspot . For dette opprett en konfigurasjonsfil ved hjelp av din favoritt tekstredigerer, for eksempel sudo nano /etc/hostapd/hostapd.conf, og lim inn innholdet fra vår GitHub-side.

Noen linjer som du kanskje vil endre i henhold til smak, er:

 ssid = RaspberryPiAP 

Denne linjen dikterer hva navnet på tilgangspunktet vil være. Jeg valgte RaspberryPiAP .

 wpa_passphrase = beebom.com 

Dette spesifiserer passordet som brukes til å få tilgang til hotspot. Jeg brukte beebom.com, men det anbefales å endre det til en sterk passord som du selv velger.

4. Neste, vil vi sette opp en DHCP-server ved hjelp av dnsmasq . Rediger konfigurasjonsfilen /etc/dnsmasq.conf, og legg til følgende linjer på slutten:

[Kilde] grensesnitt = lo, wlan0

no-DHCP-grensesnitt = lo

DHCP-område = 192.168.8.20, 192.168.8.254, 255.255.255.0, 12h [/ kilde]

Dette gir grensesnittet på wlan0 (den innebygde WiFi-modulen) ut IP-adresser til klienter i 192.168.8.20 til 192.168.8.254- serien.

5. Sett opp en statisk IP-adresse for den innebygde WiFi-modulen wlan0 . Åpne filen /etc/network/interfaces . Det ser sannsynligvis ut som dette (vekt min):

[kildekode] kildekatalog /etc/network/interfaces.d

auto lo
hvis det går igjen

iface eth0 inet manual

tillat-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

tillat-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Her finner du linjene i fet skrift som omhandler wlan0, og endrer dem slik at filen ser ut som følgende:

[kildekode] kildekatalog /etc/network/interfaces.d

auto lo
hvis det går igjen

iface eth0 inet manual

tillat-hotplug wlan0
iface wlan0 inet statisk
hostapd /etc/hostapd/hostapd.conf
adresse 192.168.8.1
netmask 255.255.255.0
tillat-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Dette setter opp en statisk IP-adresse 192.168.8.1 på wlan0. Husk denne adressen, da dette er adressen vi vil bruke til å kommunisere med vår Raspberry Pi senere .

6. Sett opp IP-videresending . Rediger filen /etc/sysctl.conf, og legg til følgende linje for den:

 net.ipv4.ip_forward = 1 

7. Nå skal vi konfigurere nettverksadresseoversettelse (NAT) i brannmuren. For å gjøre dette, skriv inn følgende 2 kommandoer:

 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 

Den første kommandoen setter opp NAT, mens den andre kommandoen lagrer vår nåværende brannmurkonfigurasjon til en fil som heter /etc/iptables/rules.v4 . Dette sørger for at konfigurasjonen fortsetter på tvers av omstart.

8. På dette tidspunkt, start opp din Raspberry Pi . Dette er for å sikre at alle endringene vi har gjort i konfigurasjonsfilene er funksjonelle.

9. Etter omstart, bør du kunne se det nyopprettede RaspberryPiAP hotspotet (med mindre du endret navnet i trinn 3) på andre enheter som bærbare datamaskiner og smarttelefoner. Du kan koble til den ved hjelp av passordet du oppgav, og få tilgang til internett.

Dette er alt du trenger å gjøre for hvis du trenger en grunnleggende, lavdrevet ruteren. Hvis du også vil opprette et innholdsfilter, les videre.

Sett opp innholdsfilter ved hjelp av E2guardian

E2guardian er ikke til stede i standard Raspbian-depotene. For å installere det, gå til prosjektets Github-side, og last ned filen som slutter i armhf.deb . Åpne nå Terminal, gå til nedlastingsmappen din (eller hvor du valgte å laste ned filen), og installer den:

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

Du vil sikkert se noen feil om manglende pakker når du installerer E2guardian. For å rette opp dette, la installasjonen være ferdig, og skriv inn følgende kommando:

 sudo apt-get install -f 

Bruke innholdslister

Det finnes flere lister i katalogen /etc/e2guardian/lists . Disse filene inkluderer bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist og mer. Disse filene er korrekt dokumentert med kommentarer. Ta en titt på dem for å bli kjent med deg selv.

Som et eksempel, la oss anta at du ønsker å blokkere noen populære sosiale nettverk . Åpne filen /etc/e2guardian/lists/bannedsitelist, og under SSL / CONNECT- blokkene (siden disse nettstedene bruker https i stedet for vanlig http ), legg til følgende linjer:

 facebook.com twitter.com reddit.com 

Oppdater E2guardian-tjenesten ved hjelp av kommandoen sudo service e2guardian reload ( du må kjøre denne kommandoen hver gang du endrer konfigurasjonsfilene ). Alle klienter som bruker innholdsfilteret, vil nå ikke kunne få tilgang til disse nettstedene. Selv de mobile nettstedene (f.eks. M.twitter.com) og dedikerte smarttelefonapplikasjoner vil ikke fungere.

E2guardian blokkerer også porno som standard . Hvis du ønsker å tillate det (hei, dømmer vi ikke), åpne filen /etc/e2guardian/lists/bannedphraselist, og finn følgende linje:

 .Inkludere 

Kommentere det ved å legge til en hash (# symbol) foran, slik at det ser slik ut:

 #.Inkludere 

Igjen, last opp konfigurasjonen med sudo service e2guardian reload, og du er ferdig.

Konfigurere klienter

Nå som vår proxy-server er satt opp, kan vi fortsette å konfigurere klientene. For å bruke innholdsfilteret må alle klienter være koblet til Rapberry Pi's hotspot, og konfigurert til å bruke proxyen. Konfigurere en proxy er forskjellig på tvers av alle operativsystemer og enheter. Vi vil imidlertid demonstrere hvordan du konfigurerer den på Windows og Android, siden disse er mer populære.

Windows

Gå til Kontrollpanel> Nettverk og Internett> Internettalternativer . I vinduet som åpnes, naviger til kategorien Tilkoblinger, og klikk på LAN-innstillinger .

Klikk her på Avansert, og skriv inn 192.168.8.1 som proxy-adressen og 8080 som port. Kontroller at Bruk samme proxy-server for alle protokoller er merket. Klikk på OK .

Det er alt du trenger å gjøre. Mest populære nettlesere som Google Chrome og Firefox vil automatisk hente inn proxyinnstillingene for systemet.

Android

Gå til Systeminnstillinger> WiFi . Trykk og hold nå Raspberry Pi-hotspotet, og velg Endre nettverk . Under Avanserte alternativer, angi proxy- alternativet til Manuell . Nå, under Proxy-vertsnavn, skriv inn IP-adressen til Pi 192.168.8.1 . Under Proxy-port, skriv inn 8080, og trykk på Lagre .

Du kan nå teste konfigurasjonen av proxyen. Prøv å gå til et nettsted i din svarteliste - du vil se en "Access Denied" -side som denne:

Håndheve proxybruk

Så langt er vi avhengige av at klienter leker fint og bruker internett gjennom innholdsfilteret. Selvfølgelig skjer dette sjelden i den virkelige verden. For å håndheve alle klienter for å gå gjennom proxyen, kjør følgende kommandoer:

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

Dette vil automatisk omdirigere all http (port 80) og https (port 443) trafikk på raspberry Pi's hotspot til innholdsfilterproxyen. Nå, uten å konfigurere proxy-innstillinger på enhetene dine, vil de ikke kunne få tilgang til sikre https- nettsteder som Facebook, Gmail, Twitter etc. i det hele tatt. Dette sørger for at alle som ønsker å koble til Pi-hotspotet ditt, må gå gjennom proxyen.

Dette er alt du trenger å vite for grunnleggende bruk av innholdsfilteret. Hvis du ønsker å lære noen avanserte funksjoner, les videre.

Avanserte bruksscenarier

Sette opp et tidsbasert filter

La oss si at du vil blokkere nettstedene vi nevnte i delen Bruke innholdslister over, men bare på bestemte tider av dagen . Jeg personlig foretrekker å blokkere Reddit, Facebook og Twitter i arbeidstiden (09:00 - 17:00) på hverdager fordi de er et produktiv mareritt.

Åpne filen /etc/e2guardian/lists/bannedsitelist, og legg til følgende linje:

 tid: 9 0 17 0 01234 

Denne linjen fungerer som følger - timeren starter klokken 9 (kl. 09.00) 0 (00 minutter), til 17 (5 pm i 24-timers format) 0 (00 minutter), fra 0 (mandag) til 4 (fredag).

La oss ta et annet eksempel:

 tid: 10 30 20 45 024 

Dette vil blokkere de konfigurerte nettstedene fra kl. 10.30 (10 30) til 8:45 (20 45) på mandag (0), onsdag (2) og fredag ​​(4).

Å la visse IP-adresser omgå proxyen

Det er mulig å la bestemte IP-adresser omgå innholdsfilteret. Dette kan konfigureres ved å konfigurere brannmuren . Du har kanskje lagt merke til at i vår dnsmasq.conf, setter vi bare hotspotet til å tildele IP-adresser fra 192.168.8.20 til 192.168.8.254 til klienter. Det betyr at adresser fra 192.168.8.2 til 192.168.8.19 ikke automatisk blir tildelt noen klient (vi kan ikke bruke 192.168.8.1 fordi det er hva våre Raspberry Pi selv bruker).

For å gjøre dette, må du først konfigurere en statisk IP på enheten du vil gi full tilgang til. For eksempel, for å konfigurere en statisk IP på 192.168.8.2 på en Windows-maskin, bruk disse innstillingene:

Nå, på din Raspberry Pi, kjør følgende kommandoer.

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

Nå, deaktiver bruk av proxy på enheten din, og prøv å åpne et forbudt nettsted. Du bør kunne åpne den. Hvis det er flere IP-adresser du vil legge til i hvitelisten, kjør du de to kommandoene ovenfor, men erstatt IP-adressen med den du vil ha. Når du er fornøyd med hvitelisten, kjør du følgende kommando for å lagre brannmurkonfigurasjonen din:

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

En viktig ting å huske på er at du ikke bør la noen få vite hviteliste IP-adresser. Ellers kan de ganske enkelt sette enheten til den IP-adressen for å omgå proxyen.

Sikkerhetsproblemer

Siden din Raspberry Pi blir inngangs- og utgangspunktet for all kommunikasjon, er det viktig å sikre det. Her er noen tips om hvordan du kan forbedre sikkerheten. Husk at disse er bare grunnleggende poeng og ikke en omfattende liste over sikkerhetsgruver. Mengden av sikkerhet vil avhenge av innholdet på nettverket ditt (hjemme, små kontor etc.) og hvor vanskelig brukerne er.

Deaktiver Unneeded Services

Siden dette er en ruter, er det best å bare kjøre de tjenestene vi trenger. Flere tjenester som kjører, betyr mer sårbarheter som potensielt kan utnyttes. Definitivt ikke bruk dette systemet som et vanlig skrivebord .

Gå til Meny> Innstillinger> Raspberry Pi-konfigurasjon . På fanen Grensesnitt, deaktiver alle tjenester som du ikke trenger.

Endre standardpassordet

En ny Raspbian installasjon leveres med standard passord 'bringebær' for standard bruker 'pi'. Det anbefales å endre dette til et sikrere passord. For å endre det, åpne en terminal kjøre denne kommandoen:

 passwd 

Fjern skjermen og andre eksterne enheter

Siden alt som kommer til å løpe på dette, er programvaren som kreves for å bruke den som en ruter og et webfilter, trenger vi ikke en skjerm eller andre eksterne enheter som en mus og et tastatur som er festet til den. Hvis du trenger å endre innstillinger og slik, kan du alltid bruke SSH, eller legge til en skjerm og et tastatur etter behov.

Slå av automatisk pålogging

Raspbian er konfigurert for automatisk å logge inn med brukerens legitimasjonsinformasjon for "pi" uten å be om passord. Dette kan være ok for en generell familiedisk, men farlig for en ruteren. For å deaktivere dette, på Raspbian-skrivebordet, gå til Meny> Innstillinger> Raspberry Pi-konfigurasjon . Merk av i avmerkingsboksen Innlogging som bruker 'pi' i kategorien System, foran innloggingsoversikten automatisk .

I samme dialogboks er det også tilrådelig å sette Boot- innstillingen til To CLI . Dette vil spare ressurser siden vi ikke trenger en GUI på en ruter. Hvis du vil bruke skrivebordet uansett, logg inn med brukernavnet ditt, og kjør startx kommandoen for å slå på grafisk grensesnitt.

Feilsøking vanlige problemer

Grensesnitt fortsetter å bli omdøpt

Dette er svært vanlig hvis du bruker to trådløse grensesnitt på Pi. Hvis du bruker Ethernet til å koble Pi til Internett, kan du sikkert ignorere denne delen . Problemet er at både de trådløse grensesnittene ( wlan0 og wlan1 ) noen ganger bytter navn etter en omstart. Det vil si, den innebygde WiFi-modulen wlan0 blir omdøpt til wlan1, og omvendt. Dette er selvfølgelig et stort problem siden vi stoler på at de har et konsistent navn for våre konfigurasjonsfiler. Slik gjør du det konsekvent på tvers av omstart:

1. Finn ut MAC-adressen til grensesnittene dine . Kjør kommandoen ifconfig | grep HWaddr ifconfig | grep HWaddr på Raspberry Pi. Du vil se en utgang som følgende:

Merk ned teksten til høyre for ordet 'HWaddr' i wlan0 og wlan1- delen. Du kan trygt ignorere eth0- delen. Dette er MAC-adressene til de trådløse grensesnittene.

Hvis du ikke er sikker på hvilken MAC-adresse som tilhører hvilket grensesnitt, kobler du nettopp USB WiFi-donglen og kjører kommandoen igjen. WLAN- grensesnittet som kommer opp nå er ditt innebygde WiFi-grensesnitt, mens den andre er USB.

2. Opprett en ny fil /etc/udev/rules.d/10-network.rules ved hjelp av din favoritt tekstredigerer. For eksempel :

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

3. Skriv inn følgende tekst i denne filen. Erstatt xx: xx: xx: xx etc. med riktig MAC-adresse :

[kildekode] # Konfigurer den innebygde WiFi-modulen som wlan0. Erstatt xx: xx: xx etc. med
# innebygd modulens MAC-adresse
SUBSYSTEM == "net", ACTION == "add", ATTR {adresse} == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"

# Sett opp USB WiFi dongle som wlan1. Erstatt yy: yy: yy etc. med
# USB dongle MAC-adresse
SUBSYSTEM == "net", ACTION == "add", ATTR {adresse} == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ kildekode]

Kontroller at MAC-adressen til den innebygde WiFi-grensesnittet tilsvarer wlan0, og USB WiFi til wlan1 siden det er konferansen vi følger i denne håndboken.

4. Start din Raspberry Pi på nytt. Grensesnittene dine starter med riktig navn nå.

Tilbakestill brannmurkonfigurasjon

Et annet vanlig problem er en dårlig konfigurert brannmur. Avhengig av nettverkskonfigurasjonen kan det ta flere forsøk før du får brannmuren til høyre. Hvis du til enhver tid tror at du kanskje har slått opp brannmurkonfigurasjonen, kjør følgende kommandoer for å starte fra begynnelsen:

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

Dette vil slette all brannmurkonfigurasjon. Du kan nå begynne å konfigurere brannmuren fra bunnen av. Når du er fornøyd, kjør kommandoen sudo iptables-save | sudo tee /etc/iptables/rules.v4 sudo iptables-save | sudo tee /etc/iptables/rules.v4 å gjøre konfigurasjonen permanent.

Bruk din Raspberry Pi som ruter og innholdsfilter

Det er alt på å gjøre din Raspberry Pi til en potent router pluss innholdsfilter-proxy. Du kan få de eksakte konfigurasjonsfilene vi brukte til oppsettet på vår GitHub-side. Gi oss beskjed om hvordan det fungerer for deg. Hvis noe ikke virker som forventet, eller hvis et trinn føles for forvirrende, kan du spørre oss et spørsmål i kommentarfeltet nedenfor.

Top