Har noen brukt Raspberry Pi sin som en ruteanordning?
Hovedsakelig vil jeg bruke den til å overvåke nettverket mitt, og det ville være flott hvis den hadde inngang og utgang for Ethernet, men det gjør det ikke, så jeg lurer på om det er veldig effektivt å overvåke nettverket ved å ha Ethernet-inngangen og deretter bruke en USB-dongle som en Wi-Fi-ruter. noen som har gjort noe slikt? Sakter det Internett mye ned?
Kommentarer
- Avhenger av hvor rask internettforbindelsen din er. Min er 100Mb, så jeg ‘ er ganske sikker på at det vil redusere farten;)
- Jeg ‘ har en 30 Mbps internettforbindelse, og på dette tidspunktet med 5 Mbps trafikk bruker min innebygde bringebær-pi med fnugg ~ 50-95% CPU og 85% minne. Oppsettet mitt er ikke finjustert ennå, men jeg vil vise deg noen reelle tall.
- gjør noen ikke hvordan allokering av dårlig bredde fungerer med en tilpasset ruter som bruker bringebær pi? som om jeg har en sp eed av 3 Mbps internettforbindelse, har jeg 10 brukere. kan du forklare hvordan vil den bli delt? hastigheten på 3 Mbps. Takk. Håper du forstår. 🙂
- Hei kirbs. Vennligst avstå fra å stille et spørsmål om et annet spørsmål. I stedet åpner du et nytt spørsmål med koblingen Still spørsmål øverst på siden. Takk skal du ha.
- Kanskje dette? learn.adafruit.com/…
Svar
Jeg har brukt modell B min som en ruter med trafikkforming, og bruker bare den ene Ethernet-porten den følger med. Her er det fort og skittent på hvordan :
- Aktiver IPv4-videresending , så Pi fungerer som en ruter ved å videresende all trafikk den mottar
-
Konfigurer Pi med statisk nettverkskonfigurasjon, slik at den ikke blir påvirket av DHCP-endringer foreslått nedenfor. Her er innholdet av
/etc/network/interfaces
som referanse:# 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
-
Endre nettverkets DHCP-innstillinger slik at standard gateway / ruteren er din Pi. Dette betyr sannsynligvis å endre innstillingene på din eksisterende ADSL ruteren. I eksemplet mitt ovenfor er IP-adressen til Pi
192.168.1.1
.
Når enhetene dine kobles til igjen til nettverk, vil de få beskjed om at Pi er deres inngangsport til internett, og all Internett-bundet trafikk vil bli sendt til den. Pi-en din vil videresende all den trafikken til den vanlige ruteren din. Du må kanskje koble fra og deretter koble til enhetene dine på nytt for at disse endringene skal tre i kraft.
Nå kan du opprette eller installere et verktøy for å overvåke for deg, for eksempel vnstat .
Traffic Shaping
Når det gjelder trafikkforming, her er en annen rask og skitten guide som vil bruke min egen personlige variant av wondershaper .
For at dette skal være nyttig, må du vite hvor rask internettforbindelsen din er. Du finner vanligvis dette fra din (original ) routerens nettgrensesnitt, men hvis du ikke får et estimat ved hjelp av et speedtest .
-
sudo apt-get install iptables
-
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
-
sudo ./wondershaper eth0
vil skrive ut gjeldende status for trafikkforming. Åpenbart er den forventede statusen at det ikke er noen formgivning, noe som betyr at «en enkelt regel i kraft, kaltpfifo_fast
:- (
eth0
er navnet på den kablede nettverksadapteren på en modell B. Seifconfig
for navnene på grensesnittene på systemet ditt)
# 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
- (
-
sudo ./wondershaper eth0 3000 370
, der:-
3000
er min nettforbindelseshastighet i kbit . Så 3Mbit == 3000kbit -
370
er min internettforbindelsers opplinkhastighet, i kbit igjen.
-
-
sudo ./wondershaper eth0
skal nå vise mye mer 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
Din utgående nettverkstrafikk blir nå formet av din Pi, og din innkommende trafikk blir strupet litt for å sikre at Pi , og ikke den opprinnelige rutingsboksen, har kontroll over trafikken.
For å deaktivere forming, er det bare å kjøre sudo ./wondershaper eth0 clear
. Du kan endre hastighetene for opplink og nedlink uten å fjerne først , men det gjør ikke vondt.
Oppdatering: Du må også deaktivere overføringen av ICMP-omdirigeringer , siden vi trenger all trafikk for å gå gjennom Pi for at formingen skal skje.Det viser seg at Linux-kjernen er smart nok til å finne ut at klientene i hjemmenettverket ditt kan snakke direkte til ADSL-boksen, i stedet for å sprette trafikk gjennom Pi, og det forteller dem dette ved enhver anledning. Kundene sender deretter trafikken direkte til ADSL-boksen din, og Pi får ikke sjansen til å forme den. Deaktiver den på farten slik (tapt når du starter på nytt):
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
Oppdater følgende for å angi dette under oppstart: /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
( Takk til https://unix.stackexchange.com/a/58081/22537 for dette tipset)
Du kan også være interessert i mine personlige notater om konfigurering av en Linux-gateway: http://www.robmeerman.co.uk/unix/gateway
Kommentarer
- hvordan stiller du inn wifi-nettverksnavnet og passordet som andre enheter kan koble til?
- En flott guide. Jeg har spørsmål om
wondershaper
forslag, skjønt: er grensen per klient eller samlet? - @fommil: Min guide ovenfor antar at du fremdeles bruker modemet / ruteren / WiFi-tilgangspunktet som din ISP ga deg, men at du konfigurerer den slik at alle klienter som kobler til blir fortalt » Send trafikk til Pi «. Dette gjøres vanligvis ved å skrive inn Pi ‘ s (statisk!) IP-adresse i DHCP-innstillingene i ISP-boksen. Vanligvis i et felt kalt » Gateway «, » Standard gateway «, eller kanskje » Standardrute «.
- @Bob: Tallene du enter er totalen for internettkoblingen din. Wondershaper-skriptet enn forsøk på å dele dette med alle kundene dine basert på etterspørsel . Så hvis bare en klient bruker internett, bør den få 100% av det. Hvis en annen klient starter, vil de etter litt » avregningstid » (~ 10 sekunder) ende opp med å bruke 50% hver, og så videre.
- Perfekt. Bare et notat til @fommil, ingen av ruterne mine (og jeg antar at mange flere er de samme) gir en enkel måte å sette gatewayen tildelt via DHCP. Jeg endte med å slå av DHCP på ruteren og sette opp en DHCP-server på Pi – det ‘ er en ganske enkel prosess (søk etter en guide hvis du vil).
Svar
Å ha litt nettverksbakgrunn, det første du kommer opp i tankene er å bruke den som en fnysboks, og da trenger du ikke å bekymre deg for å bare ha ett grensesnitt. Du vil konfigurere bryteren / ruteren din for å videresende all trafikk til Pi, men også sende den til sluttenheten. Dette er kjent som en switchport-skjerm, men enheten din kan støtter det ikke. Du kan trenge en administrert bryter for å gjøre dette. Snort analyserer deretter trafikken og rapporterer om den. Mer informasjon om Snort http://www.snort.org/
Det fine med denne typen oppsett er at Pi sitter på siden og ser på alt som kjøres gjennom bryteren, i stedet for å sitte integrert med dataene. Hvis du har en programvare g litch på denne måten, kan trafikken fortsatt strømme, bare ikke overvåkes. Med det du beskriver med to grensesnitt, krasjer programmet ditt, nettverket krasjer.
Dette bruker ikke pi som en ruter, men lar deg overvåke og rapportere om trafikk som beveger seg over nettverket ditt .
Svar
Jeg har brukt Raspberry Pi til ruting, og det fungerte bra. Som du sier, trenger du minst et nettverksgrensesnitt til, siden Raspberry Pi bare har en Ethernet-port. Du kan legge til et annet grensesnitt som er koblet til USB-porten. Jeg har brukt et GSM-modem og en Wi-Fi-pinne.
Ting å merke seg:
- Bruk en USB-hub med strøm. Wi-Fi og GSM-enheter krever mer strøm enn hva Raspberry Pis USB-porter kan levere.
- Hvis du handler Wi-Fi-enheter, få en med god Linux-støtte. Du vil ha en som fungerer i tilgangspunktmodus, og ikke alle pinner. Sjekk på linuxwireless.org .
Her er min blogginnlegg om ruting, og en annen om å sette opp et Wi-Fi-tilgangspunkt . Denne veiledningen hjalp meg med rutingoppsettet. Rutetingene er ikke veldig spesifikke for Raspberry Pi; alt som fungerer på Linux generelt burde være mulig. Detaljene avhenger litt av hvilken distribusjon du bruker.
Svar
Jeg har brukt Raspberry Pi som en router i omtrent en måned nå, uten problemer . Jeg har en faktisk kommersiell Wi-Fi Access-port, ikke en hjemme-Wi-Fi-ruter, så jeg brukte den. Jeg har også en USB-til-Ethernet-omformer som var lånte » fra Wii.Det går til hjemmets LAN, og Raspberry Pis innebygde Ethernet går til WAN / Internett.
Gå og få en kopi av IPFire for Raspberry Pi. Du vil ha ARM-versjonen, uten seriell konsoll og den siste stabile versjonen. Klikk på ARM-fanen. Last ned » Bildet for armv5tel-arkitekturen «.
Start av den. Koble til HDMI-TV og tastatur. Svar på de første spørsmålene. Resten av konfigurasjonen kan gjøres fra en nettleser på hjemmenettverket, så du trenger ikke TV eller tastatur etter det.
Det var ikke så vanskelig, og fungerte som en mester! Her er de formelle instruksjonene: https://wiki.ipfire.org/hardware/arm/rpi/threeplus
En siste ting. Hvis du skal bruke en USB-drevet Wi-Fi-dongle, må du sjekke strømforsyningen til Raspberry Pi. En 700 mA USB-strømforsyning kan være nok til å drive Raspberry Pi, men den lar ikke mye strøm til Wi-Fi -Fi. Enten bruk en drevet USB-hub, eller strøm Raspberry Pi med en 1 til 2 A USB-strømforsyning.
Lykke til!
Svar
(Dette tillegget følger mitt forrige svar , som var en veiledning for hvordan du konfigurerer Pi-en din som LAN-nettporten din)
Jeg er ikke fornøyd med å overvåke min totale internettbruk, men jeg har skrevet et verktøy som overvåker internettbruken til hver enhet på LAN. Dette lar meg se øyeblikkelig bruk i et konsollvindu og generere diagrammer over historisk bruk slik at jeg kan se hva som skjedde over natten.
Rhodos , et verktøy for overvåking av sanntids og historisk nettverksbruk av LAN-enheter (basert på MAC-adresse): https://github.com/meermanr/adsl/tree/master/rhodes
Eksempel på konsollutgang:
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
Den første kolonnen viser hvor mye enheter sender, noe som vanligvis betyr opplasting til internett. Unntaket fra dette er det selve ADSL-ruteren (hjemme-gateway i eksemplet ovenfor) som overfører data mottatt fra ISP-enheten enheten som ba om det (dvs. nedlastinger). Selvfølgelig overfører den også opplastinger til internett, men den gjør det ved å bruke ADSL-modemet, som ikke er på LAN og derfor ikke er synlig for dette verktøyet.
Det andre unntaket vil være Raspberry Pi (» Flux «i det ovennevnte) seg selv, som selvfølgelig overfører alle dataene den håndterer, i begge retninger. ) tall å laste ned. Den tredje kolonnen er enhetens MAC-adresse (uten den vanlige skilletegnene «:» eller «-«. Den fjerde kolonnen viser det menneskelesbare navnet på enheten, hvis det er kjent.
Diagrammer genereres ved å kjøre ./index.py
, som er ment å ringes fra en webserver som lighttpd
(med index.py
lagt til index-file.names
konfigurasjonsinnstillingen i /etc/lighttpd/lighttpd.conf
). Du kan bare kjøre den manuelt, og den vil generere noen bilder og skriv ut HTML til STDOUT. Så du vil omdirigere det til en fil som du kan åpne i en nettleser:
./index.py > index.html
Åpne deretter index.html i ønsket nettleser.
Installasjonskrav (alle kan installeres med apt-get install
):
-
tcpdump
– Kommandolinjeverktøy for å fange og beskrive nettverkstrafikk -
rrdtool
– Round Robin Database-verktøy, registrerer og kartlegger tidsseriedata -
rrdcached
– Round Robin Database Caching Daemon, tjeneste som reduserer omkostninger når du arbeider samtidig med flere RRD-filer. -
pypy-upstream
(en rask implementering av Python-programmeringsspråket)- Du kan bruke lageret Python er du liker:
python rhodes.py
(pypy
er en alternativ implementering av Python-programmeringsspråket som gjør Just-In-Time (JIT) -kompilering, så langvarige skript vil bruke mindre CPU-sykluser på bekostning av mer minne)
- Du kan bruke lageret Python er du liker:
Bruksanvisning : «tcpdump» -verktøyet brukt av dette skriptet krever rotprivilegier for å få tilgang til rå nettverkstrafikk. Dette oppnås ved å starte sudo tcpdump
når skriptet starter, så du kan bli bedt om å skrive inn passordet ditt. Personlig har jeg lagt til en NOPASSWD-regel til /etc/sudoers
så jeg blir aldri bedt om det.