¿Alguien ha usado su Raspberry Pi como dispositivo de enrutamiento?
Principalmente quiero usarlo para monitorear mi red, y sería genial si tuviera una entrada y salida para Ethernet, pero no la tiene, así que me pregunto si es muy efectivo monitorear la red al tener la entrada Ethernet y luego usando un dongle USB como enrutador Wi-Fi. Alguien ha hecho algo como esto? ¿Ralentiza mucho Internet?
Respuestas:
He estado usando mi modelo B como un enrutador con configuración de tráfico, usando solo el puerto Ethernet con el que viene. Aquí hay un resumen rápido y sencillo sobre cómo:
Configure su Pi con una configuración de red estática para que no se vea influenciado por los cambios de DHCP que se sugieren a continuación. Aquí están los contenidos de mi
/etc/network/interfaces
como referencia:Ahora cambie la configuración de DHCP de su red de modo que la puerta de enlace / enrutador predeterminada sea su Pi. Esto probablemente significa cambiar la configuración en su caja de enrutador ADSL existente. 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 a la red, se les informará que su Pi es su puerta de enlace 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 que supervise por usted, como vnstat .
Modelado de tráfico
En cuanto a la configuración 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 encontrar esto en la interfaz web de su enrutador (original), pero si no puede obtener una estimación utilizando una prueba de velocidad .
sudo apt-get install iptables
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
sudo ./wondershaper eth0
imprimirá el estado actual de la conformación del tráfico. Obviamente, el estado esperado es que no hay forma, lo que significa que hay una sola regla en efecto, llamadapfifo_fast
:eth0
es el nombre del adaptador de red con cable en un modelo B. Consulteifconfig
los nombres de las interfaces en su sistema)sudo ./wondershaper eth0 3000 370
, dónde:3000
es la velocidad de enlace descendente de mi conexión a Internet en kbit . Entonces 3Mbit == 3000kbit370
es la velocidad del enlace ascendente de mi conexión a Internet, en kbit nuevamente.sudo ./wondershaper eth0
ahora debería mostrar mucho más salida:Su tráfico de red saliente ahora está siendo configurado por su Pi, y su tráfico entrante se está acelerando ligeramente para garantizar que el Pi, y no su caja de enrutamiento original, tenga el control del tráfico.
Para deshabilitar la configuración, simplemente ejecute
sudo ./wondershaper eth0 clear
. Puede cambiar las velocidades de enlace ascendente y descendente sin borrar primero, pero no hace daño.Actualización: También debe deshabilitar la transmisión de redireccionamientos ICMP , ya que necesitamos todo el tráfico para pasar a través de Pi para que se pueda dar forma. Resulta que el kernel de Linux es lo suficientemente inteligente como para darse cuenta de que los clientes en su red doméstica podrían comunicarse directamente con el cuadro ADSL, en lugar de rebotar el tráfico a través del Pi, y les dice esto en cada oportunidad. Luego, los clientes envían su tráfico directamente a su casilla ADSL, y el Pi no tiene la oportunidad de darle forma. Deshabilítelo sobre la marcha de esta manera (se pierde la próxima vez que reinicie):
Actualice lo siguiente para configurar esto durante el arranque:
/etc/sysctl.conf
(Gracias a https://unix.stackexchange.com/a/58081/22537 por este consejo)
También puede estar interesado en mis notas personales sobre la configuración de una puerta de enlace de Linux: http://www.robmeerman.co.uk/unix/gateway
fuente
wondershaper
embargo, tengo una pregunta sobre su sugerencia: ¿es el límite por cliente o en general?Con un poco de experiencia en redes, lo primero que viene a la mente es usarlo como un cuadro de Snort, y luego no tiene que preocuparse por tener solo una interfaz. Configuraría su conmutador / enrutador para reenviar todo el tráfico al Pi, pero también lo pasaría al dispositivo final. Esto se conoce como monitor switchport, pero es posible que su dispositivo no lo admita. Es posible que necesite un interruptor administrado para hacer esto. Snort luego analizaría el tráfico e informaría al respecto. Más información sobre Snort http://www.snort.org/
Lo bueno de este tipo de configuración es que su Pi está sentada a un lado observando todo lo que se ejecuta a través del interruptor, en lugar de estar en línea con los datos. Si tiene una falla de software de esta manera, el tráfico aún puede fluir, pero no puede ser monitoreado. Con lo que está describiendo con dos interfaces, su programa se bloquea, su red se bloquea.
Esto no utiliza el pi como enrutador, pero le permite monitorear e informar sobre el tráfico que se mueve a través de su red.
fuente
He usado Raspberry Pi para enrutar, y funcionó bien. Como usted dice, necesita 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:
Aquí está mi publicación 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 material de 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 la distribución que use.
fuente
He estado usando la Raspberry Pi como un 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 fue "prestado" de la Wii. Eso va a la LAN doméstica, y la Ethernet incorporada de la Raspberry Pi va a la WAN / Internet.
Ve a buscar una copia de IPFire para Raspberry Pi. Desea la versión ARM, sin una consola serie y la última versión estable. Haga clic en la pestaña ARM. Descargue la "Imagen para la arquitectura armv5tel".
Arranca fuera de ella. Conecte un televisor y teclado HDMI. Responde las primeras preguntas. El resto de la configuración se puede hacer 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: http://wiki.ipfire.org/en/hardware/arm/rpi
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 el Raspberry Pi, pero no deja mucho para alimentar el 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!
fuente
(Este anexo sigue mi respuesta anterior , que fue una guía sobre cómo configurar su Pi como la puerta de enlace de 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 consola y generar gráficos de uso histórico para poder ver lo que sucedió de la noche a la mañana.
Rhodes , una herramienta para monitorear el uso de la red en tiempo real e histórico de dispositivos LAN (basado en la dirección MAC): https://github.com/meermanr/adsl/tree/master/rhodes
Muestra de salida de consola:
La primera columna muestra la cantidad de dispositivos que transmiten, lo que generalmente significa subir a Internet. La excepción a esto es el enrutador ADSL (home.gateway en la muestra anterior) que transmite los datos recibidos del ISP al dispositivo que lo solicitó (es decir, descargas). Por supuesto, también transmite cargas a Internet, pero lo hace usando 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 lo anterior), que por supuesto transmite todos los datos que maneja, en ambas direcciones.
Pero, aparte de esas excepciones, los números TX (transmisión) se refieren a la carga y los números RX (recepción) 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.
Los gráficos se generan mediante la ejecución
./index.py
, que se pretende llamar desde un servidor web comolighttpd
(conindex.py
agregado a laindex-file.names
configuración de configuración en/etc/lighttpd/lighttpd.conf
). Simplemente puede ejecutarlo manualmente y generará algunas imágenes e imprimirá HTML en STDOUT. Por lo tanto, desearía redirigirlo a un archivo que puede abrir en un navegador:Luego abra index.html en su navegador preferido.
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 datos de series de tiempo de gráficosrrdcached
- Round Robin Database Caching Daemon, servicio que reduce los gastos generales al trabajar simultáneamente con múltiples archivos RRD.pypy-upstream
(una implementación rápida del lenguaje de programación Python)python rhodes.py
(pypy
es una implementación alternativa del lenguaje de programación Python que realiza la compilación Just-In-Time (JIT), por lo que los scripts de larga duración usarán menos ciclos de CPU a costa de más memoria)Nota de uso : la herramienta 'tcpdump' utilizada 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 se le puede solicitar que ingrese su contraseña. Personalmente, agregué una regla NOPASSWD para/etc/sudoers
que nunca se me solicite.fuente