Czy ktoś używał swojego Raspberry Pi jako urządzenia do routingu?
Głównie chcę go używać do monitorowania mojej sieci, i byłoby świetnie, gdyby miał wejście i wyjście dla Ethernetu, ale tak nie jest, więc zastanawiam się, czy bardzo skuteczne jest monitorowanie sieci poprzez wejście Ethernet a następnie za pomocą klucza USB jako routera Wi-Fi. Czy ktoś zrobił coś takiego? Czy znacznie spowalnia Internet?
Odpowiedzi:
Używam mojego modelu B jako routera z funkcją kształtowania ruchu, używając tylko jednego portu Ethernet, z którym jest on wyposażony. Oto szybkie i brudne informacje na temat:
Skonfiguruj swoje Pi ze statyczną konfiguracją sieci, aby nie miały na niego wpływu zmiany DHCP sugerowane poniżej. Oto zawartość mojego
/etc/network/interfaces
jako odniesienia:Teraz zmień ustawienia DHCP swojej sieci, tak aby domyślną bramą / routerem była Twoja Pi. Prawdopodobnie oznacza to zmianę ustawień istniejącego routera ADSL. W powyższym przykładzie adres IP mojego Pi to
192.168.1.1
.Kiedy twoje urządzenia ponownie połączą się ponownie z siecią, powiedzą Ci, że Pi jest ich bramą do Internetu, a cały ruch związany z Internetem zostanie do niej przesłany. Twoje Pi z kolei przekaże cały ten ruch do twojego zwykłego routera. Konieczne może być odłączenie, a następnie ponowne podłączenie urządzeń, aby zmiany zostały wprowadzone.
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 i brudny przewodnik, który wykorzysta mój własny wariant cudotwórcy .
Aby było to przydatne, musisz wiedzieć, jak szybkie jest twoje połączenie internetowe. Zazwyczaj można to znaleźć w interfejsie internetowym (oryginalnego) routera, ale w przypadku niepowodzenia można uzyskać oszacowanie za pomocą testu szybkości .
sudo apt-get install iptables
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
sudo ./wondershaper eth0
wypisze bieżący stan kształtowania ruchu. Oczywiście oczekiwanym stanem jest brak kształtowania, co oznacza, że obowiązuje jedna reguła, zwanapfifo_fast
:eth0
to nazwa przewodowej karty sieciowej w modelu B. Zobaczifconfig
nazwy interfejsów w systemie)sudo ./wondershaper eth0 3000 370
, gdzie:3000
to prędkość łącza w dół mojego połączenia internetowego w kbitach . 3Mbit == 3000kbit370
to prędkość łącza w górę mojego połączenia internetowego, znów w kbitach.sudo ./wondershaper eth0
powinien teraz wyświetlać znacznie więcej wyników:Twój wychodzący ruch sieciowy jest teraz kształtowany przez twoje Pi, a twój ruch przychodzący jest nieznacznie dławiony, aby zapewnić, że Pi, a nie oryginalne pole routingu, ma kontrolę nad ruchem.
Aby wyłączyć kształtowanie, po prostu uruchom
sudo ./wondershaper eth0 clear
. Możesz zmienić szybkość łącza w górę i w dół bez uprzedniego wyczyszczenia, ale to nie boli.Aktualizacja: Musisz także wyłączyć transmisję przekierowań ICMP , ponieważ potrzebujemy całego ruchu, aby przejść przez Pi, aby nastąpiło kształtowanie. Okazuje się, że jądro Linuksa jest wystarczająco inteligentne, aby dowiedzieć się, że klienci w sieci domowej mogą rozmawiać bezpośrednio z modułem ADSL, zamiast odbierać ruch przez Pi, i mówi im to przy każdej okazji. Klienci wysyłają następnie swój ruch bezpośrednio do twojego pola ADSL, a Pi nie ma szansy go ukształtować. Wyłącz tak w locie (zgubiony przy następnym uruchomieniu):
Zaktualizuj następujące ustawienia, aby ustawić to podczas uruchamiania:
/etc/sysctl.conf
(Dzięki https://unix.stackexchange.com/a/58081/22537 za tę wskazówkę)
Możesz być także zainteresowany moimi osobistymi notatkami na temat konfigurowania bramy Linux: http://www.robmeerman.co.uk/unix/gateway
źródło
wondershaper
sugestii: czy jest to limit na klienta, czy ogólnie?Mając małe tło sieciowe, pierwszą rzeczą, która przychodzi na myśl, jest użycie go jako pudełka Snort, a następnie nie musisz się martwić, że masz tylko jeden interfejs. Skonfigurujesz swój przełącznik / router tak, aby przekazywał cały ruch do Pi, ale także przekazywał go do urządzenia końcowego. Nazywa się to monitorem przełączania, ale urządzenie może go nie obsługiwać. W tym celu może być potrzebny przełącznik zarządzany . Snort analizuje ruch i zgłasza go. Więcej informacji na temat Snort http://www.snort.org/
Zaletą tego rodzaju konfiguracji jest to, że Pi siedzi z boku i obserwuje wszystko, co jest uruchamiane przez przełącznik, zamiast siedzieć w linii z danymi. Jeśli masz usterkę oprogramowania w ten sposób, ruch może nadal płynąć, po prostu nie być monitorowany. W przypadku tego, co opisujesz za pomocą dwóch interfejsów, program ulega awarii, awaria sieci.
Nie używa pi jako routera, ale pozwala monitorować i raportować ruch w sieci.
źródło
Używałem Raspberry Pi do routingu i działało dobrze. Jak mówisz, potrzebujesz 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 kija Wi-Fi.
Ważne uwagi:
Oto mój post na blogu na temat routingu, a drugi na temat konfigurowania punktu dostępu Wi-Fi . Ten przewodnik pomógł mi w konfiguracji routingu. Trasy routingu nie są zbyt specyficzne dla Raspberry Pi; wszystko, co ogólnie działa na Linuksie, powinno być możliwe. Szczegóły zależą nieco od używanej dystrybucji.
źródło
Używam Raspberry Pi jako routera od około miesiąca bez żadnych problemów. Mam rzeczywisty komercyjny port dostępu Wi-Fi, a nie domowy router Wi-Fi, więc z niego skorzystałem. Mam też konwerter USB-Ethernet, który został „pożyczony” z Wii. To idzie do domowej sieci LAN, a wbudowany Ethernet Raspberry Pi przechodzi do sieci WAN / Internetu.
Idź po kopię IPFire dla Raspberry Pi. Chcesz wersję ARM bez konsoli szeregowej i najnowszej stabilnej wersji. Kliknij kartę ARM. Pobierz „Obraz architektury armv5tel”.
Uruchom go. Podłącz telewizor HDMI i klawiaturę. Odpowiedz na kilka pierwszych pytań. Resztę konfiguracji można wykonać z przeglądarki w sieci domowej, więc nie będzie już potrzebny telewizor ani klawiatura.
Nie było to zbyt trudne i działało jak mistrz! Oto formalne instrukcje: http://wiki.ipfire.org/en/hardware/arm/rpi
Ostatnia rzecz. Jeśli zamierzasz używać klucza Wi-Fi zasilanego przez USB, sprawdź zasilacz Raspberry Pi. Zasilacz USB 700 mA może być wystarczający do zasilania Raspberry Pi, ale nie pozostawia wiele do zasilania Wi-Fi. Użyj zasilanego koncentratora USB lub zasil Raspberry Pi za pomocą zasilacza USB 1 do 2 A.
Powodzenia!
źródło
(Ten dodatek jest zgodny z moją poprzednią odpowiedzią , która była przewodnikiem, jak skonfigurować Pi jako bramę internetową twojej sieci LAN)
Nie jestem zadowolony z monitorowania ogólnego zużycia Internetu, napisałem narzędzie, które monitoruje wykorzystanie Internetu przez każde urządzenie w mojej sieci LAN. To pozwala mi zobaczyć natychmiastowe użycie w oknie konsoli i wygenerować wykresy historycznego użycia, dzięki czemu mogę zobaczyć, co wydarzyło się z dnia na dzień.
Rhodes , narzędzie do monitorowania wykorzystania sieci LAN w czasie rzeczywistym i w przeszłości (w oparciu o adres MAC): https://github.com/meermanr/adsl/tree/master/rhodes
Próbka wyjścia konsoli:
Pierwsza kolumna pokazuje, ile urządzeń transmituje, 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 przez urządzenie, które go zażądało (tj. Pobiera). Oczywiście przesyła również przesłane pliki do Internetu, ale robi to za pomocą modemu ADSL, który nie znajduje się w sieci LAN, a więc nie jest widoczny dla tego narzędzia.
Innym wyjątkiem byłby sam Raspberry Pi („Flux” powyżej), który oczywiście przesyła wszystkie dane, którymi zarządza, w obu kierunkach.
Ale oprócz tych wyjątków, numery TX (nadawanie) odnoszą się do wysyłania, a numery RX (odbieranie) do pobierania. Trzecia kolumna to adres MAC urządzenia (bez zwykłych separatorów „:” lub „-”). Czwarta kolumna pokazuje czytelną dla człowieka nazwę urządzenia, jeśli jest znane.
Wykresy są generowane przez uruchomienie
./index.py
, które ma być wywoływane z serwera WWW, takiego jaklighttpd
(zindex.py
dodanym doindex-file.names
ustawienia konfiguracji w/etc/lighttpd/lighttpd.conf
). Możesz po prostu uruchomić go ręcznie, a wygeneruje kilka obrazów i wydrukuje HTML do STDOUT. Więc chcesz przekierować to do pliku, który możesz otworzyć w przeglądarce:Następnie otwórz plik index.html w preferowanej przeglądarce.
Wymagania instalacyjne (wszystkie można zainstalować za pomocą
apt-get install
):tcpdump
- Narzędzia wiersza poleceń do przechwytywania i opisywania ruchu sieciowegorrdtool
- Narzędzie Round Robin Database, rekordy i wykresy danych szeregów czasowychrrdcached
- Round Robin Database Caching Daemon, usługa, która zmniejsza koszty ogólne podczas pracy z wieloma plikami RRD.pypy-upstream
(szybka implementacja języka programowania Python)python rhodes.py
(pypy
jest alternatywną implementacją języka programowania Python, który wykonuje kompilację Just-In-Time (JIT), więc długo działające skrypty będą zużywać mniej cykli procesora kosztem większej ilości pamięci)Uwaga dotycząca użytkowania : Narzędzie „tcpdump” używane przez ten skrypt wymaga uprawnień roota, aby uzyskać dostęp do surowego ruchu sieciowego. Uzyskuje się to poprzez uruchomienie
sudo tcpdump
skryptu, dlatego może zostać wyświetlony monit o podanie hasła. Osobiście dodałem regułę NOPASSWD,/etc/sudoers
więc nigdy nie otrzymuję monitu.źródło