Dirigir el tráfico de Whatsapp por un proveedor ISP específico. Enrutamiento basado en reglas (PBR)

Dirigir el tráfico de Whatsapp por un proveedor ISP específico. Enrutamiento basado en reglas (PBR)

La granulación del tráfico y su dirección hacia ISPs específicos son prácticas clave para los operadores de redes inalámbricas de servicios de Internet (WISPs) por varias razones críticas.

Estas prácticas permiten optimizar la calidad del servicio al priorizar ciertos tipos de tráfico, lo cual es vital para servicios como VoIP y streaming de vídeo. También mejoran la eficiencia en el uso del ancho de banda, al dirigir el tráfico importante o sensible a la latencia por conexiones de alta calidad y el menos crítico por enlaces más económicos. Estas estrategias incrementan la resiliencia y redundancia de la red, ofrecen balanceo de carga para evitar saturaciones, y permiten una gestión de costes más eficiente. Además, facilitan el cumplimiento de los Acuerdos de Nivel de Servicio (SLAs) y pueden mejorar la seguridad y la privacidad del tráfico. En conjunto, estas prácticas son fundamentales para mantener una red WISP eficiente, rentable y competitiva, asegurando la satisfacción del usuario y la continuidad del servicio.

Vamos a mostrar un ejemplo de cómo dirigir el tráfico de whatsapp hacia un proveedor específico.

Escenario: Se tienen dos proveedores de servicios de internet (ISP) de acuerdo al diagrama de red, ver Figura 1. El objetivo es que las conexiones de whatsapp salgan por el ISP2 porque presenta un enlace estable y con menor latencia, y generalmente se ocupa como respaldo.

Figura 1. Diagrama de red. Dos proveedores de servicio de internet (ISP). Las conexiones de whatsapp deben salir por el ISP2.

Una posibilidad es configurar Quality of Service (QoS), pero en este ejemplo vamos a usar enrutamiento basado en políticas (PBR). Para dirigir el tráfico de whastapp hacia el proveedor ISP2 vamos hacerlo en tres pasos, ver Figura 2.

Figura 2. Pasos para mandar el tráfico de Whastapp por un ISP específico.

Paso 1. Identificar el tráfico que se dirige hacia Whastapp y agregar la IP a una Lista de direcciones

La manera más sencilla de identificar el tráfico hacia whatsapp es a través de los puertos usados por whatsapp. Una búsqueda rápida en google nos da los siguientes resultados:

Puertos TCP Puertos UDP
53, 443, 5222, 5223, 5228 53, 3478

El puerto 53 es ampliamente utilizado en Internet para el servicio del Sistema de Nombres de Dominio (DNS, por sus siglas en inglés). El puerto 443 es utilizado predominantemente por el protocolo HTTPS (Hypertext Transfer Protocol Secure), así que estos no son exclusivos para whatsapp. Sin embargo, los puertos TCP 5222, 5223, 5228 y UDP 3478 sin son usados por whatsapp de manera "exclusiva". Estos puertos, pues, serán usados para identificar las conexiones a los servidores de whatsapp.

Una conexión de internet utiliza el concepto de sockets, donde un socket se define por la combinación única de una dirección IP y un puerto. Esta combinación permite la identificación precisa de los puntos finales de comunicación en la red, facilitando el envío y la recepción de datos entre dispositivos.

Para identificar las IPs de los servidores de WhatsApp, recurriremos a la tabla RAW en MikroTik (IP-Firewall-Raw). Esta tabla permite configurar reglas prioritarias, aplicables antes de cualquier otra acción sobre la conexión. Su uso es esencial para permitir o bloquear tráfico de manera eficiente, optimizando el rendimiento al procesar las reglas antes que el resto.

Crearemos una lista de direcciones de destino para los servidores de WhatsApp, utilizando los puertos TCP y UDP mencionados previamente para identificar las conexiones antes de cualquier otra regla. Por esta razón, empleamos la tabla RAW.

Figura 3. Crear Lista de IP de destino usando los puertos TCP de whatsapp.

De esta manera usamos la cadena prerouting (Paso 4 de la Figura 3) para capturar el tráfico TCP (Paso 5) de los puertos 5222, 5223, 5228 (Paso 6) y le aplicamos la acción (Paso 7) Agregar IP a la lista de direcciones (Paso 8) con el nombre Whastapp (Paso 9) que dura 1 día (Paso 10), lo cual depende de la aplicación pues las IPs se pueden actualizar con diferente frecuencia.

Hacemos algo similar para los puerto UDP 3478 (Paso 6 de la Figura 4). Agregamos la IP (Paso 8) a la misma Lista (Paso 9).

Figura 4. Creación de Lista de direcciones de los ervidores de Whatsapp.

Desde la línea de comando se puede hacer lo siguiente

/ip firewall raw
add action=add-dst-to-address-list address-list=Whatsapp address-list-timeout=1d chain=prerouting dst-port=5222,5223,5228 protocol=tcp
add action=add-dst-to-address-list address-list=Whatsapp address-list-timeout=1d chain=prerouting dst-port=3478 protocol=udp

Paso 2. Poner marca de enrutamiento a la Lista de direcciones

Una vez que tenemos capturadas las IP de los servidores de Whatsapp, ahora vamos a poner una marca de enrutamiento a la Lista llamada Whatsapp. La marca se llama Whatsapp-to-ISP2. Usamos las reglas de Mangle.

Figura 5. Regla de mangle para poner marca de enrutamiento a las conexiones con las IPs de Whastapp.

Agregamos la Regla de Mangle (Paso 4 de la Figura 5), seleccionamos el tráfico de la red local (Paso 6) que pertenezca a la Lista de direcciones Whatsapp (Paso 8) y le colocamos una marca de enrutamiento (Paso 10) llamada Whatsapp-to-ISP2 (Paso 11) y aceptamos los cambios (Paso 12).

Desde línea de comandos

/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=Whatsapp in-interface=br-Lan new-routing-mark=Whastapp-to-ISP2 passthrough=yes

Paso 3. Seleccionar ISP2 de las conexiones con marca de enrutamiento Whatsapp

Agregamos (Paso 4 en la Figura 6) una ruta que maneja la marca de enrutamiento Whatsapp-to-ISP2. Definimos la ruta por defecto (0.0.0.0/0) en el Paso 5, y elegimos el nombre de la Interface en donde está nuestro ISP2, en nuestro caso se llama ether2-WAN2-TotalPlay (Paso 6), y finalmente elegimos la marca de enrutamiento Whatsapp-to-ISP2 (Paso 7) y aceptamos los cambios.

Figura 6. Ruta para el tráfico con marca de enrutamiento Whatsapp-to-ISP2.

Desde línea de comandos

/ip route
add distance=1 gateway=ether2-WAN2-TotalPlay routing-mark=Whastapp-to-ISP2

Ahora todo el tráfico de Whatsapp generará una Lista de IP que se le pondrá una marca de enrutamiento, la cual será usada para seleccionar el ISP2.

Esta es una manera de dirigir el tráfico de Whatsapp usando RAW-Mangle-Routes en Mikrotik con PBR. Otra forma es usar Quality of Service (QoS) priorizando el tráfico, pero eso se verá en otro post. Para cualquier otro servicio como Youtube o videojuegos, se deben buscar los puertos TCP y UDP específicos y hacer un procedimiento similar.