"Después del juego es antes del juego"
Sepp Herberger

Mostrando entradas con la etiqueta red. Mostrar todas las entradas
Mostrando entradas con la etiqueta red. Mostrar todas las entradas

miércoles, 24 de septiembre de 2025

Fijar velocidad de red en puertos de un dispositivo OpenWRT

Tengo un dispositivo OpenWRT actuando de switch de red y, debido a la malidad calidad del cableado de red, he tenido problemas de estabilidad de la conexión, con cortes intermitentes. Analizando el tráfico de red veo que salta entre 100Mbps y 1000Mbps cada cierto tiempo, provocando un microcorte que congela la conexión a la red interna e Internet.

La solución que he encontrado es fijar a velocidad de 100Mbps el puerto concreto donde va la conexión con la red del centro, de manera que no hay ningún tipo de negociación.

Lo primero es saber cual es el nombre del puerto, eso lo hacemos con:
# brctl  show:
bridge name	bridge id		STP enabled	interfaces
br-lan		7fff.6c7220153a30	no		lan4
							            lan2
							            wan
							            lan3
                                        lan1
En mi caso es el puerto "wan", solo hay que mirar las etiquetas que tiene la entrada rj45 donde va la conexión que falla. Lo siguiente es poner un script de autoarranque que fije esa velocidad:
# cat /etc/hotplug.d/iface/99-fix-speed
#!/bin/sh

[ "$ACTION" = ifup ] || exit 0

if [ "$INTERFACE" = "lan" ]; then
    ethtool -s wan speed 100 duplex full autoneg off
fi
Reiniciando el dispositivo vemos si tiene la velocidad correcta con:
# ethtool wan
Las pruebas posteriores me confirman que un este truquito la señal es mucho mas estable y casi no hay microcortes.

jueves, 19 de junio de 2025

Captura de tráfico de red sin tener gestión de los switchs.

Ultimamente para ciertas cosas (husmeo de tráfico SNMP y RTP de chismes de los que no consigo documentación alguna) he tenido que hacer capturas del tráfico de red. Si tuviera el control de mis switchs podría hacer port mirroring, pero por desgracia en la red educativa no tengo esa opción.

La otra solución es hacer newtork tap: interponer un dispositivo (por ejemplo un portátil, una Raspberry Pi o un chisme diseñado para capturar tráfico de red) en la boca del switch que quiero monitorizar y capturar todo el tráfico que por alli pasa.

Para poder interponerlo necesitamos que el dispositivo tenga dos tarjetas de red, una para conectar a la boca del switch otra para conectar el cable que originalmente iba conectado a ella. Como lo de tener dos tarjetas de red en un portátil no es muy normal (de hecho hoy en dia los hay que vienen sin conexion ethernet) lo que hacemos es usar adaptadores USB-RJ45, que nos dan un puerto de red ethernet a partir de un puerto USB. Veamos un esquema generado por IA:


Otra opción posible es interponerlo no entre una boca del switch y la red, sino entre la boca de red de un dispositivo que queramos espiar (un PC, una impresora, etc) y el resto de la red.

Una vez tenemos la conexión hay que configuar la máquina. El truco está en crear un bridge por software entre ambas tarjetas de red, darle una IP de nuestra red al bridge y capturar el tráfico de red sobre él. De esta manera, todo el tráfico de red que salga de ese puerto del switch pasará por el bridge y será capturado:
# ip link add name br0 type bridge
# ip link set eno1 master br0
# ip link set eno2 master br0
# ip link set eno1 up
# ip link set eno2 up
# ip link set br0 up
# ifconfig br0 192.168.1.5 up
Simplemente cambiamos eno1, eno2 y 192.168.1.5 por los nombres adecuados y la IP que queramos poner. Luego solo queda capturar:
# tcpdump -i br0 -w captura.pcap
Con esta orden se capturará todo el tráfico que pase por la conexión donde hemos interpuesto el dispositivo. Ese fichero .pcap podremos luego abrirlo con wireshark y husmear dentro. Por supuesto, podemos poner filtros en la captura usando los parámetros de tcpdump, tipo:
# tcpdump -i br0  src host 192.168.1.100 and \( tcp or udp \)  -w captura.pcap
Para finalizar, el uso de tcpdump es solo una posibilidad, hay otras muchas opciones de captura de tráfico para que cada cual elija la que más coraje le dé. Bueno, pues con esto podremos monitorizar de forma transparente la actividad en un punto de nuestra red.

martes, 26 de octubre de 2021

Extraer los nombres de los interfaces de red levantados y con enlace activo.

Si queremos sacar la lista de interfaces de red que hay levantadas y con señal (LINK STATE UP) en el cable en un PC con Linux, podemos hacerlo con esta secuencia de comandos:
interfaces_up=$(ip link show | grep "state UP" | cut -d" " -f2 |  grep -v "lo:" | tr -d ":" | tr "\n" " ")
echo $interfaces_up
Todo queda en una única línea para que, por ejemplo, podamos iterar por ellas mediante un comando for.