¿Utiliza Raspberry Pi como enrutador?

¿Alguien ha usado su Raspberry Pi como dispositivo de enrutamiento?

Principalmente quiero usarlo para monitorear mi red, y lo haría Sería genial si tuviera una entrada y salida para Ethernet, pero no las tiene, así que me pregunto si es muy efectivo monitorear la red al tener la entrada Ethernet y luego usar una llave USB como enrutador Wi-Fi. ¿Alguien ha hecho algo como esto? ¿Ralentiza mucho Internet?

Comentarios

  • Depende de la velocidad de su conexión a Internet. La mía es de 100 Mb, así que ‘ estoy bastante seguro de que lo ralentizaría;)
  • Tengo ‘ tengo una conexión a Internet de 30 Mbps, y en este momento con 5 Mbps de tráfico, mi raspberry pi en línea con snort consume ~ 50-95% de CPU y 85% de memoria. Mi configuración aún no está afinada, pero quiero mostrarte algunas cifras reales.
  • ¿Alguien no sabe cómo funciona la mala asignación de ancho con un enrutador personalizado que usa raspberry pi? eed de conexión a internet de 3Mbps, tengo 10 usuarios. ¿Puedes explicar cómo se dividirá? la velocidad de 3 Mbps. Gracias. Espero que entiendas. 🙂
  • Hola kirbs. Abstente de hacer una pregunta sobre otra pregunta. En su lugar, abra una nueva pregunta con el enlace Hacer pregunta en la parte superior de la página. Gracias.
  • ¿Quizás esto? learn.adafruit.com/…

Responder

He estado usando mi modelo B como un enrutador con modelado de tráfico, usando solo el puerto Ethernet con el que viene. Aquí «un rápido y sucio sobre cómo :

  1. Habilite el reenvío de IPv4 , para que su Pi actúe como un enrutador reenviando cualquier tráfico que reciba
  2. Configure su Pi con una configuración de red estática para que no se vea influenciada por los cambios de DHCP sugeridos a continuación. Aquí están los contenidos de mi /etc/network/interfaces como referencia:

    # 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. Ahora cambie la configuración de DHCP de su red de modo que la puerta de enlace / enrutador predeterminada sea su Pi. Esto probablemente signifique cambiar la configuración de su ADSL existente router. En mi ejemplo anterior, la dirección IP de mi Pi es 192.168.1.1.

La próxima vez que sus dispositivos se vuelvan a conectar al red, se les dirá que su Pi es su puerta de entrada a Internet, y se le enviará todo el tráfico vinculado a Internet. Su Pi, a su vez, transmitirá todo ese tráfico a su enrutador habitual. Es posible que deba desconectar y volver a conectar sus dispositivos para que estos cambios surtan efecto.

Ahora puede crear o instalar una herramienta para supervisar por usted, como vnstat .

Modelado del tráfico

En cuanto al modelado del tráfico, aquí hay otra guía rápida y sucia que utilizará mi propia variante personal de wondershaper .

Para que esto sea útil, necesita saber qué tan rápida es su conexión a Internet. Por lo general, puede encontrarla en su (original ) interfaz web del enrutador, pero en su defecto, puede obtener una estimación utilizando una speedtest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 imprimirá el estado actual de la configuración del tráfico. Obviamente, el estado esperado es que no hay forma, lo que significa que hay «una sola regla en vigor, llamada pfifo_fast:

    • (eth0 es el nombre del adaptador de red con cable en un modelo B. Consulte ifconfig para conocer los nombres de las interfaces en su sistema)
    # 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, donde:

    • 3000 es la velocidad de enlace descendente de mi conexión a Internet en kbit . Entonces, 3Mbit == 3000kbit
    • 370 es la velocidad de enlace ascendente de mi conexión a Internet, en kbit nuevamente.
  5. sudo ./wondershaper eth0 ahora debería mostrar mucha más salida:

    # 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 

Su Pi está dando forma ahora a su tráfico de red saliente, y su tráfico entrante se está reduciendo ligeramente para garantizar que el Pi , y no su caja de enrutamiento original, tiene el control del tráfico.

Para deshabilitar el modelado, simplemente ejecute sudo ./wondershaper eth0 clear. Puede cambiar las tasas de enlace ascendente y descendente sin borrar primero , pero no duele.

Actualización: También debe deshabilitar la transmisión de redireccionamientos ICMP , ya que necesitamos que todo el tráfico pase por la Pi para que se produzca la configuración.Resulta que el kernel de Linux es lo suficientemente inteligente como para darse cuenta de que los clientes de su red doméstica podrían hablar directamente con la caja ADSL, en lugar de rebotar el tráfico a través de la Pi, y les dice esto en cada oportunidad. Luego, los clientes envían su tráfico directamente a su caja ADSL, y el Pi no tiene la oportunidad de darle forma. Desactívelo sobre la marcha de esta manera (se pierde cuando reinicia el próximo):

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

Actualice lo siguiente para configurar esto durante el arranque: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Gracias a https://unix.stackexchange.com/a/58081/22537 por este consejo)

Es posible que también te interesen mis notas personales sobre la configuración de una puerta de enlace de Linux: http://www.robmeerman.co.uk/unix/gateway

Comentarios

  • ¿cómo se configura el nombre y la contraseña de la red wifi a la que se pueden conectar otros dispositivos?
  • Una gran guía. Tengo una pregunta sobre su wondershaper sugerencia, sin embargo: ¿el límite es por cliente o en general?
  • @fommil: Mi guía anterior asume que todavía usa el módem / enrutador / punto de acceso WiFi que su ISP le dio, pero que lo configure de modo que a todos los clientes que se conecten se les indique div id = «a04743afa8»>

