De Raspberry Pi als router gebruiken?

Heeft iemand zijn Raspberry Pi als routeringsapparaat gebruikt?

Ik wil het voornamelijk gebruiken om mijn netwerk te bewaken, en dat zou geweldig zijn als het een input en output had voor Ethernet, maar dat is niet zo, dus ik vraag me af of het erg effectief is om het netwerk te monitoren door de Ethernet-input te hebben en dan een USB-dongle te gebruiken als een wifi-router. heeft iemand zoiets gedaan? Vertraagt het internet veel?

Reacties

  • Hangt ervan af hoe snel je internetverbinding is. De mijne is 100 MB, dus ik ‘ ben er vrij zeker van dat het het zou vertragen;)
  • Ik ‘ heb een internetverbinding van 30 Mbps, en op dit moment met 5 Mbps aan verkeer, verbruikt mijn inline framboos pi met snort ~ 50-95% CPU en 85% geheugen. Mijn setup is nog niet afgesteld, maar ik wil je wat echte cijfers laten zien.
  • Weet iemand niet hoe slecht breedtetoewijzing werkt met een aangepaste router die Raspberry Pi gebruikt? zoals, ik heb een sp eed van 3 Mbps internetverbinding, ik heb 10 gebruikers. kun je uitleggen hoe het zal worden verdeeld? de snelheid van 3 Mbps. Bedankt. Hoop dat je het begrijpt. 🙂
  • Hallo kirbs. Stel alstublieft geen vraag over een andere vraag. Open in plaats daarvan een nieuwe vraag met de link Vraag stellen bovenaan de pagina. Dank je.
  • Misschien dit? learn.adafruit.com/…

Antwoord

Ik “gebruik mijn model B als een router met traffic shaping, met slechts de ene Ethernet-poort die ermee wordt geleverd. Hier is een snelle uitleg over hoe :

  1. Schakel IPv4-doorsturen in , zodat uw Pi fungeert als een router door al het ontvangen verkeer door te sturen.
  2. Configureer uw Pi met een statische netwerkconfiguratie zodat deze niet wordt beïnvloed door de hieronder voorgestelde DHCP-wijzigingen. Hier is de inhoud van mijn /etc/network/interfaces als referentie:

    # 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. Wijzig nu de DHCP-instellingen van uw netwerk zodat de standaardgateway / router uw Pi is. Dit betekent waarschijnlijk dat u de instellingen op uw bestaande ADSL routerbox. In mijn voorbeeld hierboven is het IP-adres van mijn Pi 192.168.1.1.

Wanneer uw apparaten de volgende keer opnieuw verbinding maken met de netwerk, wordt hen verteld dat uw Pi hun toegangspoort tot internet is, en al het internetgebonden verkeer wordt ernaar gestuurd. Uw Pi stuurt op zijn beurt al dat verkeer door naar uw gebruikelijke router. Mogelijk moet u uw apparaten loskoppelen en vervolgens opnieuw verbinden om deze wijzigingen door te voeren.

Nu kunt u een tool maken of installeren om uw monitoring voor u uit te voeren, zoals vnstat .

Traffic Shaping

Wat betreft traffic shaping, hier is nog een snelle en vuile gids die gebruik zal maken van mijn eigen persoonlijke variant van wondershaper .

Om dit nuttig te laten zijn, moet u weten hoe snel uw internetverbinding is. U kunt deze meestal vinden op uw (originele ) router, maar als dat niet lukt, kunt u een schatting krijgen met behulp van een snelheidstest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 zal afdrukken de huidige status van traffic shaping. Het is duidelijk dat de verwachte status is dat er geen vormgeving is, wat betekent dat er “een enkele regel van kracht is, genaamd pfifo_fast:

    • (eth0 is de naam van de bedrade netwerkadapter op een model B. Zie ifconfig voor de namen van interfaces op uw systeem)
    # 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, waarbij:

    • 3000 de downlinksnelheid van mijn internetverbinding is in kbit . Dus 3Mbit == 3000kbit
    • 370 is de uplinksnelheid van mijn internetverbinding, weer in kbit.
  5. sudo ./wondershaper eth0 zou nu veel meer output moeten laten zien:

    # 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 

Uw uitgaande netwerkverkeer wordt nu gevormd door uw Pi, en uw inkomend verkeer wordt enigszins beperkt om ervoor te zorgen dat de Pi , en niet uw oorspronkelijke routingbox, heeft controle over het verkeer.

Om shaping uit te schakelen, voert u gewoon sudo ./wondershaper eth0 clear uit. U kunt de uplink- en downlink-snelheden wijzigen zonder eerst te wissen , maar het doet geen “pijn.

Update: Je moet ook de verzending van ICMP-omleidingen , aangezien we al het verkeer nodig hebben om door de Pi te gaan om vormgeving te laten plaatsvinden.Het blijkt dat de Linux-kernel slim genoeg is om erachter te komen dat de clients op je thuisnetwerk rechtstreeks met de ADSL-box kunnen praten, in plaats van verkeer door de Pi te laten stuiteren, en het vertelt ze dit bij elke gelegenheid. De clients sturen hun verkeer vervolgens rechtstreeks naar uw ADSL-box, en de Pi krijgt geen kans om het vorm te geven. Schakel het zo snel mogelijk uit (verloren wanneer u de volgende keer opnieuw opstart):

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

Werk het volgende bij om dit tijdens het opstarten in te stellen: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Met dank aan https://unix.stackexchange.com/a/58081/22537 voor deze tip)

Mogelijk bent u ook geïnteresseerd in mijn persoonlijke aantekeningen over het configureren van een Linux-gateway: http://www.robmeerman.co.uk/unix/gateway

Reacties

  • hoe stel je de wifi-netwerknaam en het wachtwoord in waarmee andere apparaten verbinding kunnen maken?
  • Een geweldige gids. Ik heb een vraag over je wondershaper suggestie: is de limiet per client of algemeen?
  • @fommil: Mijn gids hierboven gaat ervan uit dat je nog steeds de modem / router / WiFi-toegangspunt gebruikt die je ISP je heeft gegeven, maar dat u het zo configureert dat alle clients die verbinding maken, wordt verteld ” Stuur verkeer naar de Pi “. Dit wordt gewoonlijk gedaan door uw Pi ‘ s (statisch!) IP-adres in te voeren in de DHCP-instellingen van uw ISP-box. Meestal in een veld met de naam ” Gateway “, ” Default Gateway “, of misschien ” Standaardroute “.
  • @Bob: de nummers die u enter is het totaal van uw internetlink. Het wondershaper-script probeert dit dan eerlijk te delen met al uw klanten op basis van vraag . Dus als slechts één klant internet gebruikt, zou deze er 100% van moeten krijgen. Als een andere client opstart, zullen ze, na een korte ” insteltijd ” (~ 10 seconden) elk 50% gebruiken, enzovoort.
  • Perfect. Gewoon een opmerking voor @fommil, geen van mijn routers (en ik neem aan dat er veel meer hetzelfde zijn) biedt een gemakkelijke manier om de gateway in te stellen die is toegewezen via DHCP. Uiteindelijk heb ik DHCP op de router uitgeschakeld en een DHCP-server op de Pi opgezet – het ‘ is een vrij eenvoudig proces (zoek naar een gids als je dat wilt).

Answer

Met een beetje netwerkachtergrond, is het eerste dat in me opkomt het gebruiken als een Snort-box, en dan hoef je je geen zorgen te maken dat je maar één interface hebt. Je zou je switch / router instellen om al het verkeer naar de Pi door te sturen, maar het ook door te geven aan het eindapparaat. Dit staat bekend als een switchpoortmonitor, maar je apparaat kan ondersteunt het niet. Mogelijk hebt u een beheerde switch nodig om dit te doen. Snort analyseert het verkeer en rapporteert erover. Meer informatie over Snort http://www.snort.org/

Het leuke van dit soort instellingen is dat je Pi aan de kant zit te kijken naar alles wat wordt door de schakelaar geleid, in plaats van in de rij te zitten met de gegevens. Als je een software hebt g litch op deze manier, het verkeer kan nog steeds stromen, alleen niet worden gecontroleerd. Met wat je beschrijft met twee interfaces, crasht je programma, crasht je netwerk.

Dit gebruikt de pi niet als een router, maar stelt je wel in staat om verkeer dat door je netwerk beweegt te volgen en erover te rapporteren .

Antwoord

Ik heb de Raspberry Pi gebruikt voor routing, en het werkte goed. Zoals je zegt, heb je nog minstens één netwerkinterface nodig, omdat de Raspberry Pi maar één Ethernet-poort heeft. U kunt een andere interface toevoegen die is aangesloten op de USB-poort. Ik heb een gsm-modem en een wifi-stick gebruikt.

Aandachtspunten:

  • Gebruik een USB-hub met voeding. Wi-Fi- en GSM-apparaten vragen meer stroom dan wat de USB-poorten van de Raspberry Pi kunnen leveren.
  • Als je winkelt voor Wi-Fi-apparaten, koop er dan een met goede Linux-ondersteuning. Je wilt er een die werkt in access point-modus, en niet alle sticks. Controleer op linuxwireless.org .

Hier is mijn blogpost over routing en een andere over het opzetten van een wifi-toegangspunt . Deze handleiding heeft me geholpen met het instellen van de routering. De routering is niet erg specifiek voor de Raspberry Pi; alles wat in het algemeen op Linux werkt, zou mogelijk moeten zijn. De details zijn een beetje afhankelijk van welke distributie die u gebruikt.

Answer

Ik gebruik de Raspberry Pi nu ongeveer een maand zonder problemen als router . Ik heb een echte commerciële Wi-Fi-toegangspoort, geen Wi-Fi-router thuis, dus ik heb die gebruikt. Ik heb ook een USB-naar-Ethernet-converter die geleend ” van de Wii.Dat gaat naar het thuis-LAN, en het ingebouwde Ethernet van de Raspberry Pi gaat naar het WAN / internet.

Haal een kopie op van IPFire voor de Raspberry Pi. U wilt de ARM-versie, zonder seriële console en de laatste stabiele versie. Klik op het tabblad ARM. Download de ” Afbeelding voor de armv5tel-architectuur “.

Start ervan. Sluit een HDMI-tv en toetsenbord aan. Beantwoord de eerste paar vragen. De rest van de configuratie kan worden gedaan vanuit een browser op het thuisnetwerk, dus daarna heb je de tv of het toetsenbord niet meer nodig.

Het was niet al te moeilijk en werkte als een kampioen! Hier zijn de formele instructies: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

Een laatste ding. Als je een wifi-dongle met USB-voeding gaat gebruiken, controleer dan de voeding van je Raspberry Pi. Een USB-voeding van 700 mA is misschien genoeg om de Raspberry Pi van stroom te voorzien, maar er blijft niet veel over om de wifi van stroom te voorzien. -Fi. Gebruik een USB-hub met voeding of voorzie de Raspberry Pi van een 1 tot 2 A USB-voeding.
Veel succes!

Antwoord

(Dit addendum volgt op mijn vorige antwoord , dat een handleiding was voor het configureren van je Pi als de internetgateway van je LAN)

Ik ben niet tevreden met het monitoren van mijn algehele internetgebruik, ik heb een tool geschreven die het internetgebruik van elk apparaat op mijn LAN controleert. Hierdoor kan ik het onmiddellijke gebruik in een consolevenster zien en grafieken van historisch gebruik genereren, zodat ik kan zien wat er van de ene op de andere dag is gebeurd.


Rhodes , een tool voor het bewaken van realtime en historisch netwerkgebruik van LAN-apparaten (op basis van MAC-adres): https://github.com/meermanr/adsl/tree/master/rhodes

Voorbeeld van console-uitvoer:

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 

De eerste kolom laat zien hoeveel apparaten zenden uit, wat meestal betekent dat ze naar internet moeten worden geüpload. De uitzondering hierop is de ADSL-router zelf (home.gateway in het voorbeeld hierboven) die gegevens verzendt die zijn ontvangen van de ISP van het apparaat dat daarom heeft verzocht (d.w.z. downloads). Natuurlijk verzendt het ook uploads naar het internet, maar het doet dat met behulp van zijn ADSL-modem, die niet op het LAN staat en dus niet zichtbaar is voor deze tool.

De andere uitzondering is de Raspberry Pi (” Flux in het bovenstaande) zelf, die natuurlijk alle gegevens die het beheert, in beide richtingen verzendt.

Maar afgezien van deze uitzonderingen verwijzen de TX (verzend) nummers naar upload, en de RX (ontvang ) nummers om te downloaden. De derde kolom is het MAC-adres van het apparaat (zonder de gebruikelijke “:” of “-” scheidingstekens). De vierde kolom toont de voor mensen leesbare naam van het apparaat, als deze bekend is.

Grafieken worden gegenereerd door ./index.py uit te voeren, wat bedoeld is om te worden aangeroepen vanaf een webserver zoals lighttpd (met index.py toegevoegd aan de index-file.names configuratie-instelling in /etc/lighttpd/lighttpd.conf). Je kunt het gewoon handmatig uitvoeren en het zal enkele afbeeldingen genereren en print HTML naar STDOUT. Dus je zou dat willen omleiden naar een bestand dat je in een browser kunt openen:

./index.py > index.html 

Open vervolgens index.html in je favoriete browser.

Installatievereisten (ze kunnen allemaal worden geïnstalleerd met apt-get install):

  • tcpdump – Command line tools voor het vastleggen en beschrijven van netwerkverkeer
  • rrdtool – Round Robin Database tool, registreert en grafieken tijdreeksgegevens
  • rrdcached – Round Robin Database Caching Daemon, service die overheadkosten vermindert bij gelijktijdig werken met meerdere RRD-bestanden.
  • pypy-upstream (een snelle implementatie van de programmeertaal Python)

    • Je kunt de standaard Python gebruiken zoals je wilt: python rhodes.py (pypy is een alternatieve implementatie van de programmeertaal Python die Just-In-Time (JIT) -compilatie uitvoert, dus langlopende scripts zullen minder CPU-cycli gebruiken ten koste van meer geheugen)

Gebruiksnotitie : de “tcpdump” tool gebruikt door dit script vereist rootprivileges om toegang te krijgen tot onbewerkt netwerkverkeer. Dit wordt bereikt door sudo tcpdump te starten wanneer het script start, dus u wordt mogelijk gevraagd om uw wachtwoord in te voeren. Persoonlijk heb ik “een NOPASSWD-regel toegevoegd aan /etc/sudoers, dus ik word er nooit om gevraagd.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *