Używasz Raspberry Pi jako routera?

Czy ktoś używał swojego Raspberry Pi jako urządzenia rutującego?

Głównie chcę go używać do monitorowania mojej sieci, a to byłoby wspaniale, gdyby miało wejście i wyjście Ethernet, ale tak nie jest, więc zastanawiam się, czy bardzo efektywne jest monitorowanie sieci przez wejście Ethernet, a następnie użycie klucza USB jako routera Wi-Fi. ktoś zrobił coś takiego? Czy to znacznie spowalnia Internet?

Komentarze

  • Zależy od szybkości twojego połączenia internetowego. Moje to 100 Mb, więc ' na pewno by to spowolniło;)
  • Mam ' połączenie internetowe o szybkości 30 Mb / s, i w tej chwili przy ruchu 5 Mb / s, moja wbudowana raspberry pi z snortem zużywa ~ 50-95% procesora i 85% pamięci. Moja konfiguracja nie jest jeszcze dostrojona, ale chcę pokazać rzeczywiste liczby.
  • czy ktoś nie ma, jak działa alokacja złej przepustowości z niestandardowym routerem korzystającym z raspberry pi? na przykład mam sp Ze względu na łącze internetowe 3Mbps mam 10 użytkowników. czy możesz wyjaśnić, w jaki sposób zostanie podzielony? prędkość 3 Mb / s. Dzięki. Nadzieję, że rozumiesz. 🙂
  • Witaj kirbs. Proszę powstrzymać się od zadawania pytań na inne pytanie. Zamiast tego otwórz nowe pytanie, używając linku Zadaj pytanie u góry strony. Dziękuję.
  • Może to? learn.adafruit.com/…

Odpowiedź

Używałem mojego modelu B jako routera z kształtowaniem ruchu, używając tylko jednego portu Ethernet, z którym jest dostarczany. Oto szybkie i proste wyjaśnienie, jak :

  1. Włącz przekazywanie IPv4 , aby Twoje Pi działało jak router, przekazując wszelki ruch, który otrzymuje.
  2. Skonfiguruj Pi ze statyczną konfiguracją sieci, aby nie miały na niego wpływu sugerowane poniżej zmiany DHCP. Oto zawartość mojego /etc/network/interfaces jako źródła:

    # pi@flux:/home/pi/projects/adsl/rrdlogger (master *) # cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.1 netemask 255.255.255.0 gateway 192.168.1.254 # IP of my ADSL router box allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp 
  3. Teraz zmień ustawienia DHCP sieci w taki sposób, że domyślną bramą / routerem jest Twoje Pi. To prawdopodobnie oznacza zmianę ustawień w istniejącym ADSL routera. W powyższym przykładzie adres IP mojego Pi to 192.168.1.1.

Gdy Twoje urządzenia ponownie połączą się z sieć, powiedzą im, że twoje Pi jest ich bramą do Internetu i cały ruch związany z Internetem zostanie do niego wysłany. Twoje Pi z kolei przekaże cały ten ruch do twojego zwykłego routera. Aby zmiany zaczęły obowiązywać, może być konieczne odłączenie, a następnie ponowne podłączenie urządzeń.

Teraz możesz utworzyć lub zainstalować narzędzie do monitorowania, takie jak vnstat .

Kształtowanie ruchu

Jeśli chodzi o kształtowanie ruchu, oto kolejny szybki przewodnik, w którym wykorzystam mój własny wariant wondershaper .

Aby to było przydatne, musisz wiedzieć, jak szybkie jest Twoje połączenie internetowe. Zwykle można to znaleźć w (oryginalnym ) interfejsu sieciowego routera, ale w przypadku niepowodzenia można uzyskać oszacowanie za pomocą testu speedtestu .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 wydrukuje aktualny stan kształtowania ruchu. Oczywiście oczekiwany stan to brak kształtowania, co oznacza, że „obowiązuje jedna reguła o nazwie pfifo_fast:

    • (eth0 to nazwa przewodowej karty sieciowej w modelu B. Zobacz ifconfig, aby zapoznać się z nazwami interfejsów w systemie)
    # pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 
  4. sudo ./wondershaper eth0 3000 370, gdzie:

    • 3000 to prędkość łącza w dół mojego połączenia internetowego w kbit . Tak więc 3Mbit == 3000kbit
    • 370 to prędkość wysyłania mojego połączenia internetowego, znowu w kbitach.
  5. sudo ./wondershaper eth0 powinno teraz pokazywać znacznie więcej danych wyjściowych:

    # pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 3459453 ctokens: 540531 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 540531 ctokens: 540531 class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 813000 ctokens: 813000 class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2702687 ctokens: 2702687 class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 15 borrowed: 0 giants: 0 tokens: 654609 ctokens: 1250 