Envía tráfico al Pi «. Por lo general, esto se hace ingresando la dirección IP de su Pi ‘ s (¡estática!) En la configuración DHCP de su caja ISP. Normalmente, en un campo llamado » Gateway «, » Default Gateway «, o quizás » Ruta predeterminada «.

  • @Bob: Los números que ingrese son el total de su enlace de Internet. El script wondershaper intenta compartir esto con todos sus clientes según la demanda . Entonces, si solo un cliente usa Internet, debería obtener el 100%. Si otro cliente inicia, después de un poco de » tiempo de estabilización » (~ 10 segundos) terminará usando el 50% cada uno, y así sucesivamente.
  • Perfecto. Solo una nota para @fommil, ninguno de mis enrutadores (y supongo que muchos más son iguales) proporciona una manera fácil de configurar la puerta de enlace asignada a través de DHCP. Terminé apagando DHCP en el enrutador y configurando un servidor DHCP en el Pi; es ‘ un proceso bastante simple (busque una guía si lo desea).
  • Responder

    Teniendo un poco de experiencia en la red, lo primero que me viene a la mente es usarlo como un cuadro de Snort, y entonces no tiene que preocuparse por tener solo una interfaz. Debería configurar su conmutador / enrutador para reenviar todo el tráfico al Pi, pero también pasarlo al dispositivo final. Esto se conoce como monitor de puerto de conmutación, pero su dispositivo puede no es compatible. Es posible que necesite un interruptor administrado para hacer esto. Snort analizaría el tráfico e informaría sobre él. Más información sobre Snort http://www.snort.org/

    Lo bueno de este tipo de configuración es que tu Pi está sentada a un lado viendo todo lo que se está ejecutando a través del conmutador, en lugar de estar en línea con los datos. Si tiene un software g De esta manera, el tráfico aún puede fluir, pero no se puede controlar. Con lo que está describiendo con dos interfaces, su programa falla, su red falla.

    Esto no usa el pi como un enrutador, pero le permite monitorear e informar sobre el tráfico que se mueve a través de su red .

    Respuesta

    He usado Raspberry Pi para enrutamiento y funcionó bien. Como dices, necesitas al menos una interfaz de red más, ya que la Raspberry Pi solo tiene un puerto Ethernet. Puede agregar otra interfaz conectada al puerto USB. He usado un módem GSM y un dispositivo Wi-Fi.

    Cosas a tener en cuenta:

    • Use un concentrador USB con alimentación. Los dispositivos Wi-Fi y GSM exigen más energía de la que pueden suministrar los puertos USB de la Raspberry Pi.
    • Si compra dispositivos Wi-Fi, obtenga uno con buena compatibilidad con Linux. Quiere uno que funcione en modo de punto de acceso, y no todos los sticks lo hacen. Verifique en linuxwireless.org .

    Aquí está mi entrada de blog sobre el enrutamiento y otra sobre la configuración de un punto de acceso Wi-Fi . Esta guía me ayudó con la configuración del enrutamiento. El tema del enrutamiento no es muy específico para Raspberry Pi; cualquier cosa que funcione en Linux en general debería ser posible. Los detalles dependen un poco de cuál distribución que usa.

    Respuesta

    He estado usando la Raspberry Pi como enrutador durante aproximadamente un mes, sin ningún problema . Tengo un puerto de acceso Wi-Fi comercial real, no un enrutador Wi-Fi doméstico, así que lo usé. También tengo un convertidor de USB a Ethernet que era prestado » de la Wii.Eso va a la LAN doméstica y la Ethernet incorporada de la Raspberry Pi va a la WAN / Internet.

    Obtenga una copia de IPFire para Raspberry Pi. Quieres la versión ARM, sin una consola serial y la última versión estable. Haz clic en la pestaña ARM. Descarga la » Imagen para la arquitectura armv5tel «.

    Arranque desde él. Conecte un televisor y un teclado HDMI. Responda las primeras preguntas. El resto de la configuración se puede realizar desde un navegador en la red doméstica, por lo que no necesitará el televisor o el teclado después de eso.

    ¡No fue demasiado difícil y funcionó como un campeón! Aquí están las instrucciones formales: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

    Una última cosa. Si va a utilizar un dongle Wi-Fi alimentado por USB, verifique la fuente de alimentación de su Raspberry Pi. Una fuente de alimentación USB de 700 mA puede ser suficiente para alimentar la Raspberry Pi, pero no deja mucho para alimentar la Wi -Fi. Utilice un concentrador USB con alimentación o alimente la Raspberry Pi con una fuente de alimentación USB de 1 a 2 A.
    ¡Buena suerte!

    Respuesta

    (Este apéndice sigue a mi respuesta anterior , que era una guía sobre cómo configurar su Pi como puerta de enlace a Internet de su LAN)

    No contento con monitorear mi uso general de Internet, he escrito una herramienta que monitorea el uso de Internet de cada dispositivo en mi LAN. Esto me permite ver el uso instantáneo en una ventana de la consola y generar gráficos de uso histórico para poder ver lo que sucedió durante la noche.


    Rhodes , una herramienta para monitorear el uso histórico y en tiempo real de la red de los dispositivos LAN (según la dirección MAC): https://github.com/meermanr/adsl/tree/master/rhodes

    Ejemplo de salida de la consola:

    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 primera columna muestra cuánto los dispositivos están transmitiendo, lo que generalmente significa subir a Internet. La excepción a esto es el enrutador ADSL en sí (home.gateway en el ejemplo anterior) que transmite los datos recibidos del ISP al dispositivo que los solicitó (es decir, los descarga). Por supuesto, también transmite cargas a Internet, pero lo hace utilizando su módem ADSL, que no está en la LAN y, por lo tanto, no es visible para esta herramienta.

    La otra excepción sería la Raspberry Pi (» Flux «en el anterior), que por supuesto transmite todos los datos que maneja, en ambas direcciones.

    Pero aparte de esas excepciones, los números de TX (transmitir) se refieren a cargar, y los de RX (recibir ) números para descargar. La tercera columna es la dirección MAC del dispositivo (sin los separadores habituales «:» o «-«). La cuarta columna muestra el nombre legible por humanos del dispositivo, si se conoce.

    Gráficos se generan ejecutando ./index.py, que está diseñado para ser llamado desde un servidor web como lighttpd (con index.py agregado a la configuración de index-file.names en /etc/lighttpd/lighttpd.conf). Puede ejecutarlo manualmente y generará algunas imágenes y imprimir HTML en STDOUT. Por lo tanto, querrá redirigirlo a un archivo que pueda abrir en un navegador:

    ./index.py > index.html 

    Luego, abra index.html en su navegador.

    Requisitos de instalación (todos se pueden instalar con apt-get install):

    • tcpdump – Herramientas de línea de comandos para capturar y describir el tráfico de red
    • rrdtool – Herramienta de base de datos Round Robin, registros y gráficos de datos de series de tiempo
    • rrdcached – Daemon de almacenamiento en caché de base de datos Round Robin, servicio que reduce los gastos generales cuando se trabaja simultáneamente con varios archivos RRD.
    • pypy-upstream (una implementación rápida del lenguaje de programación Python)

      • Puede usar el Python estándar si lo desea: python rhodes.py (pypy es una implementación alternativa del lenguaje de programación Python que hace la compilación Just-In-Time (JIT), por lo que los scripts de ejecución prolongada utilizarán menos ciclos de CPU a costa de más memoria)

    Nota de uso : la herramienta «tcpdump» utilizado por este script requiere privilegios de root para acceder al tráfico de red sin procesar. Esto se logra iniciando sudo tcpdump cuando se inicia el script, por lo que es posible que se le solicite que ingrese su contraseña. Personalmente, he agregado una regla NOPASSWD a /etc/sudoers, por lo que nunca se me solicita.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *