Usi il Raspberry Pi come router?

Qualcuno ha usato il proprio Raspberry Pi come dispositivo di routing?

Principalmente voglio usarlo per monitorare la mia rete e lo farebbe sarebbe fantastico se avesse un ingresso e unuscita per Ethernet, ma non lo fa, quindi mi chiedo se sia molto efficace monitorare la rete avendo lingresso Ethernet e quindi utilizzando un dongle USB come router Wi-Fi. Ha qualcuno ha fatto qualcosa di simile? Rallenta molto Internet?

Commenti

  • Dipende dalla velocità della tua connessione Internet. Il mio è 100 Mb, quindi ‘ sono abbastanza sicuro che lo rallenterebbe;)
  • ‘ ho una connessione Internet a 30 Mbps, e in questo momento con 5 Mbps di traffico, il mio raspberry pi in linea con snort consuma ~ 50-95% di CPU e 85% di memoria. La mia configurazione non è ancora ottimizzata, ma voglio mostrarti alcune cifre reali.
  • Qualcuno sa come funziona lallocazione della larghezza con un router personalizzato che utilizza Raspberry Pi? Tipo, ho un SP eed di una connessione Internet a 3 Mbps, ho 10 utenti. puoi spiegare come sarà diviso? la velocità di 3Mbps. Grazie. Spero che tu capisca. 🙂
  • Ciao kirbs. Si prega di astenersi dal porre una domanda su unaltra domanda. Apri invece una nuova domanda con il link Fai una domanda nella parte superiore della pagina. Grazie.
  • Forse questo? learn.adafruit.com/…

Risposta

Ho utilizzato il mio modello B come router con traffic shaping, utilizzando solo lunica porta Ethernet con cui viene fornito. Ecco “un rapido e sporco su come :

  1. Abilita linoltro IPv4 , quindi il tuo Pi funge da router inoltrando tutto il traffico che riceve
  2. Configura il tuo Pi con una configurazione di rete statica in modo che non sia influenzato dalle modifiche DHCP suggerite di seguito. Di seguito sono riportati i contenuti del mio /etc/network/interfaces come riferimento:

    # 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. Ora cambia le impostazioni DHCP della tua rete in modo che il gateway / router predefinito sia il tuo Pi. Questo probabilmente significa cambiare le impostazioni sulla tua ADSL esistente router box. Nel mio esempio sopra, lindirizzo IP del mio Pi è 192.168.1.1.

La prossima volta che i tuoi dispositivi si ricollegheranno al rete, verrà detto loro che il tuo Pi è il loro gateway per Internet e tutto il loro traffico legato a Internet verrà inviato ad esso. Il tuo Pi trasmetterà a sua volta tutto quel traffico al tuo solito router. Potrebbe essere necessario scollegare e ricollegare i dispositivi affinché queste modifiche abbiano effetto.

Ora puoi creare o installare uno strumento per eseguire il monitoraggio per te, ad esempio vnstat .

Traffic Shaping

Per quanto riguarda il traffic shaping, ecco unaltra guida rapida e sporca che farà uso della mia variante personale di wondershaper .

Affinché questo sia utile, devi sapere quanto è veloce la tua connessione a Internet. Di solito puoi trovarlo dal tuo (originale ) router “s, ma in caso contrario è possibile ottenere una stima utilizzando un speedtest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 verrà stampato lo stato attuale del traffic shaping. Ovviamente lo stato previsto è che non cè shaping, il che significa che “esiste ununica regola in vigore, chiamata pfifo_fast:

    • (eth0 è il nome della scheda di rete cablata su un modello B. Vedi ifconfig per i nomi delle interfacce sul tuo sistema)
    # 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, dove:

    • 3000 è la velocità di downlink della mia connessione Internet in kbit . Quindi 3Mbit == 3000kbit
    • 370 è la velocità di uplink della mia connessione Internet, di nuovo in kbit.
  5. sudo ./wondershaper eth0 ora dovrebbe mostrare molto più output:

    # 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 

Il tuo traffico di rete in uscita viene ora modellato dal tuo Pi e il tuo traffico in entrata viene leggermente limitato per garantire che il Pi e non la tua casella di instradamento originale, ha il controllo del traffico.

Per disabilitare lo shaping, esegui sudo ./wondershaper eth0 clear. Puoi modificare le velocità di uplink e downlink senza cancellare prima , ma non fa male.

Aggiornamento: Devi anche disabilitare la trasmissione di reindirizzamenti ICMP , poiché è necessario che tutto il traffico passi attraverso il Pi affinché avvenga la modellazione.Si scopre che il kernel Linux è abbastanza intelligente da capire che i client sulla rete domestica potrebbero parlare direttamente alla scatola ADSL, piuttosto che rimbalzare il traffico attraverso il Pi, e lo dice loro in ogni occasione. I client quindi inviano il loro traffico direttamente alla tua casella ADSL, e il Pi non ha la possibilità di modellarlo. Disabilitalo al volo in questo modo (perso al prossimo riavvio):

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

Aggiorna quanto segue per impostarlo durante lavvio: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Grazie a https://unix.stackexchange.com/a/58081/22537 per questo suggerimento)

Potresti anche essere interessato alle mie note personali sulla configurazione di un gateway Linux: http://www.robmeerman.co.uk/unix/gateway

Commenti

  • come si impostano il nome e la password della rete Wi-Fi a cui possono connettersi altri dispositivi?
  • Unottima guida. Ho una domanda sul tuo wondershaper suggerimento, però: è il limite per client o complessivo?
  • @fommil: la mia guida sopra presuppone che tu usi ancora il modem / router / punto di accesso WiFi che il tuo ISP ti ha dato, ma di configurarlo in modo tale che a tutti i client che si connettono venga detto ” Invia traffico al Pi “. Questo di solito viene fatto inserendo il tuo indirizzo IP Pi ‘ (statico!) Nelle impostazioni DHCP della tua casella ISP. In genere in un campo denominato ” Gateway “, ” Gateway predefinito “, o forse ” Percorso predefinito “.
  • @Bob: The numbers you inserisci sono il totale per il tuo collegamento internet. Lo script wondershaper che tenta di condividere questo in modo equo con tutti i tuoi clienti in base alla richiesta . Quindi, se solo un client utilizza Internet, dovrebbe ottenerne il 100%. Se un altro cliente si avvia, dopo un po di ” tempo di assestamento ” (~ 10 secondi) finirà per utilizzare il 50% ciascuno, e così via.
  • Perfetto. Solo una nota a @fommil, nessuno dei miei router (e presumo molti altri siano uguali) fornisce un modo semplice per impostare il gateway assegnato tramite DHCP. Ho finito per disattivare il DHCP sul router e impostare un server DHCP sul Pi: ‘ è un processo abbastanza semplice (cerca una guida se vuoi).

Risposta

Avendo un po di background in rete, la prima cosa che mi viene in mente è usarlo come scatola per Snort e quindi non devi preoccuparti di avere una sola interfaccia. Dovresti configurare lo switch / router per inoltrare tutto il traffico al Pi, ma anche trasmetterlo al dispositivo finale. Questo è noto come monitor switchport, ma il tuo dispositivo potrebbe Non supportarlo. Potrebbe essere necessario un switch gestito per eseguire questa operazione. Snort analizzerà quindi il traffico e creerà un rapporto. Ulteriori informazioni su Snort http://www.snort.org/

La cosa bella di questo tipo di configurazione è che il tuo Pi è seduto in disparte a guardare tutto ciò che viene eseguito attraverso lo switch, piuttosto che rimanere in linea con i dati. Se si dispone di un software g In questo modo, il traffico può ancora fluire, ma non essere monitorato. Con ciò che stai descrivendo con due interfacce, il tuo programma si blocca, la tua rete si blocca.

Questo non usa il pi come router, ma ti consente di monitorare e segnalare il traffico che si sta spostando attraverso la tua rete .

Risposta

Ho usato il Raspberry Pi per il routing e ha funzionato bene. Come dici tu, hai bisogno di almeno unaltra interfaccia di rete, poiché il Raspberry Pi ha solo una porta Ethernet. È possibile aggiungere unaltra interfaccia collegata alla porta USB. Ho utilizzato un modem GSM e una chiavetta Wi-Fi.

Cose da notare:

  • Utilizza un hub USB alimentato. I dispositivi Wi-Fi e GSM richiedono più potenza di quella che possono fornire le porte USB del Raspberry Pi.
  • Se acquisti dispositivi Wi-Fi, procuratene uno con un buon supporto Linux. Ne vuoi uno che funzioni in modalità punto di accesso, e non tutte le levette lo fanno. Controlla su linuxwireless.org .

Ecco il mio post del blog sul routing e un altro sulla configurazione di un punto di accesso Wi-Fi . Questa guida mi ha aiutato con la configurazione del routing. Le cose di routing non sono molto specifiche per il Raspberry Pi; tutto ciò che funziona su Linux in generale dovrebbe essere possibile. I dettagli dipendono un po da quale distribuzione che usi.

Risposta

Uso il Raspberry Pi come router da circa un mese ormai, senza problemi . Ho una porta di accesso Wi-Fi commerciale effettiva, non un router Wi-Fi domestico, quindi lho usata. Ho anche un convertitore da USB a Ethernet che era ha preso in prestito ” dalla Wii.Questo va alla LAN domestica e lEthernet integrato del Raspberry Pi va alla WAN / Internet.

Procurati una copia di IPFire per Raspberry Pi. Desideri la versione ARM, senza console seriale e lultima versione stabile. Fai clic sulla scheda ARM. Scarica ” Immagine per larchitettura armv5tel “.

Avvialo. Collega una TV e una tastiera HDMI. Rispondi alle prime domande. Il resto della configurazione può essere eseguito da un browser su la rete domestica, quindi non avrai bisogno della TV o della tastiera.

Non è stato troppo difficile e ha funzionato come un campione! Ecco le istruzioni formali: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

Unultima cosa. Se hai intenzione di utilizzare un dongle Wi-Fi alimentato tramite USB, controlla lalimentatore del tuo Raspberry Pi. Un alimentatore USB da 700 mA potrebbe essere sufficiente per alimentare il Raspberry Pi, ma non lascia molto per alimentare il Wi -Fi. Utilizza un hub USB alimentato o alimenta il Raspberry Pi con un alimentatore USB da 1 a 2 A.
Buona fortuna!

Risposta

(Questa aggiunta segue la mia risposta precedente , che era una guida su come configurare il tuo Pi come gateway Internet della tua LAN)

Non contento di monitorare il mio utilizzo di Internet generale , ho scritto uno strumento che monitora lutilizzo di Internet di ogni dispositivo sulla mia LAN. Ciò mi consente di vedere lutilizzo istantaneo in una finestra della console e di generare grafici dellutilizzo storico in modo da poter vedere cosa è successo durante la notte.


Rhodes , uno strumento per il monitoraggio dellutilizzo storico e in tempo reale della rete dei dispositivi LAN (in base allindirizzo MAC): https://github.com/meermanr/adsl/tree/master/rhodes

Esempio di output della console:

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 

La prima colonna mostra quanto i dispositivi stanno trasmettendo, il che di solito significa caricare su Internet. Fa eccezione lo stesso router ADSL (home.gateway nellesempio sopra) che trasmette i dati ricevuti dallISP al dispositivo che lo ha richiesto (cioè download). Ovviamente trasmette anche i caricamenti su Internet, ma lo fa utilizzando il suo modem ADSL, che non è sulla LAN e quindi non è visibile a questo strumento.

Laltra eccezione sarebbe il Raspberry Pi (” Flux “di cui sopra) stesso, che ovviamente trasmette tutti i dati che gestisce, in entrambe le direzioni.

Ma a parte queste eccezioni, i numeri TX (trasmissione) si riferiscono a upload e RX (ricezione ) numeri da scaricare. La terza colonna è lindirizzo MAC del dispositivo (senza i soliti separatori “:” o “-“). La quarta colonna mostra il nome leggibile del dispositivo, se è noto.

Grafici vengono generati eseguendo ./index.py, che deve essere chiamato da un server web come lighttpd (con index.py aggiunto allimpostazione di configurazione index-file.names in /etc/lighttpd/lighttpd.conf). Puoi semplicemente eseguirlo manualmente e genererà alcune immagini e stampa HTML in STDOUT. Quindi dovresti reindirizzarlo a un file che puoi aprire in un browser:

./index.py > index.html 

Quindi apri index.html nel tuo preferito browser.

Requisiti di installazione (tutti possono essere installati con apt-get install):

  • tcpdump – Strumenti a riga di comando per acquisire e descrivere il traffico di rete
  • rrdtool – Strumento Round Robin Database, record e grafici di dati di serie temporali
  • rrdcached – Round Robin Database Caching Daemon, servizio che riduce i costi generali quando si lavora contemporaneamente con più file RRD.
  • pypy-upstream (una rapida implementazione del linguaggio di programmazione Python)

    • Puoi usare il Python di serie come preferisci: python rhodes.py (pypy è unimplementazione alternativa del linguaggio di programmazione Python che esegue la compilazione Just-In-Time (JIT), quindi gli script a esecuzione prolungata utilizzeranno meno cicli della CPU al costo di più memoria)

Nota sullutilizzo : lo strumento “tcpdump” utilizzato da questo script richiede privilegi di root per accedere al traffico di rete non elaborato. Ciò si ottiene avviando sudo tcpdump allavvio dello script, quindi potrebbe essere richiesto di inserire la password. Personalmente, ho aggiunto una regola NOPASSWD a /etc/sudoers, quindi non mi viene mai chiesto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *