Zalecane, 2024

Wybór Redakcji

Jak korzystać z Raspberry Pi jako routera i filtra zawartości

Jeśli masz dzieci w domu, możesz odczuwać potrzebę blokowania niektórych niepożądanych witryn. Innym częstym problemem są serwisy społecznościowe - możesz mieć wrażenie, że dzieci (i dorośli) marnują zbyt dużo czasu na Facebooku, Twitterze itp. I chcą je blokować, lub przynajmniej udostępniać je tylko o określonych porach dnia.

Aby było to możliwe, potrzebujemy routera z filtrem treści - urządzenia, dzięki któremu wszystkie nasze urządzenia, takie jak laptopy, smartfony i tablety, łączą się z Internetem. To urządzenie przechwytuje również witryny internetowe, na które te urządzenia uzyskują dostęp, i blokuje je, gdy próbują uzyskać dostęp do czarnej witryny.

Dostępne są komercyjne, gotowe do użycia filtry treści dostępne na rynku, ale dla nas typy DIY nie ma w tym żadnej zabawy. W ten sposób pobrudzimy sobie ręce i przygotujemy dla tego Raspberry Pi. Wybraliśmy Raspberry Pi do tego projektu ze względu na jego niewielkie rozmiary i znikome zużycie energii. Jednak instrukcje te będą działać prawie niezmodyfikowane przy prawie każdym komputerze z systemem Debian Linux lub pochodną (Ubuntu, Mint itp.).

Zastrzeżenie : ten przewodnik zakłada średni poziom doświadczenia z Linuksem i gotowość do rozwiązywania problemów, jeśli i kiedy się pojawią. Wcześniejsze doświadczenie z liniami poleceń i zaporami ogniowymi to bonus.

Jak to działa

Sprzęt komputerowy

Będziemy używać Raspberry Pi 3 jako filtra zawartości routera. W tym celu potrzebujemy dwóch interfejsów sieciowych - jednego do połączenia z Internetem, a drugiego do działania jako hotspot WiFi, z którym będą mogły się łączyć nasze inne urządzenia. Raspberry Pi 3 ma wbudowane gniazdo Ethernet i moduł WiFi. W tym scenariuszu możemy użyć kabla Ethernet ( eth0 ) do połączenia z Internetem, podczas gdy moduł WiFi ( wlan0 ) będzie działał jako hotspot.

Oczywiście łączenie się z Internetem za pomocą sieci Ethernet nie zawsze jest możliwe. W takim przypadku do połączenia z Internetem będzie potrzebny kompatybilny klucz USB WiFi ( wlan1 ), natomiast wbudowany moduł WiFi ( wlan0 ) będzie działał jako hotspot. Jest to konfiguracja, której użyjemy w tym przewodniku.

Należy pamiętać, że chociaż Raspberry Pi 3 jest w większości wystarczający do konfiguracji domowej z kilkoma laptopami i smartfonami, nie zapewni wydajności wymaganej do dużej konfiguracji biurowej . Spójrz na bardziej wydajny sprzęt, jeśli wielu klientów będzie łączyć się z filtrem treści.

Oprogramowanie

Będziemy używać doskonałego E2guardian do przechwytywania i filtrowania naszych żądań internetowych. Ponieważ filtrowanie zawartości może mieć wpływ na wydajność (w zależności od rozmiaru listy bloków), będziemy używać pamięci podręcznej Squid, aby zrównoważyć to działanie wydajnościowe.

Wymagania wstępne

1. Raspberry Pi 3 z zainstalowaną najnowszą wersją Raspbian OS i dostępem do Internetu. Jeśli zaczynasz dopiero od Raspberry Pi, zalecamy przeczytanie naszego przewodnika, jak rozpocząć korzystanie z Raspberry Pi 3.

2. [Opcjonalnie] Dongle USB WiFi - Jest to konieczne, jeśli i tylko wtedy, gdy nie można podłączyć Raspberry Pi 3 do Internetu za pomocą kabla Ethernet. Jeśli planujesz używać Wi-Fi zarówno do połączenia z Internetem, jak i hotspotu, jest to wymagane.

3. Fizyczny dostęp do Raspberry Pi - ze względu na naturę tego artykułu, pojedynczy błąd w konfiguracji firewalla może zablokować cię z twojego Pi, jeśli używasz go w trybie bezgłowym. Dlatego zaleca się podłączenie monitora, klawiatury i myszy podczas konfigurowania, aż wszystko zostanie skonfigurowane.

Użyj Raspberry Pi jako Routera

1. Połącz swoje Pi z Internetem za pomocą Ethernetu ( eth0 ). Jeśli używasz klucza USB WiFi (prawdopodobnie wlan1 ), podłącz go do Internetu. Pozostaw wbudowany moduł WiFi ( wlan0 ), jak na razie.

2. Uzyskaj wymagane oprogramowanie wstępne :

 sudo apt install iptables iptables-persistent hostapd dnsmasq squid3 

3. Skonfigurujemy hostapd, aby nasze Pi mogło działać jako hotspot WiFi . W tym celu utwórz plik konfiguracyjny za pomocą ulubionego edytora tekstu, na przykład sudo nano /etc/hostapd/hostapd.conf i wklej zawartość z naszej strony GitHub.

Niektóre linie, które możesz zmodyfikować zgodnie ze smakiem, to:

 ssid = RaspberryPiAP 

Ta linia określa, jaka będzie nazwa punktu dostępu. Wybrałem RaspberryPiAP .

 wpa_passphrase = beebom.com 

Określa hasło używane do uzyskania dostępu do hotspotu. Korzystałem z beebom.com, ale zaleca się zmienić go na silne hasło do wyboru.

4. Następnie skonfigurujemy serwer DHCP przy pomocy dnsmasq . Edytuj plik konfiguracyjny /etc/dnsmasq.conf i dodaj na końcu następujące wiersze:

[kod źródłowy] interface = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20, 192.168.8.254, 255, 255, 25, 25, 0, 12h [/ kod źródłowy]

Dzięki temu interfejs na wlan0 (wbudowany moduł WiFi) przekazuje adresy IP klientom z zakresu od 192.168.8.20 do 192.168.8.254 .

5. Skonfiguruj statyczny adres IP wbudowanego modułu wlan0 . Otwórz plik /etc/network/interfaces . Prawdopodobnie wygląda to mniej więcej tak (nacisk mój):

[kod źródłowy] katalog-źródłowy /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]

W tym miejscu odszukaj pogrubione linie, obsługując wlan0, i zmień je, aby plik wyglądał następująco:

[kod źródłowy] katalog-źródłowy /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
adres 192.168.8.1
maska ​​sieci 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Spowoduje to ustawienie statycznego adresu IP 192.168.8.1 na wlan0. Zapamiętaj ten adres, ponieważ jest to adres, którego użyjemy do komunikacji z naszym Raspberry Pi później .

6. Teraz skonfiguruj przekazywanie IP . Zmodyfikuj plik /etc/sysctl.conf i dodaj do niego następujący wiersz:

 net.ipv4.ip_forward = 1 

7. Teraz skonfigurujemy translację adresów sieciowych (NAT) w naszej zaporze ogniowej. Aby to zrobić, wprowadź następujące 2 polecenia:

 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 

Pierwsze polecenie ustawia NAT, a drugie polecenie zapisuje naszą obecną konfigurację firewalla do pliku o nazwie /etc/iptables/rules.v4 . Dzięki temu konfiguracja będzie się powtarzać po ponownym uruchomieniu.

8. W tym momencie zrestartuj swoje Raspberry Pi . Ma to na celu zapewnienie, że wszystkie zmiany dokonane w plikach konfiguracyjnych są funkcjonalne.

9. Po ponownym uruchomieniu powinieneś być w stanie zobaczyć nowo utworzony hotspot RaspberryPiAP (chyba że zmieniłeś nazwę w punkcie 3) na innych urządzeniach, takich jak laptopy i smartfony. Możesz połączyć się z nim przy użyciu podanego hasła i uzyskać dostęp do Internetu.

To wszystko, co musisz zrobić, jeśli potrzebujesz podstawowego, niskonapięciowego routera. Jeśli chcesz skonfigurować filtr treści, czytaj dalej.

Skonfiguruj filtr zawartości za pomocą E2guardian

E2guardian nie jest obecny w domyślnych repozytoriach Raspbian. Aby go zainstalować, przejdź do strony Github projektu i pobierz plik kończący się w armhf.deb . Teraz otwórz Terminal, przejdź do folderu Downloads (lub gdziekolwiek chcesz pobrać plik) i zainstaluj go:

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

Prawdopodobnie zobaczysz kilka błędów dotyczących brakujących pakietów podczas instalacji E2guardian. Aby to naprawić, zakończ instalację i wprowadź następujące polecenie:

 sudo apt-get install -f 

Używanie list zawartości

W katalogu /etc/e2guardian/lists znajduje się kilka list. Pliki te obejmują listę bannedextensionlist, bannediplist, bannedphraselist, bannedslist, bannedurllist, exceptionlist i więcej. Pliki te są odpowiednio udokumentowane za pomocą komentarzy. Przyjrzyj się im, aby się zapoznać.

Załóżmy na przykład, że chcesz zablokować niektóre popularne sieci społecznościowe . Otwórz /etc/e2guardian/lists/bannedsitelist i pod Blanket SSL / CONNECT (ponieważ te witryny używają https zamiast zwykłego http ), dodaj następujące linie:

 facebook.com twitter.com reddit.com 

Teraz ponownie załaduj usługę E2guardian za pomocą polecenia sudo service e2guardian reload ( będziesz musiał uruchomić to polecenie za każdym razem, gdy modyfikujesz pliki konfiguracyjne ). Wszyscy klienci korzystający z filtru treści nie będą teraz mogli uzyskać dostępu do tych witryn. Nawet witryny mobilne (np. M.twitter.com) i dedykowane aplikacje na smartfony nie będą działać.

E2guardian domyślnie blokuje również pornografię . Jeśli chcesz na to zezwolić (hej, nie oceniamy), otwórz /etc/e2guardian/lists/bannedphraselist i znajdź następujący wiersz:

 .Zawierać 

Skomentuj to, dodając hash (symbol #) na wierzchu, aby wyglądał tak:

 #.Zawierać 

Ponownie załaduj konfigurację za pomocą sudo service e2guardian reload i gotowe.

Konfigurowanie klientów

Po skonfigurowaniu naszego serwera proxy możemy przejść do konfiguracji klientów. Aby korzystać z filtru treści, wszyscy klienci muszą być podłączeni do hotspotu Rapberry Pi i skonfigurowani do korzystania z serwera proxy. Konfiguracja proxy jest różna we wszystkich systemach operacyjnych i urządzeniach. Jednak zademonstrujemy, jak skonfigurować go w systemach Windows i Android, ponieważ są one bardziej popularne.

Windows

Przejdź do Panel sterowania> Sieć i Internet> Opcje internetowe . W otwartym oknie przejdź do karty Połączenia i kliknij Ustawienia sieci LAN .

Tutaj kliknij Zaawansowane i wprowadź 192.168.8.1 jako adres proxy, a 8080 jako port. Upewnij się, że pole wyboru Użyj tego samego serwera proxy dla wszystkich protokołów jest zaznaczone. Kliknij OK .

To wszystko, co musisz zrobić. Najpopularniejsze przeglądarki internetowe, takie jak Google Chrome i Firefox, automatycznie przyjmą ustawienia proxy systemu.

Android

Przejdź do Ustawienia systemu> WiFi . Teraz dotknij i przytrzymaj hotspot Raspberry Pi i wybierz Modyfikuj sieć . W obszarze Opcje zaawansowane ustaw opcję Proxy na Ręcznie . Teraz, pod Proxy hostname, wprowadź adres IP Pi 192.168.8.1 . W obszarze Port proxy wpisz 8080 i dotknij opcji Zapisz .

Możesz teraz przetestować konfigurację proxy. Spróbuj przejść do witryny na twojej czarnej liście - zobaczysz stronę "Odmowa dostępu":

Wymuszanie użycia proxy

Do tej pory polegamy na tym, że gracze ładnie grają i korzystają z Internetu poprzez filtr treści. Oczywiście zdarza się to rzadko w realnym świecie. Aby wymusić na wszystkich klientach przejście przez serwer proxy, uruchom następujące polecenia:

 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 80 -j REDIRECT - do-portów 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 443 -j REDIRECT --to- porty 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4 

Spowoduje to automatyczne przekierowanie całego ruchu HTTP (port 80) i https (port 443) do hotspotu raspberry Pi na serwer proxy filtru treści. Teraz, bez konfigurowania ustawień proxy na twoich urządzeniach, nie będą oni mogli uzyskać dostępu do bezpiecznych witryn https, takich jak Facebook, Gmail, Twitter itp. Dzięki temu każdy, kto chce połączyć się z hotspotem Pi, musi przejść przez proxy.

To wszystko, co musisz wiedzieć o podstawowym użyciu filtra treści. Jeśli chcesz nauczyć się zaawansowanych funkcji, czytaj dalej.

Zaawansowane scenariusze użycia

Konfigurowanie filtra opartego na czasie

Załóżmy, że chcesz zablokować witryny wymienione w sekcji Korzystanie z list treści powyżej, ale tylko o określonych porach dnia . Osobiście wolę blokować Reddit, Facebook i Twitter w godzinach pracy (9: 00-17: 00) w dni powszednie, ponieważ są one koszmarem produktywności.

Otwórz /etc/e2guardian/lists/bannedsitelist i dodaj do niego następujący wiersz:

 czas: 9 0 17 0 01234 

Linia ta działa w następujący sposób: licznik rozpoczyna się o godzinie 9 (9 rano) 0 (00 minut), do 17 (godzina 17:00 w formacie 24-godzinnym) 0 (00 minut), od 0 (poniedziałek) do 4 (piątek).

Weźmy inny przykład:

 czas: 10 30 20 45 024 

Spowoduje to zablokowanie skonfigurowanych witryn od 10:30 (10 30) do 20:45 (20 45) w poniedziałek (0), środę (2) i piątek (4).

Pozwalanie niektórym adresom IP Omijać serwer proxy

Możliwe jest, że niektóre adresy IP omijają filtr treści. Można to skonfigurować, konfigurując zaporę ogniową . Być może zauważyłeś, że w naszym dnsmasq.conf ustawiamy tylko hotspot, aby przypisać adresy IP z 192.168.8.20 do 192.168.8.254 klientom. Oznacza to, że adresy od 192.168.8.2 do 192.168.8.19 nie będą automatycznie przypisywane do żadnego klienta (nie możemy użyć 192.168.8.1, ponieważ to właśnie wykorzystuje nasze Raspberry Pi).

Aby to zrobić, najpierw skonfiguruj statyczny adres IP na urządzeniu, któremu chcesz przyznać pełny dostęp. Na przykład, aby skonfigurować statyczny adres IP 192.168.8.2 na komputerze z systemem Windows, użyj następujących ustawień:

Teraz, na twoim Raspberry Pi, uruchom następujące polecenia.

 sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j POWRÓT sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j POWRÓT 

Teraz wyłącz używanie proxy na swoim urządzeniu i spróbuj otworzyć zablokowaną stronę. Powinieneś być w stanie to otworzyć. Jeśli istnieje więcej adresów IP, które chcesz dodać do białej listy, uruchom ponownie powyższe dwie komendy, ale zastąp adres IP tym, który chcesz. Gdy będziesz zadowolony z białej listy, uruchom następujące polecenie, aby zapisać konfigurację zapory:

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

Jedną z ważnych rzeczy, o których należy pamiętać, jest to, że nie należy nikomu podawać adresów IP umieszczonych na białej liście. W przeciwnym razie mogą po prostu ustawić swoje urządzenie na ten adres IP, aby ominąć proxy.

Zagrożenia bezpieczeństwa

Ponieważ twój Raspberry Pi będzie punktem wejścia i wyjścia dla wszystkich twoich komunikatów, ważne jest, aby to zabezpieczyć. Oto kilka wskazówek, jak poprawić bezpieczeństwo. Należy pamiętać, że są to tylko podstawowe wskazówki, a nie wyczerpująca lista pułapek bezpieczeństwa. Wysokość zabezpieczenia zależeć będzie od rodzaju sieci (domu, małego biura itp.) Oraz od złośliwości użytkowników.

Wyłącz niepotrzebne usługi

Ponieważ jest to router, najlepiej jest uruchamiać tylko te usługi, które są nam potrzebne. Więcej uruchomionych usług oznacza więcej luk w zabezpieczeniach, które mogą potencjalnie zostać wykorzystane. Zdecydowanie nie należy używać tego systemu jako zwykłego pulpitu .

Idź do Menu> Preferencje> Konfiguracja Raspberry Pi . Na karcie Interfejsy wyłącz wszystkie usługi, których nie potrzebujesz.

Zmień domyślne hasło

Świeża instalacja Raspbian zawiera domyślne hasło "malina" dla domyślnego użytkownika "pi". Zaleca się zmienić to na bardziej bezpieczne hasło. Aby to zmienić, otwórz terminal, aby uruchomić to polecenie:

 passwd 

Usuń monitor i inne urządzenia peryferyjne

Ponieważ wszystko, co będzie działało na tym Pi, jest oprogramowaniem wymaganym do używania go jako routera i filtra internetowego, nie potrzebujemy monitora ani innych urządzeń peryferyjnych, takich jak mysz i klawiatura podłączona do niego. Jeśli musisz zmienić ustawienia i takie, możesz zawsze korzystać z SSH lub dołączyć monitor i klawiaturę w razie potrzeby.

Wyłącz automatyczne logowanie

Raspbian jest skonfigurowany do automatycznego logowania się przy użyciu poświadczeń użytkownika pi bez pytania o hasło. Może to być dobre dla ogólnego pulpitu rodziny, ale niebezpieczne dla routera. Aby wyłączyć to, na pulpicie Raspbian, przejdź do Menu> Preferencje> Konfiguracja Raspberry Pi . Na karcie System, przed nagłówkiem Automatyczne logowanie, odznacz pole wyboru Zaloguj się jako użytkownik "pi" .

W tym samym oknie dialogowym wskazane jest również ustawienie ustawienia Boot na To CLI . Pozwoli to zaoszczędzić zasoby, ponieważ nie potrzebujemy GUI na routerze. Jeśli chcesz z dowolnego powodu korzystać z pulpitu, zaloguj się przy użyciu swojej nazwy użytkownika i uruchom polecenie startx aby włączyć interfejs graficzny.

Rozwiązywanie typowych problemów

Interfejsy Keep Getting Renamed

Jest to bardzo częste, jeśli używasz dwóch bezprzewodowych interfejsów w twoim Pi. Jeśli używasz Ethernet do podłączenia Pi do Internetu, możesz spokojnie zignorować tę sekcję . Problem polega na tym, że oba interfejsy bezprzewodowe ( wlan0 i wlan1 ) czasami wymieniają nazwy po ponownym uruchomieniu komputera. Oznacza to, że wbudowany moduł WiFi wlan0 zostaje zmieniony na wlan1 i na odwrót. Jest to oczywiście duży problem, ponieważ polegamy na tym, że mają spójną nazwę dla naszych plików konfiguracyjnych. Oto, jak sprawić, by był spójny podczas restartu:

1. Znajdź adres MAC twoich interfejsów . Uruchom komendę ifconfig | grep HWaddr ifconfig | grep HWaddr na twoim Raspberry Pi. Zobaczysz wynik podobny do następującego:

Zanotuj tekst po prawej stronie słowa "HWaddr" w sekcji wlan0 i wlan1 . Możesz spokojnie zignorować sekcję eth0 . Są to adresy MAC twoich bezprzewodowych interfejsów.

Jeśli nie masz pewności, który adres MAC należy do którego interfejsu, po prostu odłącz klucz USB WiFi i ponownie uruchom komendę. Interfejs WLAN, który pojawi się teraz, to wbudowany interfejs WiFi, a drugi to port USB.

2. Utwórz nowy plik /etc/udev/rules.d/10-network.rules za pomocą ulubionego edytora tekstu. Na przykład :

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

3. Wprowadź następujący tekst w tym pliku. Zastąp xx: xx: xx: xx itd. Odpowiednim adresem MAC :

[kod źródłowy] # Ustaw wbudowany moduł WiFi jako wlan0. Zamień xx: xx: xx itd. Na
# Adres MAC wbudowanego modułu
PODSYSTEM == "netto", AKCJA == "dodaj", ATTR {adres} == "xx: xx: xx: xx: xx: xx", NAZWA = "wlan0"

# Skonfiguruj klucz USB WiFi jako wlan1. Zamień yy: yy: yy itp. Na
# Adres MAC klucza USB
PODSYSTEM == "netto", AKCJA == "dodaj", ATTR {adres} == "yy: yy: yy: yy: yy: yy", NAZWA = "wlan1" [/ kod źródłowy]

Upewnij się, że wbudowany adres MAC interfejsu Wi-Fi odpowiada wlan0, a USB WiFi do wlan1, ponieważ jest to konwencja, którą przestrzegamy w tym przewodniku.

4. Zrestartuj swoje Raspberry Pi. Twoje interfejsy zaczną teraz od poprawnej nazwy.

Resetowanie konfiguracji zapory

Innym częstym problemem jest źle skonfigurowana zapora ogniowa. W zależności od konfiguracji sieci może zająć kilka prób, zanim uzyskasz poprawną zaporę. Jeśli w którymś momencie myślisz, że mogłeś uszkodzić konfigurację zapory sieciowej, uruchom następujące polecenia, aby rozpocząć od zera:

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

Spowoduje to usunięcie całej konfiguracji zapory. Możesz teraz rozpocząć konfigurowanie zapory od początku. Gdy będziesz zadowolony, uruchom polecenie sudo iptables-save | sudo tee /etc/iptables/rules.v4 sudo iptables-save | sudo tee /etc/iptables/rules.v4 aby konfiguracja stała.

Użyj swojego Raspberry Pi jako routera i filtru zawartości

To wszystko sprawia, że ​​Raspberry Pi staje się silnym routerem i proxy filtru treści. Możesz uzyskać dokładne pliki konfiguracyjne, które wykorzystaliśmy w naszej konfiguracji na naszej stronie GitHub. Daj nam znać, jak to działa. Jeśli coś nie działa zgodnie z oczekiwaniami lub krok wydaje się zbyt mylący, możesz zadać nam pytanie w sekcji komentarzy poniżej.

Top