Använder du Raspberry Pi som en router?

Har någon använt sin Raspberry Pi som en routningsenhet?

Jag vill huvudsakligen använda den för att övervaka mitt nätverk och det skulle vara bra om den hade en in- och utgång för Ethernet, men det gör det inte, så jag undrar om det är mycket effektivt att övervaka nätverket genom att ha Ethernet-ingången och sedan använda en USB-dongel som en Wi-Fi-router. har någon gjort något liknande? Saktar det ner internet mycket?

Kommentarer

  • Beror på hur snabb din internetanslutning är. Min är 100Mb, så jag ’ är ganska säker på att det skulle sakta ner det;)
  • Jag ’ har en 30 Mbps internetanslutning, och vid den här tiden med 5 Mbps trafik förbrukar mitt inbyggda hallon-pi med snort ~ 50-95% CPU och 85% minne. Min inställning är ännu inte finjusterad, men jag vill visa dig några riktiga siffror.
  • gör någon nej hur tilldelning av dålig bredd fungerar med en anpassad router med hallon pi? som jag har en sp med 3 Mbps internetanslutning har jag 10 användare. kan du förklara hur kommer det att delas upp? hastigheten på 3 Mbps. Tack. Hoppas du förstår. 🙂
  • Hej kirbs. Vänligen avstå från att ställa en fråga om en annan fråga. Öppna istället en ny fråga med länken Ställ fråga högst upp på sidan. Tack.
  • Kanske det här? learn.adafruit.com/…

Svar

Jag har använt min modell B som en router med trafikformning med bara den Ethernet-port som den kommer med. Här är en snabb och smutsig hur :

  1. Aktivera vidarebefordran av IPv4 , så att din Pi fungerar som en router genom att vidarebefordra all trafik den tar emot
  2. Konfigurera din Pi med statisk nätverkskonfiguration så att den inte påverkas av DHCP-ändringar som föreslås nedan. Här är innehållet i min /etc/network/interfaces som referens:

    # 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. Ändra nu nätverkets DHCP-inställningar så att standardgatewayen / routern är din Pi. Detta innebär sannolikt att du ändrar inställningarna på din befintliga ADSL routerbox. I mitt exempel ovan är min Pi: s IP-adress 192.168.1.1.

När dina enheter återansluts till nätverk, kommer de att få veta att din Pi är deras port till internet, och all den internetbundna trafiken kommer att skickas till den. Din Pi kommer i sin tur att vidarebefordra all den trafiken till din vanliga router. Du kan behöva koppla från och sedan ansluta dina enheter igen för att dessa ändringar ska träda i kraft.

Nu kan du skapa eller installera ett verktyg för att göra din övervakning åt dig, till exempel vnstat .

Traffic Shaping

När det gäller trafikformning, här är en annan snabb och smutsig guide som använder min egen personliga variant av wondershaper .

