Folosiți Raspberry Pi ca router?

A folosit cineva Raspberry Pi ca dispozitiv de rutare?

În principal, vreau să-l folosesc pentru a-mi monitoriza rețeaua și ar fi fii grozav dacă a avut o intrare și o ieșire pentru Ethernet, dar nu este, așa că mă întreb dacă este foarte eficient să monitorizezi rețeaua având intrarea Ethernet și apoi folosind un dongle USB ca router Wi-Fi. cineva a făcut așa ceva? Încetinește mult Internetul?

Comentarii

  • Depinde cât de rapidă este conexiunea dvs. la internet. A mea este de 100 Mb, deci, ‘ sunt destul de sigur că ar încetini;)
  • Am ‘ o conexiune la internet de 30 Mbps, și în acest moment, cu 5 Mbps de trafic, raspberry pi-ul meu cu snort consumă ~ 50-95% CPU și 85% memorie. Configurarea mea nu este încă ajustată, dar vreau să vă arăt câteva cifre reale.
  • nimeni nu știe cum funcționează alocarea de lățime rău cu un router personalizat care utilizează raspberry pi? cum ar fi, am un sp Conexiune la internet de 3 Mbps, am 10 utilizatori. poți explica cum va fi împărțit? viteza de 3 Mbps. Mulțumiri. Sper ca intelegi. 🙂
  • Bună ziua kirbs. Vă rugăm să vă abțineți de la a pune o întrebare cu privire la o altă întrebare. În schimb, deschideți o nouă întrebare cu linkul Puneți întrebarea din partea de sus a paginii. Mulțumesc.
  • Poate asta? learn.adafruit.com/…

Răspuns

Am folosit modelul meu B ca un router cu conturarea traficului, folosind doar un singur port Ethernet cu care vine. Iată „rapid și murdar despre cum :

  1. Activați redirecționarea IPv4 , astfel încât Pi-ul dvs. acționează ca un router redirecționând orice trafic pe care îl primește
  2. Configurați Pi cu configurația de rețea statică, astfel încât să nu fie influențat de modificările DHCP sugerate mai jos. Iată conținutul /etc/network/interfaces ca referință:

    # 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. Acum modificați setările DHCP ale rețelei dvs. astfel încât gateway-ul / routerul implicit să fie Pi. Acest lucru înseamnă probabil modificarea setărilor ADSL-ului dvs. existent router box. În exemplul meu de mai sus, adresa IP a lui Pi este 192.168.1.1.

Când dispozitivele dvs. se vor reconecta la în rețea, li se va spune că Pi este poarta lor de acces către internet și tot traficul legat de internet îi va fi trimis. Pi-ul dvs. va transmite la rândul său tot traficul către routerul dvs. obișnuit. Este posibil să fie necesar să vă deconectați și apoi să vă reconectați dispozitivele pentru ca aceste modificări să aibă efect.

Acum puteți crea sau instala un instrument pentru monitorizarea dvs., cum ar fi vnstat .

Modelarea traficului

În ceea ce privește modelarea traficului, iată un alt ghid rapid și murdar care va folosi propria mea variantă personală de wondershaper .

Pentru ca acest lucru să fie util, trebuie să știți cât de rapidă este conexiunea dvs. la internet. De obicei, puteți găsi acest lucru din ) interfața web a routerului, dar în caz contrar, puteți obține o estimare utilizând un speedtest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 va imprima starea actuală a modelării traficului. Evident, starea așteptată este că nu există contur, ceea ce înseamnă că există „o singură regulă în vigoare, numită pfifo_fast:

    • (eth0 este numele adaptorului de rețea cu fir de pe un model B. Consultați ifconfig pentru numele interfețelor din sistemul dvs.)
    # 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. , unde:

    • 3000 este viteza conexiunii mele la conexiunea la internet în kbit . Deci 3Mbit == 3000kbit
    • 370 este viteza de legătură în sus a conexiunii mele la internet, din nou în kbit.
  5. sudo ./wondershaper eth0 ar trebui să afișeze acum mult mai multe rezultate:

    # 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 

Traficul dvs. de rețea de ieșire este acum modelat de Pi, iar traficul dvs. de intrare este ușor limitat pentru a vă asigura că Pi , și nu caseta dvs. de rutare originală, controlează traficul.

Pentru a dezactiva modelarea, rulați doar sudo ./wondershaper eth0 clear. Puteți modifica ratele de legătură în sus și în jos fără a șterge mai întâi , dar nu te doare.