Twój ruch wychodzący w sieci jest teraz kształtowany przez Twoje Pi, a ruch przychodzący jest nieznacznie ograniczany, aby zapewnić, że Pi , a nie oryginalna skrzynka routingu, ma kontrolę nad ruchem.

Aby wyłączyć kształtowanie, po prostu uruchom sudo ./wondershaper eth0 clear. Możesz zmienić stawki łącza w górę i w dół bez uprzedniego czyszczenia , ale to nie boli.

Aktualizacja: Musisz także wyłączyć przesyłanie przekierowania ICMP , ponieważ potrzebujemy, aby cały ruch przechodził przez Pi, aby możliwe było kształtowanie.Okazuje się, że jądro Linuksa jest wystarczająco inteligentne, aby dowiedzieć się, że klienci w Twojej sieci domowej mogą rozmawiać bezpośrednio ze skrzynką ADSL, zamiast odbijać ruch przez Pi, i mówi im to przy każdej okazji. Klienci następnie wysyłają swój ruch bezpośrednio do skrzynki ADSL, a Pi nie ma szansy go ukształtować. Wyłącz go w locie w ten sposób (utracone przy następnym ponownym uruchomieniu):

echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects 

Zaktualizuj następujące elementy, aby ustawić to podczas rozruchu: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Podziękowania dla https://unix.stackexchange.com/a/58081/22537 za tę wskazówkę)

Moje osobiste notatki mogą Cię również zainteresować na temat konfigurowania bramy Linuksa: http://www.robmeerman.co.uk/unix/gateway

Komentarze

  • jak ustawić nazwę sieci Wi-Fi i hasło, z którymi mogą się łączyć inne urządzenia?
  • Świetny przewodnik. Mam pytanie dotyczące Twojego wondershaper jednak sugestia: czy jest to limit na klienta czy ogólnie?
  • @fommil: Mój przewodnik powyżej zakłada, że nadal używasz modemu / routera / punktu dostępu Wi-Fi, który dostałeś od dostawcy Internetu, ale skonfiguruj go tak, że wszyscy klienci, którzy się łączą, otrzymają powiadomienie ” Wyślij ruch do Pi „. Zwykle robi się to przez wprowadzenie adresu IP Pi ' s (statycznego!) W ustawieniach DHCP twojego ISP. Zwykle w polu o nazwie ” Brama „, ” Brama domyślna „, a może ” Trasa domyślna „.
  • @Bob: Liczby, wprowadź sumę dla twojego łącza internetowego. Cudowny skrypt niż próby sprawiedliwego udostępnienia tego wszystkim klientom na podstawie popytu . Jeśli więc tylko jeden klient korzysta z internetu, powinien uzyskać z niego 100%. Jeśli inny klient się uruchomi, po chwili ” ustalania czasu ” (~ 10 sekund) skończy po 50%, i tak dalej.
  • Idealnie. Tylko uwaga dla @fommil, żaden z moich routerów (i zakładam, że wiele innych jest takich samych) nie zapewnia łatwego sposobu ustawienia bramy przypisanej przez DHCP. Skończyło się na tym, że wyłączyłem DHCP na routerze i skonfigurowałem serwer DHCP na Pi – to ' jest dość prostym procesem (poszukaj przewodnika, jeśli chcesz).

Odpowiedź

Mając trochę informacji o sieci, pierwszą rzeczą, która przychodzi na myśl, jest użycie jej jako pola Snorta i wtedy nie musisz się martwić, że masz tylko jeden interfejs. Skonfigurowałbyś przełącznik / router tak, aby przekazywał cały ruch do Pi, ale także przekazywał go do urządzenia końcowego. Jest to znane jako monitor portu przełącznika, ale urządzenie może nie obsługują go. Możesz potrzebować przełącznika zarządzanego , aby to zrobić. Snort przeanalizowałby wtedy ruch i wygenerował raport. Więcej informacji o Snort http://www.snort.org/

Fajną rzeczą w tego rodzaju konfiguracji jest to, że twoje Pi siedzi z boku i ogląda wszystko, co jest uruchamiany przez przełącznik, zamiast siedzieć w linii z danymi. Jeśli masz oprogramowanie g W ten sposób ruch może nadal płynąć, ale nie może być monitorowany. W przypadku tego, co opisujesz za pomocą dwóch interfejsów, program się zawiesza, awaria sieci.

Nie używa to pi jako routera, ale pozwala monitorować i raportować ruch w sieci .

Odpowiedź

Użyłem Raspberry Pi do routingu i działało dobrze. Jak mówisz, potrzebujesz co najmniej jeszcze jednego interfejsu sieciowego, ponieważ Raspberry Pi ma tylko jeden port Ethernet. Możesz dodać kolejny interfejs podłączony do portu USB. Użyłem modemu GSM i karty Wi-Fi.

Warto zwrócić uwagę:

  • Użyj zasilanego koncentratora USB. Urządzenia Wi-Fi i GSM wymagają większej mocy niż te, które mogą dostarczyć porty USB Raspberry Pi.
  • Jeśli kupujesz urządzenia Wi-Fi, kup takie z dobrą obsługą Linuksa. Chcesz takiego, który działa w tryb punktu dostępu, a nie wszystkie pendrivey. Sprawdź na linuxwireless.org .

Oto moje post na blogu o routingu i kolejny o konfigurowaniu punktu dostępu Wi-Fi . Ten przewodnik pomógł mi w konfiguracji routingu. Rutowanie nie jest bardzo specyficzne dla Raspberry Pi; wszystko, co działa ogólnie w Linuksie, powinno być możliwe. Szczegóły zależą trochę od tego dystrybucji, z której korzystasz.

Odpowiedź

Używam Raspberry Pi jako routera od około miesiąca i bez żadnych problemów . Mam komercyjny port dostępu Wi-Fi, a nie domowy router Wi-Fi, więc go użyłem. Mam też konwerter USB na Ethernet, który był pożyczył ” z Wii.To idzie do domowej sieci LAN, a wbudowany Ethernet Raspberry Pi do sieci WAN / Internetu.

Idź po kopię IPFire dla Raspberry Pi. Chcesz wersję ARM, bez konsoli szeregowej i najnowszą stabilną wersję. Kliknij kartę ARM. Pobierz ” obraz architektury armv5tel „.

Uruchom go. Podłącz telewizor HDMI i klawiaturę. Odpowiedz na kilka pierwszych pytań. Resztę konfiguracji można przeprowadzić z poziomu przeglądarki sieć domowa, więc nie będziesz już potrzebować telewizora ani klawiatury.

Nie było to zbyt trudne i działało jak mistrz! Oto formalne instrukcje: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

Ostatnia rzecz. Jeśli zamierzasz używać klucza Wi-Fi zasilanego przez USB, sprawdź zasilanie swojego Raspberry Pi. Zasilacz USB 700 mA może wystarczyć do zasilania Raspberry Pi, ale nie pozostawia wiele do zasilania Wi-Fi -Fi. Albo użyj zasilanego koncentratora USB, albo zasil Raspberry Pi za pomocą zasilacza USB 1 do 2 A.
Powodzenia!

Odpowiedź

(Ten dodatek następuje po mojej poprzedniej odpowiedzi , która była przewodnikiem, jak skonfigurować Pi jako bramę internetową sieci LAN)

Nie zadowalając się monitorowaniem mojego ogólnego korzystania z Internetu, napisałem narzędzie, które monitoruje korzystanie z Internetu przez każde urządzenie w mojej sieci LAN. To pozwala mi zobaczyć chwilowe użycie w oknie konsoli i wygenerować wykresy historycznego użycia, dzięki czemu mogę zobaczyć, co stało się z dnia na dzień.


Rhodes , narzędzie do monitorowania w czasie rzeczywistym i historycznego wykorzystania sieci przez urządzenia LAN (na podstawie adresu MAC): https://github.com/meermanr/adsl/tree/master/rhodes

Przykładowe dane wyjściowe konsoli:

193 kiB/s TX 17 kiB/s RX 0004edbf98c0 home.gateway (Billion Electric Co.) 0 kiB/s TX 0 kiB/s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Vicky 0 kiB/s TX 0 kiB/s RX 34af2c01197b Nintendo 3DS:XL, Robert 0 kiB/s TX 0 kiB/s RX 34af2c3af204 Nintendo 3DS:XL, Vicky 0 kiB/s TX 0 kiB/s RX 34af2c9cfffd Nintendo WiiU 0 kiB/s TX 0 kiB/s RX 6045bd9c9dbc Xbox360 Slim 0 kiB/s TX 0 kiB/s RX 745e1c56c297 Pioneer SX-LX57 13 kiB/s TX 109 kiB/s RX 7831c1be0c34 Az Pro (Macbook Pro) 0 kiB/s TX 0 kiB/s RX 80ea96e6214e Roberts-AirPort-Time-Capsule 0 kiB/s TX 0 kiB/s RX 88308a770370 Samsung Galaxy S3, Vicky 189 kiB/s TX 211 kiB/s RX b827eb8fc0f3 Flux (Raspberry Pi) 2 kiB/s TX 39 kiB/s RX b8e8563acb34 Macbook Pro, Vicky 0 kiB/s TX 0 kiB/s RX d022be2c26ef Samsung Galaxy Note 3, Rob 0 kiB/s TX 0 kiB/s RX f82fa89368ea 

Pierwsza kolumna pokazuje, ile urządzenia transmitują, co zwykle oznacza przesyłanie do internetu. Wyjątkiem jest sam router ADSL (home.gateway w powyższym przykładzie), który przesyła dane otrzymane od dostawcy usług internetowych do urządzenia, które tego zażądało (tj. Pobieranie). Oczywiście przesyła również przesłane pliki do Internetu, ale robi to za pomocą modemu ADSL, którego nie ma w sieci LAN, a więc nie jest widoczny dla tego narzędzia.

Innym wyjątkiem byłby Raspberry Pi („ Strumień „w powyższym), który oczywiście przesyła wszystkie dane, którymi zarządza, w obu kierunkach.

Ale oprócz tych wyjątków, numery TX (nadawania) odnoszą się do wysyłania, a RX (odbierania) ) numery do pobrania. Trzecia kolumna to adres MAC urządzenia (bez zwykłych separatorów „:” lub „-”). Czwarta kolumna zawiera czytelną dla człowieka nazwę urządzenia, jeśli jest znana.

Wykresy są generowane przez uruchomienie ./index.py, które ma być wywoływane z serwera WWW, takiego jak lighttpd (z index.py dodany do ustawienia konfiguracyjnego index-file.names w /etc/lighttpd/lighttpd.conf). Możesz po prostu uruchomić go ręcznie, a wygeneruje kilka obrazów i wydrukuj kod HTML do STDOUT. Więc chciałbyś przekierować to do pliku, który możesz otworzyć w przeglądarce:

./index.py > index.html 

Następnie otwórz index.html w preferowanym przeglądarka.

Wymagania instalacyjne (wszystkie można zainstalować za pomocą apt-get install):

  • tcpdump – Narzędzia wiersza poleceń do przechwytywania i opisywania ruchu sieciowego
  • rrdtool – Narzędzie Round Robin Database, rekordy i wykresy danych szeregów czasowych
  • rrdcached – Round Robin Database Caching Daemon, usługa zmniejszająca narzuty podczas pracy równoległej z wieloma plikami RRD.
  • pypy-upstream (szybka implementacja języka programowania Python)

    • Możesz użyć standardowego Pythona, który lubisz: python rhodes.py (pypy to alternatywna implementacja języka programowania Python, która wykonuje kompilację Just-In-Time (JIT), dzięki czemu długo działające skrypty będą zużywać mniej cykli procesora kosztem większej pamięci)

Uwaga dotycząca użytkowania : narzędzie „tcpdump” używany przez ten skrypt wymaga uprawnień administratora, aby uzyskać dostęp do nieprzetworzonego ruchu sieciowego. Można to osiągnąć, uruchamiając sudo tcpdump podczas uruchamiania skryptu, więc może pojawić się monit o wprowadzenie hasła. Osobiście dodałem regułę NOPASSWD do /etc/sudoers, więc nigdy nie pojawia się monit.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *