Quelquun a-t-il utilisé son Raspberry Pi comme périphérique de routage?
Je souhaite principalement lutiliser pour surveiller mon réseau, et il le ferait être génial sil avait une entrée et une sortie pour Ethernet, mais ce nest pas le cas, alors je me demande sil est très efficace de surveiller le réseau en ayant une entrée Ethernet puis en utilisant un dongle USB comme routeur Wi-Fi. quelquun a fait quelque chose comme ça? Est-ce que cela ralentit beaucoup Internet?
Commentaires
- Cela dépend de la vitesse de votre connexion Internet. La mienne est de 100 Mo, donc je ‘ je suis presque sûr que cela ralentirait;)
- Jai ‘ une connexion Internet de 30 Mbps, et pour le moment avec 5 Mbps de trafic, mes raspberry pi en ligne avec snort consomment environ 50 à 95% de CPU et 85% de mémoire. Ma configuration nest pas encore réglée, mais je veux vous montrer quelques chiffres réels.
- est-ce que nimporte qui non comment lallocation de bande passante fonctionne avec un routeur personnalisé utilisant Raspberry Pi? comme, jai un sp eed de connexion Internet 3Mbps, jai 10 utilisateurs. pouvez-vous expliquer comment sera-t-il divisé? la vitesse de 3Mbps. Merci. Jespère que tu as compris. 🙂
- Bonjour kirbs. Veuillez ne pas poser de question sur une autre question. À la place, ouvrez une nouvelle question avec le lien Poser une question en haut de la page. Merci.
- Peut-être ceci? learn.adafruit.com/…
Réponse
Jutilise mon modèle B comme routeur avec la mise en forme du trafic, en nutilisant que le seul port Ethernet fourni. Voici « comment :
- Activez le transfert IPv4 , afin que votre Pi agisse comme un routeur en transférant tout trafic quil reçoit
-
Configurez votre Pi avec une configuration réseau statique afin quil ne soit pas influencé par les changements DHCP suggérés ci-dessous. Voici le contenu de mon
/etc/network/interfaces
comme référence:# 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
-
Modifiez maintenant les paramètres DHCP de votre réseau de sorte que la passerelle / routeur par défaut soit votre Pi. Cela signifie probablement que vous modifiez les paramètres de votre ADSL existant routeur. Dans mon exemple ci-dessus, ladresse IP de mon Pi est
192.168.1.1
.
Lors de la prochaine reconnexion de vos appareils au réseau, ils seront informés que votre Pi est leur passerelle vers Internet, et tout le trafic Internet leur sera envoyé. Votre Pi relèvera à son tour tout ce trafic vers votre routeur habituel. Vous devrez peut-être déconnecter puis reconnecter vos appareils pour que ces modifications prennent effet.
Vous pouvez maintenant créer ou installer un outil pour effectuer votre surveillance à votre place, tel que vnstat .
Trafic Shaping
En ce qui concerne la mise en forme du trafic, voici un autre guide rapide et sale qui utilisera ma propre variante personnelle de Wondershaper .
Pour que cela soit utile, vous devez connaître la vitesse de votre connexion Internet. Vous pouvez généralement le trouver à partir de votre (original ), mais à défaut, vous pouvez obtenir une estimation à laide dun speedtest .
-
sudo apt-get install iptables
-
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
-
sudo ./wondershaper eth0
simprimera létat actuel de la configuration du trafic. De toute évidence, létat attendu est quil ny a pas de mise en forme, ce qui signifie quil ny a « quune seule règle en vigueur, appeléepfifo_fast
:- (
eth0
est le nom de la carte réseau filaire sur un modèle B. Voirifconfig
pour les noms des interfaces sur votre système)
# 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
, où:-
3000
est la vitesse de liaison descendante de ma connexion Internet en kbit . Donc 3Mbit == 3000kbit -
370
est la vitesse de liaison montante de ma connexion Internet, à nouveau en kbit.
-
-
sudo ./wondershaper eth0
devrait maintenant afficher beaucoup plus de sortie:# 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
Votre trafic réseau sortant est maintenant façonné par votre Pi, et votre trafic entrant est légèrement limité pour garantir que le Pi , et non votre boîte de routage dorigine, contrôle le trafic.
Pour désactiver la mise en forme, exécutez simplement sudo ./wondershaper eth0 clear
. Vous pouvez modifier les taux de liaison montante et descendante sans effacer au préalable , mais ça ne fait pas mal.
Mise à jour: Vous devez également désactiver la transmission de Redirections ICMP , car nous avons besoin que tout le trafic passe par le Pi pour que la mise en forme se produise.Il savère que le noyau Linux est suffisamment intelligent pour comprendre que les clients de votre réseau domestique pourraient parler directement au boîtier ADSL, plutôt que de renvoyer le trafic via le Pi, et il le leur dit à chaque occasion. Les clients envoient alors leur trafic directement vers votre boîtier ADSL, et le Pi na pas la possibilité de le façonner. Désactivez-le à la volée comme ceci (perdu lors du prochain redémarrage):
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
Mettez à jour ce qui suit pour définir ceci pendant le démarrage: /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
( Merci à https://unix.stackexchange.com/a/58081/22537 pour cette astuce)
Vous pourriez également être intéressé par mes notes personnelles sur la configuration dune passerelle Linux: http://www.robmeerman.co.uk/unix/gateway
Commentaires
- Comment définir le nom et le mot de passe du réseau Wi-Fi auxquels les autres appareils peuvent se connecter?
- Un excellent guide. Jai une question sur votre
wondershaper
suggestion, cependant: est la limite par client ou globale? - @fommil: Mon guide ci-dessus suppose que vous utilisez toujours le modem / routeur / point daccès WiFi que votre FAI vous a donné, mais que vous le configurez de manière à ce que tous les clients qui se connectent soient informés » Envoyer le trafic vers le Pi « . Cela se fait généralement en entrant votre adresse IP Pi ‘ (statique!) Dans les paramètres DHCP de votre boîte FAI. Généralement dans un champ appelé » Passerelle « , » Passerelle par défaut « , ou peut-être » Route par défaut « .
- @Bob: Les nombres que vous entrez sont le total de votre lien Internet. Le script Wondershaper tente de partager cela avec tous vos clients en fonction de la demande . Donc, si un seul client utilise Internet, il devrait en obtenir 100%. Si un autre client démarre, il finira, après un peu de » temps de règlement » (~ 10 secondes), utiliser 50% chacun, et ainsi de suite.
- Parfait. Juste une note à @fommil, aucun de mes routeurs (et je suppose que beaucoup dautres sont identiques) ne fournissent un moyen facile de définir la passerelle attribuée via DHCP. Jai fini par désactiver le DHCP sur le routeur et configurer un serveur DHCP sur le Pi – cest ‘ un processus assez simple (recherchez un guide si vous le souhaitez).
Réponse
Ayant un peu dexpérience réseau, la première chose qui me vient à lesprit est de lutiliser comme une boîte Snort, et alors vous navez pas à vous soucier de navoir quune seule interface. Vous configureriez votre commutateur / routeur pour transférer tout le trafic vers le Pi, mais également le transmettre au périphérique final. Ceci est connu comme un moniteur de switchport, mais votre appareil peut ne le prend pas en charge. Vous aurez peut-être besoin dun commutateur géré pour ce faire. Snort analyserait alors le trafic et créerait un rapport sur celui-ci. Plus dinformations sur Snort http://www.snort.org/
La bonne chose à propos de ce type de configuration est que votre Pi est assis sur le côté en regardant tout ce qui est exécuté via le commutateur, plutôt que de rester en ligne avec les données. Si vous avez un logiciel g De cette façon, le trafic peut toujours circuler, mais ne pas être surveillé. Avec ce que vous décrivez avec deux interfaces, votre programme se bloque, votre réseau se bloque.
Cela nutilise pas le pi comme un routeur, mais vous permet de surveiller et de signaler le trafic qui se déplace sur votre réseau .
Réponse
Jai utilisé le Raspberry Pi pour le routage, et cela a bien fonctionné. Comme vous le dites, vous avez besoin dau moins une interface réseau supplémentaire, car le Raspberry Pi na quun seul port Ethernet. Vous pouvez ajouter une autre interface connectée au port USB. Jai utilisé un modem GSM et une clé Wi-Fi.
À noter:
- Utilisez un concentrateur USB alimenté. Les appareils Wi-Fi et GSM exigent plus de puissance que ce que les ports USB du Raspberry Pi peuvent fournir.
- Si vous achetez des appareils Wi-Fi, achetez-en un avec une bonne prise en charge de Linux. Vous en voulez un qui fonctionne en point daccès, et tous les sticks ne le font pas. Vérifiez à linuxwireless.org .
Voici mon article de blog sur le routage et un autre sur la configuration dun point daccès Wi-Fi . Ce guide ma aidé avec la configuration du routage. Le routage nest pas très spécifique au Raspberry Pi; tout ce qui fonctionne sous Linux en général devrait être possible. Les détails dépendent un peu de qui distribution que vous utilisez.
Réponse
Jutilise le Raspberry Pi comme routeur depuis environ un mois maintenant, sans aucun problème . Jai un vrai port daccès Wi-Fi commercial, pas un routeur Wi-Fi domestique, alors je lai utilisé. Jai aussi un convertisseur USB-Ethernet qui était a emprunté » à la Wii.Cela va au LAN domestique, et lEthernet intégré du Raspberry Pi va au WAN / Internet.
Allez obtenir une copie de IPFire pour le Raspberry Pi. Vous voulez la version ARM, sans console série et la dernière version stable. Cliquez sur longlet ARM. Téléchargez limage » pour larchitecture armv5tel « .
Démarrez. Branchez un téléviseur HDMI et un clavier. Répondez aux premières questions. Le reste de la configuration peut être effectué à partir dun navigateur sur le réseau domestique, vous n’avez donc plus besoin de la télévision ou du clavier après cela.
Ce n’était pas trop difficile et a travaillé comme un champion! Voici les instructions formelles: https://wiki.ipfire.org/hardware/arm/rpi/threeplus
Une dernière chose. Si vous comptez utiliser un dongle Wi-Fi alimenté par USB, vérifiez lalimentation de votre Raspberry Pi. Une alimentation USB de 700 mA peut suffire pour alimenter le Raspberry Pi, mais cela ne laisse pas grand-chose pour alimenter le Wi -Fi. Utilisez un hub USB alimenté ou alimentez le Raspberry Pi avec une alimentation USB 1 à 2 A.
Bonne chance!
Réponse
(Cet addendum suit ma réponse précédente , qui était un guide sur la façon de configurer votre Pi comme passerelle Internet de votre LAN)
Non content de surveiller mon utilisation globale dInternet, jai écrit un outil qui surveille lutilisation dInternet de chaque appareil sur mon LAN. Cela me permet de voir lutilisation instantanée dans une fenêtre de console et de générer des graphiques dutilisation historique afin que je puisse voir ce qui sest passé pendant la nuit.
Rhodes , un outil pour surveiller en temps réel et lhistorique de lutilisation du réseau des périphériques LAN (basé sur ladresse MAC): https://github.com/meermanr/adsl/tree/master/rhodes
Exemple de sortie de la 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 première colonne montre combien les appareils transmettent, ce qui signifie généralement le téléchargement sur Internet. Lexception à cela est le routeur ADSL lui-même (home.gateway dans lexemple ci-dessus) qui transmet les données reçues du FAI à lappareil qui la demandé (cest-à-dire les téléchargements). Bien sûr, il transmet également les téléchargements vers Internet, mais il le fait en utilisant son modem ADSL, qui nest pas sur le LAN et donc invisible pour cet outil.
Lautre exception serait le Raspberry Pi ( » Flux « dans ce qui précède) lui-même, qui bien sûr transmet toutes les données quil gère, dans les deux sens.
Mais à part ces exceptions, les numéros TX (émission) se réfèrent au téléchargement, et le RX (réception ) numéros à télécharger. La troisième colonne est ladresse MAC de lappareil (sans les séparateurs habituels « : » ou « -« ). La quatrième colonne indique le nom lisible par lhomme de lappareil, sil est connu.
Graphiques sont générés en exécutant ./index.py
, qui est destiné à être appelé depuis un serveur Web tel que lighttpd
(avec index.py
ajouté au paramètre de configuration index-file.names
dans /etc/lighttpd/lighttpd.conf
). Vous pouvez simplement lexécuter manuellement, et il générera des images et imprimer du HTML vers STDOUT. Vous voudrez donc le rediriger vers un fichier que vous pouvez ouvrir dans un navigateur:
./index.py > index.html
Ensuite, ouvrez index.html dans votre choix navigateur.
Conditions dinstallation (toutes peuvent être installées avec apt-get install
):
-
tcpdump
– Outils de ligne de commande pour capturer et décrire le trafic réseau -
rrdtool
– Outil de base de données Round Robin, enregistre et graphique les données chronologiques -
rrdcached
– Round Robin Database Caching Daemon, service qui réduit les frais généraux lors de lutilisation simultanée de plusieurs fichiers RRD. -
pypy-upstream
(une implémentation rapide du langage de programmation Python)- Vous pouvez utiliser le stock Python comme vous le souhaitez:
python rhodes.py
(pypy
est une implémentation alternative du langage de programmation Python qui fait la compilation Just-In-Time (JIT), donc les scripts de longue durée utiliseront moins de cycles CPU au prix de plus de mémoire)
- Vous pouvez utiliser le stock Python comme vous le souhaitez:
Note dutilisation : Loutil « tcpdump » utilisé par ce script nécessite des privilèges root pour accéder au trafic réseau brut. Ceci est réalisé en lançant sudo tcpdump
au démarrage du script, vous pouvez donc être invité à entrer votre mot de passe. Personnellement, jai ajouté une règle NOPASSWD à /etc/sudoers
donc je ne suis jamais invité.