Actualizare: De asemenea, trebuie să dezactivezi transmisia redirecționări ICMP , deoarece avem nevoie de tot traficul pentru a trece prin Pi pentru a se forma.Se pare că nucleul Linux este suficient de inteligent pentru a-și da seama că clienții din rețeaua dvs. de acasă ar putea vorbi direct cu caseta ADSL, mai degrabă decât să respingă traficul prin Pi și le spune acest lucru cu fiecare ocazie. Clienții își trimit apoi traficul direct în caseta dvs. ADSL, iar Pi nu are nicio șansă să-l modeleze. Dezactivați-l din mers așa (pierdut la următoarea repornire):

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

Actualizați următoarele pentru a seta acest lucru în timpul pornirii: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Mulțumim https://unix.stackexchange.com/a/58081/22537 pentru acest sfat)

S-ar putea să vă intereseze și notele mele personale la configurarea unui gateway Linux: http://www.robmeerman.co.uk/unix/gateway

Comentarii

  • cum setați numele și parola rețelei wifi la care se pot conecta alte dispozitive?
  • Un ghid excelent. Am o întrebare despre wondershaper sugestie, totuși: este limita per client sau per total?
  • @fommil: Ghidul meu de mai sus presupune că utilizați în continuare modemul / routerul / punctul de acces WiFi pe care vi l-a dat ISP-ul dvs., dar că îl configurați astfel încât să li se spună tuturor clienților care se conectează ” Trimiteți trafic către Pi „. Acest lucru se face de obicei prin introducerea adresei IP Pi ‘ (static!) În setările DHCP ale casetei ISP. De obicei, într-un câmp numit ” Gateway „, ” Gateway implicit „, sau poate ” Ruta implicită „.
  • @Bob: numerele pe care le introduceți este numărul total pentru linkul dvs. de internet. Scriptul Wondershaper decât încercările de a împărtăși corect acest lucru tuturor clienților dvs. pe baza cererii . Deci, dacă un singur client folosește internetul, ar trebui să obțină 100% din acesta. Dacă un alt client pornește, după un pic de ” timp de decontare ” (~ 10 secunde) se va folosi 50% fiecare, și așa mai departe.
  • Perfect. Doar o notă către @fommil, niciunul dintre routerele mele (și presupun că multe altele sunt aceleași) oferă o modalitate ușoară de a seta gateway-ul atribuit prin DHCP. Am ajuns să opresc DHCP pe router și să configurez un server DHCP pe Pi – este ‘ un proces destul de simplu (căutați un ghid dacă doriți).

Răspuns

Având puțin fundal de rețea, primul lucru care îmi vine în minte este să-l folosești ca o cutie Snort și atunci nu trebuie să vă faceți griji că aveți o singură interfață. Vă veți configura comutatorul / routerul pentru a redirecționa tot traficul către Pi, dar îl veți transmite și pe dispozitivul final. Acest lucru este cunoscut sub numele de monitor switchport, dar dispozitivul nu îl acceptați. Este posibil să aveți nevoie de un switch gestionat pentru a face acest lucru. Snort ar analiza apoi traficul și va raporta despre acesta. Mai multe informații despre Snort http://www.snort.org/

Lucrul frumos la acest tip de configurație este că Pi-ul tău stă în lateral, urmărind tot ceea ce este rulat prin comutator, mai degrabă decât să stați în linie cu datele. Dacă aveți un software g În felul acesta, traficul poate continua să circule, doar să nu fie monitorizat. Cu ceea ce descrieți cu două interfețe, programul dvs. se blochează, rețeaua se blochează.

Acest lucru nu utilizează pi ca router, dar vă permite să monitorizați și să raportați traficul care se deplasează în rețeaua dvs. .

Răspuns

Am folosit Raspberry Pi pentru rutare și a funcționat bine. După cum spuneți, aveți nevoie de cel puțin încă o interfață de rețea, deoarece Raspberry Pi are un singur port Ethernet. Puteți adăuga o altă interfață conectată la portul USB. Am folosit un modem GSM și un stick Wi-Fi.

Lucruri de reținut:

  • Folosiți un hub USB alimentat. Dispozitivele Wi-Fi și GSM necesită mai multă energie decât ceea ce pot furniza porturile USB ale Raspberry Pi.
  • Dacă faceți cumpărături pentru dispozitive Wi-Fi, obțineți unul cu suport Linux bun. Doriți unul care să funcționeze în modul punct de acces și nu toate stick-urile sunt valabile. Verificați la linuxwireless.org .

Iată postare de blog despre rutare și alta despre configurarea unui punct de acces Wi-Fi . Acest ghid m-a ajutat la configurarea rutei. Lucrurile de rutare nu sunt foarte specifice Raspberry Pi; orice lucru care funcționează pe Linux în general ar trebui să fie posibil. Detaliile depind un pic de care distribuția pe care o utilizați.

Răspuns

Folosesc Raspberry Pi ca router de aproximativ o lună acum, fără probleme Am un port comercial de acces Wi-Fi, nu un router Wi-Fi de acasă, așa că l-am folosit. Am și un convertor USB-Ethernet care a fost împrumutat ” de pe Wii.Aceasta merge la rețeaua locală de rețea, iar Ethernet-ul încorporat al Raspberry Pi merge la WAN / Internet.

Accesați o copie a IPFire pentru Raspberry Pi. Doriți versiunea ARM, fără o consolă serial și cea mai recentă versiune stabilă. Faceți clic pe fila ARM. Descărcați imaginea ” pentru arhitectura armv5tel „.

Porniți din acesta. Conectați un televizor HDMI și o tastatură. Răspundeți la primele câteva întrebări. Restul configurației poate fi realizat dintr-un browser activat rețeaua de domiciliu, deci nu veți avea nevoie de televizor sau tastatură după aceea.

Nu a fost prea greu și a funcționat ca un campion! Iată instrucțiunile formale: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

Un ultim lucru. Dacă aveți de gând să utilizați un dongle Wi-Fi alimentat cu USB, verificați sursa de alimentare Raspberry Pi. O sursă de alimentare USB de 700 mA poate fi suficientă pentru a alimenta Raspberry Pi, dar nu lasă mult să alimenteze Wi-Fi. -Fi. Fie utilizați un hub USB alimentat, fie alimentați Raspberry Pi cu o sursă de alimentare USB de la 1 la 2 A.
Noroc!

Răspundeți

(Acest addendum urmează răspunsul meu anterior , care a fost un ghid despre cum să vă configurați Pi ca gateway-ul de internet al LAN-ului dvs.)

Nu mă mulțumesc cu monitorizarea utilizării internetului meu general , am scris un instrument care monitorizează utilizarea internetului fiecărui dispozitiv pe rețeaua LAN. Acest lucru îmi permite să văd utilizarea instantanee într-o fereastră de consolă și să generez diagrame de utilizare istorică, astfel încât să pot vedea ce s-a întâmplat peste noapte.


Rhodes , un instrument pentru monitorizarea utilizării în timp real și istorică a rețelei dispozitivelor LAN (pe baza adresei MAC): https://github.com/meermanr/adsl/tree/master/rhodes

Exemplu de ieșire consolă:

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 

Prima coloană arată cât de mult dispozitivele transmit, ceea ce înseamnă de obicei încărcarea pe internet. Excepția de la acesta este routerul ADSL în sine (home.gateway în eșantionul de mai sus) care transmite datele primite de la ISP dispozitivul care l-a solicitat (adică descărcări). Desigur, transmite și încărcări pe internet, dar face acest lucru folosind modemul său ADSL, care nu este pe LAN și, prin urmare, nu este vizibil pentru acest instrument.

Cealaltă excepție ar fi Raspberry Pi („ Flux „în cele de mai sus), care, desigur, transmite toate datele pe care le gestionează, în ambele direcții.

Dar, în afară de aceste excepții, numerele TX (transmitere) se referă la încărcare și RX (recepție) ) numere de descărcat. A treia coloană este adresa MAC a dispozitivului (fără separatorii obișnuiți „:” sau „-„). Cea de-a patra coloană arată numele dispozitivului care poate fi citit de om, dacă este cunoscut.

Diagrame sunt generate executând ./index.py, care este destinat să fie apelat de la un server web precum lighttpd (cu index.py adăugat la setarea de configurare index-file.names din /etc/lighttpd/lighttpd.conf). Puteți rula manual manual și va genera câteva imagini și tipăriți HTML în STDOUT. Deci, doriți să redirecționați acest lucru către un fișier pe care îl puteți deschide într-un browser:

./index.py > index.html 

Apoi deschideți index.html în preferința dvs. browser.

Cerințe de instalare (toate pot fi instalate cu apt-get install):

  • tcpdump – Instrumente pentru linia de comandă pentru captarea și descrierea traficului de rețea
  • rrdtool – Instrumentul bazei de date Round Robin, înregistrări și diagrame date de serie
  • rrdcached – Daemon Round Caching Database Database, serviciu care reduce cheltuielile generale atunci când lucrează concomitent cu mai multe fișiere RRD.
  • pypy-upstream (o implementare rapidă a limbajului de programare Python)

    • Puteți utiliza stocul Python așa cum doriți: python rhodes.py (pypy este o implementare alternativă a limbajului de programare Python care realizează Compilarea Just-In-Time (JIT), deci scripturile de lungă durată vor folosi mai puține cicluri de procesare la costul unei mai multe memorii)

Notă de utilizare : Instrumentul „tcpdump” utilizat de acest script necesită privilegii de root pentru a accesa traficul brut de rețea. Acest lucru se realizează prin lansarea sudo tcpdump la începerea scriptului, deci este posibil să vi se solicite să introduceți parola. Personal, am „adăugat o regulă NOPASSWD la /etc/sudoers, așa că nu mi se solicită niciodată.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *