Har nogen brugt deres Raspberry Pi som en routing-enhed?
Jeg vil primært bruge den til at overvåge mit netværk, og det ville være god, hvis den havde et input og output til Ethernet, men det gør det ikke, så jeg spekulerer på, om det er meget effektivt at overvåge netværket ved at have Ethernet-input og derefter bruge en USB-dongle som en Wi-Fi-router. har nogen gjort noget lignende? Sænker det Internettet meget?
Kommentarer
- Afhænger af, hvor hurtig din internetforbindelse er. Min er 100Mb, så jeg ‘ er ret sikker på, at det vil bremse det;)
- Jeg ‘ har en 30Mbps internetforbindelse, og på dette tidspunkt med 5 Mbps trafik forbruger min indbyggede hindbær pi med fnug ~ 50-95% CPU og 85% hukommelse. Min opsætning er endnu ikke finjusteret, men jeg vil vise dig nogle reelle tal.
- gør nogen nej, hvordan allokering af dårlig bredde fungerer med en tilpasset router ved hjælp af hindbær pi? ligesom jeg har en sp eed af 3Mbps internetforbindelse har jeg 10 brugere. kan du forklare, hvordan vil det blive opdelt? hastigheden på 3 Mbps. Tak. Håber du forstår. 🙂
- Hej kirbs. Undlad at stille et spørgsmål om et andet spørgsmål. Åbn i stedet et nyt spørgsmål med linket Stil spørgsmål øverst på siden. Tak.
- Måske dette? learn.adafruit.com/…
Svar
Jeg har brugt min model B som en router med trafikformning ved hjælp af den ene Ethernet-port, den følger med. Her er en hurtig og beskidt, hvordan :
- Aktivér IPv4-videresendelse , så din Pi fungerer som en router ved at videresende al trafik, den modtager
-
Konfigurer din Pi med statisk netværkskonfiguration, så den ikke påvirkes af DHCP-ændringer, der foreslås nedenfor. Her er indholdet af min
/etc/network/interfaces
som reference:# 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
-
Skift nu dit netværks DHCP-indstillinger, så standardgatewayen / routeren er din Pi. Dette betyder sandsynligvis, at du ændrer indstillingerne på din eksisterende ADSL routerboks. I mit eksempel ovenfor er min Pis IP-adresse
192.168.1.1
.
Når dine enheder igen opretter forbindelse til netværk, får de at vide, at din Pi er deres gateway til internettet, og alt hvad de internetbundne trafik vil blive sendt til det. Din Pi vil til gengæld videresende al den trafik til din sædvanlige router. Du skal muligvis afbryde forbindelsen og derefter tilslutte dine enheder igen for at disse ændringer skal træde i kraft.
Nu kan du oprette eller installere et værktøj til at udføre din overvågning for dig, såsom vnstat .
Traffic Shaping
Hvad angår trafikformning, her er en anden hurtig og snavset guide, der vil bruge min egen personlige variant af wondershaper .
For at dette skal være nyttigt, skal du vide, hvor hurtig din internetforbindelse er. Du kan normalt finde dette fra din (originale ) routerens webgrænseflade, men hvis du ikke får et skøn ved hjælp af en speedtest .
-
sudo apt-get install iptables
-
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
-
sudo ./wondershaper eth0
udskrives den aktuelle status for trafikformning. Det er klart, at den forventede status er, at der ikke er nogen formning, hvilket betyder, at der “en enkelt regel i kraft kaldespfifo_fast
:- (
eth0
er navnet på den kablede netværksadapter på en model B. Seifconfig
for navnene på grænseflader på dit system)
# 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
, hvor:-
3000
er min internetforbindelses downlinkhastighed i kbit . Så 3Mbit == 3000kbit -
370
er min internetforbindelses uplinkhastighed i kbit igen.
-
-
sudo ./wondershaper eth0
skal nu vise meget mere 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 udgående netværkstrafik er nu ved at blive formet af din Pi, og din indgående trafik bliver spredt let for at sikre, at Pi , og ikke din oprindelige rutefelt, har kontrol over trafikken.
For at deaktivere formning skal du bare køre sudo ./wondershaper eth0 clear
. Du kan ændre uplink- og downlink-hastigheder uden først at rydde , men det gør ikke ondt.
Opdatering: Du skal også deaktivere transmission af ICMP omdirigerer , da vi har brug for al trafik for at gå igennem Pi for at formgivning skal ske.Det viser sig, at Linux-kernen er smart nok til at finde ud af, at klienterne på dit hjemmenetværk kunne tale direkte til ADSL-feltet i stedet for at hoppe trafik gennem Pi, og det fortæller dem dette ved enhver lejlighed. Kunderne sender derefter deres trafik direkte til din ADSL-boks, og Pi får ikke en chance for at forme den. Deaktiver den i farten som sådan (tabt, når du genstarter næste gang):
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
Opdater følgende for at indstille dette under opstart: /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
( Tak til https://unix.stackexchange.com/a/58081/22537 for dette tip)
Du kan også være interesseret i mine personlige noter om konfiguration af en Linux-gateway: http://www.robmeerman.co.uk/unix/gateway
Kommentarer
- hvordan indstiller du wifi-netværksnavnet og adgangskoden, som andre enheder kan oprette forbindelse til?
- En god guide. Jeg har et spørgsmål om din
wondershaper
forslag, dog: er grænsen pr. klient eller samlet? - @fommil: Min guide ovenfor antager, at du stadig bruger det modem / router / WiFi-adgangspunkt, som din internetudbyder gav dig, men at du konfigurerer det således, at alle klienter, der opretter forbindelse, bliver fortalt ” Send trafik til Pi “. Dette gøres normalt ved at indtaste din Pi ‘ s (statisk!) IP-adresse i DHCP-indstillingerne i din ISP-boks. Typisk i et felt kaldet ” Gateway “, ” Standardgateway ” eller måske ” Standardrute “.
- @Bob: De tal, du indtast er det samlede antal for dit internetlink. Wondershaper-scriptet end forsøger at fair-dele dette til alle dine kunder baseret på efterspørgsel . Så hvis kun en klient bruger internettet, skal den få 100% af det. Hvis en anden klient starter, vil de efter en smule ” afregningstid ” (~ 10 sekunder) bruge 50% hver, og så videre.
- Perfekt. Bare en note til @fommil, ingen af mine routere (og jeg antager, at mange flere er de samme) giver en nem måde at indstille gatewayen tildelt via DHCP. Jeg endte med at slukke for DHCP på routeren og oprette en DHCP-server på Pi – det ‘ er en ret simpel proces (søg efter en guide, hvis du vil).
Svar
Med en lille netværksbaggrund er det første, der kommer til at tænke på, at bruge det som en snortboks, og så behøver du ikke bekymre dig om kun at have en grænseflade. Du vil konfigurere din switch / router til at videresende al trafik til Pi, men også sende den til slutenheden. Dette er kendt som en switchport-skærm, men din enhed kan understøtter det ikke. Du har muligvis brug for en administreret switch for at gøre dette. Snort analyserer derefter trafikken og rapporterer om den. Flere oplysninger om Snort http://www.snort.org/
Det pæne ved denne form for opsætning er, at din Pi sidder til side og ser alt, hvad der køres gennem kontakten, snarere end at sidde integreret med dataene. Hvis du har en software g litch på denne måde, kan trafikken stadig strømme, bare ikke overvåges. Med det, du beskriver med to grænseflader, går dit program ned, dit netværk går ned.
Dette bruger ikke pi som en router, men giver dig mulighed for at overvåge og rapportere om trafik, der bevæger sig på tværs af dit netværk .
Svar
Jeg har brugt Raspberry Pi til routing, og det fungerede godt. Som du siger, skal du have mindst endnu et netværksinterface, da Raspberry Pi kun har en Ethernet-port. Du kan tilføje en anden grænseflade, der er tilsluttet USB-porten. Jeg har brugt et GSM-modem og en Wi-Fi-stick.
Ting at bemærke:
- Brug en strømforsynet USB-hub. Wi-Fi- og GSM-enheder kræver mere strøm, end hvad Raspberry Pis USB-porte kan levere.
- Hvis du køber Wi-Fi-enheder, skal du få en med god Linux-support. Du vil have en der fungerer i adgangspunkttilstand, og ikke alle pinde gør det. Tjek på linuxwireless.org .
Her er min blogindlæg om routing og en anden om opsætning af et Wi-Fi-adgangspunkt . Denne guide hjalp mig med routing-opsætningen. Routing-tingene er ikke særlig specifikke for Raspberry Pi; alt, hvad der fungerer på Linux generelt, burde være muligt. Detaljerne afhænger lidt af hvilken distribution, du bruger.
Svar
Jeg har brugt Raspberry Pi som en router i omkring en måned nu uden problemer . Jeg har en egentlig kommerciel Wi-Fi-adgangsport, ikke en hjemme-Wi-Fi-router, så jeg brugte det. Jeg har også en USB-til-Ethernet-konverter, der var lånte ” fra Wii.Det går til hjemmets LAN, og Raspberry Pis indbyggede Ethernet går til WAN / Internet.
Gå og hent en kopi af IPFire til Raspberry Pi. Du vil have ARM-versionen uden en seriekonsol og den seneste stabile version. Klik på ARM-fanen. Download ” Billedet til armv5tel-arkitekturen “.
Start det af. Tilslut et HDMI-tv og tastatur. Besvar de første par spørgsmål. Resten af konfigurationen kan gøres fra en browser på hjemmenetværket, så du behøver ikke tvet eller tastaturet efter det.
Det var ikke for hårdt og fungerede som en mester! Her er de formelle instruktioner: https://wiki.ipfire.org/hardware/arm/rpi/threeplus
En sidste ting. Hvis du skal bruge en USB-drevet Wi-Fi-dongle, skal du kontrollere din Raspberry Pis strømforsyning. En 700 mA USB-strømforsyning kan være nok til at drive Raspberry Pi, men det overlader ikke meget til at drive Wi-Fi -Fi. Brug enten en strømforsynet USB-hub, eller tænd for Raspberry Pi med en 1 til 2 A USB-strømforsyning.
Held og lykke!
Svar
(Dette tillæg følger mit tidligere svar , som var en guide til, hvordan du konfigurerer din Pi som din LANs internet-gateway)
Ikke tilfreds med at overvåge min samlede internetforbrug, jeg har skrevet et værktøj, der overvåger internetforbruget af hver enhed på mit LAN. Dette giver mig mulighed for at se den øjeblikkelige brug i et konsolvindue og generere diagrammer over historisk brug, så jeg kan se, hvad der skete natten over.
Rhodos , et værktøj til overvågning i realtid og historisk netværksbrug af LAN-enheder (baseret på MAC-adresse): https://github.com/meermanr/adsl/tree/master/rhodes
Eksempel på konsoloutput:
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 kolonne viser, hvor meget enheder transmitterer, hvilket normalt betyder upload til internettet. Undtagelsen herfra er det ADSL-routeren selv (hjemmegateway i eksemplet ovenfor), der transmitterer data modtaget fra internetudbyderen, den enhed, der anmodede om det (dvs. downloads). Selvfølgelig sender den også uploads til internettet, men det gør det ved hjælp af sit ADSL-modem, som ikke er på LAN og derfor ikke er synligt for dette værktøj.
Den anden undtagelse ville være Raspberry Pi (” Flux “i ovenstående) selv, som naturligvis transmitterer alle de data, den administrerer, i begge retninger.
Men bortset fra disse undtagelser henviser TX (transmittere) numre til upload og RX (modtag ) numre, der skal downloades. Den tredje kolonne er enhedens MAC-adresse (uden den sædvanlige “:” eller “-” separatorer). Den fjerde kolonne viser det menneskelige læsbare navn på enheden, hvis den er kendt.
Diagrammer genereres ved at køre ./index.py
, som er beregnet til at blive kaldt fra en webserver som lighttpd
(med index.py
føjet til index-file.names
konfigurationsindstillingen i /etc/lighttpd/lighttpd.conf
). Du kan bare køre det manuelt, og det vil generere nogle billeder og udskriv HTML til STDOUT. Så du vil omdirigere det til en fil, som du kan åbne i en browser:
./index.py > index.html
Åbn derefter index.html i dit foretrukne browser.
Installationskrav (alle kan installeres med apt-get install
):
-
tcpdump
– Kommandolinjeværktøjer til registrering og beskrivelse af netværkstrafik -
rrdtool
– Round Robin Database-værktøj, registrerer og kortlægger tidsseriedata -
rrdcached
– Round Robin Database Caching Daemon, service, der reducerer omkostninger, når du arbejder samtidigt med flere RRD-filer. -
pypy-upstream
(en hurtig implementering af Python-programmeringssproget)- Du kan bruge lageret Python er du kan lide:
python rhodes.py
(pypy
er en alternativ implementering af Python-programmeringssproget, der udfører Just-In-Time (JIT) -kompilering, så langvarige scripts bruger færre CPU-cyklusser på bekostning af mere hukommelse)
- Du kan bruge lageret Python er du kan lide:
Anvendelsesnotat : Værktøjet “tcpdump” brugt af dette script kræver rodrettigheder for at få adgang til rå netværkstrafik. Dette opnås ved at starte sudo tcpdump
når scriptet starter, så du bliver muligvis bedt om at indtaste din adgangskode. Personligt har jeg “tilføjet en NOPASSWD-regel til /etc/sudoers
, så jeg bliver aldrig bedt om det.