För att detta ska vara användbart måste du veta hur snabb din internetanslutning är. Du hittar vanligtvis detta från din (original ) routerns webbgränssnitt, men om du inte får en uppskattning med speedtest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 kommer att skrivas ut den aktuella statusen för trafikformning. Uppenbarligen är den förväntade statusen att det inte finns någon formning, vilket betyder att ”en enda regel i kraft kallas pfifo_fast:

    • (eth0 är namnet på den trådbundna nätverksadaptern på en modell B. Se ifconfig för namnen på gränssnitt på ditt 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 
  4. sudo ./wondershaper eth0 3000 370, där:

    • 3000 är min internetanslutnings nedlänkshastighet i kbit . Så 3Mbit == 3000kbit
    • 370 är min internetanslutnings upplänkhastighet, i kbit igen.
  5. sudo ./wondershaper eth0 ska nu visa mycket 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 nätverkstrafik formas nu av din Pi och din inkommande trafik stryps något för att säkerställa att Pi , och inte din ursprungliga routningsruta, har kontroll över trafiken.

För att inaktivera formning, kör bara sudo ./wondershaper eth0 clear. Du kan ändra upplänks- och nedlänkhastigheter utan att först rensa , men det gör inte ont.

Uppdatering: Du måste också inaktivera överföringen av ICMP omdirigerar , eftersom vi behöver all trafik för att gå igenom Pi för att formningen ska hända.Det visar sig att Linux-kärnan är tillräckligt smart för att räkna ut att klienterna i ditt hemnätverk kunde prata direkt till ADSL-rutan, snarare än att studsa trafik genom Pi, och det berättar för dem detta vid varje tillfälle. Klienterna skickar sedan sin trafik direkt till din ADSL-ruta, och Pi får inte chansen att forma den. Inaktivera den i farten så (förlorad när du startar om nästa gång):

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

Uppdatera följande för att ställa in detta under start: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Tack till https://unix.stackexchange.com/a/58081/22537 för detta tips)

Du kanske också är intresserad av mina personliga anteckningar om konfigurering av en Linux-gateway: http://www.robmeerman.co.uk/unix/gateway

Kommentarer

  • hur ställer du in wifi-nätverksnamnet och lösenordet som andra enheter kan ansluta till?
  • En bra guide. Jag har en fråga om din wondershaper -förslag, dock: är gränsen per klient eller övergripande?
  • @fommil: Min guide ovan förutsätter att du fortfarande använder modem / router / WiFi-åtkomstpunkt som din ISP gav dig, men att du konfigurerar det så att alla klienter som ansluter får höra ” Skicka trafik till Pi ”. Detta görs vanligtvis genom att ange din Pi ’ s (statisk!) IP-adress i DHCP-inställningarna i din ISP-ruta. Vanligtvis i ett fält som heter ” Gateway ”, ” Standardgateway ”, eller kanske ” Standardrutt ”.
  • @Bob: Numren du ange är summan för din internetlänk. Wondershaper-skriptet än att försöka dela detta med alla dina kunder baserat på efterfrågan . Så om bara en klient använder internet borde den få 100% av det. Om en annan klient startar kommer de efter lite ” avvecklingstid ” (~ 10 sekunder) att använda 50% vardera, och så vidare.
  • Perfekt. Bara en anteckning till @fommil, ingen av mina routrar (och jag antar att många fler är desamma) ger ett enkelt sätt att ställa in den gateway som tilldelats via DHCP. Jag slutade med att stänga av DHCP på routern och ställa in en DHCP-server på Pi – det ’ är en ganska enkel process (sök efter en guide om du vill).

Svar

Med lite nätverksbakgrund är det första som kommer att tänka på att använda den som en fnysruta, och då behöver du inte oroa dig för att bara ha ett gränssnitt. Du skulle ställa in din switch / router för att vidarebefordra all trafik till Pi, men också skicka den till slutenheten. Detta kallas en switchportmonitor, men din enhet kanske stöder inte det. Du kan behöva en hanterad switch för att göra detta. Snort analyserar sedan trafiken och rapporterar om den. Mer information om Snort http://www.snort.org/

Det fina med denna typ av installation är att din Pi sitter åt sidan och tittar på allt som körs genom omkopplaren, snarare än att sitta inbyggd med data. Om du har en programvara g litch på detta sätt kan trafiken fortfarande flyta, bara inte övervakas. Med det du beskriver med två gränssnitt kraschar ditt program, ditt nätverk kraschar.

Detta använder inte pi som en router, men låter dig övervaka och rapportera om trafik som rör sig över ditt nätverk .

Svar

Jag har använt Raspberry Pi för routing och det fungerade bra. Som du säger behöver du minst ett nätverksgränssnitt till, eftersom Raspberry Pi bara har en Ethernet-port. Du kan lägga till ett annat gränssnitt anslutet till USB-porten. Jag har använt ett GSM-modem och ett Wi-Fi-minne.

Att tänka på:

  • Använd en USB-hub med strömförsörjning. Wi-Fi- och GSM-enheter kräver mer ström än vad Raspberry Pi: s USB-portar kan leverera.
  • Om du handlar efter Wi-Fi-enheter får du en med bra Linux-stöd. Du vill ha en som fungerar i åtkomstpunktsläge, och inte alla pinnar gör det. Kontrollera på linuxwireless.org .

Här är min blogginlägg om routing och ett annat om att ställa in en Wi-Fi-åtkomstpunkt . Den här guiden hjälpte mig med routing-inställningen. Routing-grejerna är inte särskilt specifika för Raspberry Pi; allt som fungerar på Linux i allmänhet borde vara möjligt. Detaljerna beror lite på vilken distribution du använder.

Svar

Jag har använt Raspberry Pi som en router i ungefär en månad nu, utan några problem . Jag har en faktisk kommersiell Wi-Fi-port, inte en hem-Wi-Fi-router, så jag använde det. Jag har också en USB-till-Ethernet-omvandlare som var lånade ” från Wii.Det går till hem-LAN och Raspberry Pi: s inbyggda Ethernet går till WAN / Internet.

Gå och få en kopia av IPFire för Raspberry Pi. Du vill ha ARM-versionen utan en seriekonsol och den senaste stabila versionen. Klicka på fliken ARM. Ladda ner ” Bild för armv5tel-arkitekturen ”.

Starta av det. Anslut en HDMI-TV och tangentbord. Besvara de första frågorna. Resten av konfigurationen kan göras från en webbläsare på hemnätverket, så du behöver inte TV: n eller tangentbordet efter det.

Det var inte så svårt och fungerade som en mästare! Här är de formella instruktionerna: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

En sista sak. Om du ska använda en USB-driven Wi-Fi-dongel, kontrollera din Raspberry Pi-strömförsörjning. En 700 mA USB-strömförsörjning kan räcka för att driva Raspberry Pi, men det lämnar inte mycket åt strömmen till Wi-Fi -Fi. Använd antingen en USB-hubb med strömförsörjning eller strömförsörj Raspberry Pi med en USB-strömförsörjning på 1 till 2 A.
Lycka till!

Svar

(Detta tillägg följer mitt tidigare svar , som var en guide om hur du konfigurerar din Pi som din LANs internet-gateway)

Inte nöjd med att övervaka min totala internetanvändning, jag har skrivit ett verktyg som övervakar internetanvändningen för varje enhet på mitt LAN. Detta gör att jag kan se den omedelbara användningen i ett konsolfönster och skapa diagram över historisk användning så att jag kan se vad som hände över natten.


Rhodos , ett verktyg för övervakning i realtid och historisk nätverksanvändning av LAN-enheter (baserat på MAC-adress): https://github.com/meermanr/adsl/tree/master/rhodes

Exempel på konsolutgång:

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örsta kolumnen visar hur mycket enheter sänder, vilket vanligtvis innebär uppladdning till internet. Undantaget från detta är det ADSL-routern själv (hemgatan i exemplet ovan) som överför data som tas emot från ISP-enheten den enhet som begärde det (dvs. nedladdningar). Naturligtvis överför den också uppladdningar till internet, men det gör det med sitt ADSL-modem, som inte finns på LAN och så inte syns för detta verktyg.

Det andra undantaget skulle vara Raspberry Pi (” Flux ”i ovanstående) själv, som naturligtvis överför all data den hanterar, i båda riktningarna.

Men förutom dessa undantag hänvisar TX (sänd) numren till uppladdning och RX (mottag ) nummer att ladda ner. Den tredje kolumnen är enhetens MAC-adress (utan den vanliga separatorn ”:” eller ”-”. Den fjärde kolumnen visar enhetens läsbara namn, om det är känt.

Diagram genereras genom att köra ./index.py, som är avsedd att anropas från en webbserver som lighttpd (med index.py läggs till i index-file.names konfigurationsinställningen i /etc/lighttpd/lighttpd.conf). Du kan bara köra den manuellt så genereras några bilder och skriv ut HTML till STDOUT. Så du vill omdirigera det till en fil som du kan öppna i en webbläsare:

./index.py > index.html 

Öppna sedan index.html efter önskad webbläsare.

Installationskrav (alla kan installeras med apt-get install):

  • tcpdump – Kommandoradsverktyg för att fånga och beskriva nätverkstrafik
  • rrdtool – Round Robin Database-verktyg, registrerar och kartlägger tidsseriedata
  • rrdcached – Round Robin Database Caching Daemon, tjänst som minskar omkostnader när du arbetar samtidigt med flera RRD-filer.
  • pypy-upstream (en snabb implementering av Python-programmeringsspråket)

    • Du kan använda beståndet Python är som du vill: python rhodes.py (pypy är en alternativ implementering av Python-programmeringsspråket som gör Just-In-Time (JIT) -kompilering, så långvariga skript kommer att använda mindre CPU-cykler till kostnaden för mer minne)

Användningsanteckning : ”tcpdump” -verktyget används av detta skript kräver root-behörigheter för att få åtkomst till rå nätverkstrafik. Detta uppnås genom att starta sudo tcpdump när skriptet startar, så du kan bli ombedd att ange ditt lösenord. Personligen har jag lagt till en NOPASSWD-regel i /etc/sudoers så jag blir aldrig uppmanad.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *