sábado, 14 de abril de 2007

Servidor NAT+Firewall+QoS en Linux contra programas P2P

Este post es para responder algunas de las continuas las dudas que surgen alrededor de esto.


Descripcion del problema

Para empezar, no todos los cybercafes ni cabinas publicas sufren este problema.

Algunas veces, los administradores de cabinas o dueños no pueden explicar esa fuga o perdida de velocidad de su conexión, una vez descartado que el problema se debe a la conexión física en mal estado (cableado, router, switch o tarjeta de red), y a pesar que nadie esta sentado en las cabinas, las luces del router parpadean alocadamente como si hubiera actividad en alguna estación. Luego de descartar que no son algun tipo de actualización automática, virus, gusano (worm), troyano, entonces es posible que sea un programa P2P (peer to peer) funcionando en segundo plano.

Muchos de los programas P2P como: edonkey, limeware, emule, clientes, bittorrents que algunos usuarios usan en las cabinas, los usan para descargar programas, música, vídeos, etc,etc, pueden dejarlo minimizado y el controlador de un vistazo rápido puede pasar por alto esto, y el programa puede estar prendido por horas o incluso todo el dia. Estos programitas que te he listado consumen increíbles cantidades de ancho de banda. Lo explicare de una manera fácil: imagina te tienes suficiente flujo de agua para alimentar cinco caños de un baño publico, derrepente viene alguien con una manguera, se conecta a un grifo y empieza a succionar fuertemente el agua...lo lógico que es casi toda el agua salga por la manguera y los demás caños solo goteen. El flujo de agua es tu ancho de banda, cada caño es una pc recibiendo data, y la manguera es un programa agresivo que consume "chupa" tu ancho de banda".

En cibercafés abiertos y pequeños, se pueden cerrar los puertos (solo soluciona 40% del problema, en la mayoría es suficiente), también se pueden identificarlos fácilmente ya que las ventanas con conocidas (los programas puedes bajarlos de internet y ver como son), luego les avisas a los usuarios que el uso de esos programas esta prohibido...bla bla..bla, y si aun asi lo usan no le permites el ingreso al cyber y ya.

Ese es el problema de las cabinas de internet publicas grandes y especialmente las privadas, donde el control es mucho mas difícil. En ese caso un arreglo router-switch no es suficiente. Aqui brilla el QoS, que identifica las solicitudes de data de internet y la pone el cola y orden de modo tal que todos reciban un flujo de datos parejo, si identifica que la solicitud es de alguno de los programas que liste arriba entonces simplementen lo bloquea (funciona al 98% depende de la velocidad del servidor linux). Con la analogía de arriba, significa que el cada caño va botar la misma agua aun asi alguien este "chupando" agua con una manguera. Esto normalmente no evita que la este tipo de personas no instalen estos programas, pero apenas podrán descargar algo o nada, lo cual los frustrarian y cambiarian de cabina.

Hay muchas soluciones, como instalar programitas en cada estación (ej. net limiter) para limitar la actividad de cada programa y controlar su ancho de banda. Debido a que el programa es de pago, no muchos están interesados en usarlo. Aparte este método es local, osea que hay que instalarlo en cada estación, y puede ser vulnerable a ataques o el uso de programas no cubiertos por los filtros de estos programas. Otra solución parcial puede ser cerrando los puertos del router que usan estos programas, pero la tendencia es que cada vez estos programas p2p son menos dependientes de los puertos. Otra solución parcial es comprar un router caro con soporte Q0S. No he encontrado una mejor solución por lo completa y personalizada que el uso de un servidor linux con nat+firewall+qos andando.


Ancho de banda disponible (para compartir entre toda la cabina)

Siempre que se usa QoS hay que verificar si hay suficiente ancho de banda para satisfacer a las estaciones, esto lo hacemos con un calculo sencillo para comprobar si el ancho de banda disponible por PC sera suficiente para la demanda de los programas que se usaran.

Estas son se supone las velocidades de telefónica.
Speedy 200: velocidad de bajada: 200 kbps / 128 velocidad de bajada kbps
Speedy 400: velocidad de bajada: 400 kbps / 128 velocidad de bajada kbps
Speedy 600: velocidad de bajada: 600 kbps / 256 velocidad de bajada kbps
Speedy 900: velocidad de bajada: 900 kbps / 256 velocidad de bajada kbps
Speedy 1200: velocidad de bajada: 1200 kbps / 256 velocidad de bajada kbps

Con QoS, si tienes 12 PCs y contrataste speedy 900 entonces tienes aprox: 75 kbps de bajada y 21.3 kbps por cada PC. Considera un neto de 80% (no siempre tienes la velocidad que contratas, normalmente es mucho menos), osea podrías tener 60 kbps de bajada y 17 kbps de subida por PC con todas las pcs andando a toda maquina.

Algunos test de velocidad real disponible:
http://www.adslayuda.com/test-de-velocidad/
http://medidor.speedy.com.pe/myspeed/


Demanda de algunos programas comunes (por estación)

Estos son algunas demandas que debes tener en cuenta (bajada/subida):
40-50 kbps /5-10 kbps para navegar normalmente con varias ventanas abiertas
17 kbps / 17 kbps para una conversacion de voz en internet (depende del protocolo voip)
13.3-128 kbps /13.3-128 kbps para una conversacion de voz en skype (depende del protocolo escogido por skype)
64-80 kbps/64-80 kbps una video conferencia en yahoo o messenger, 3 cuadros x segundo.
...
...
etc, etc. otros programas busquen en google.

No significa que sino se cumplen estos requisitos no va funcionar, solo que la sensación de baja velocidad se notara en cada estación, en caso de conferencia simplemente sufrirán degradación de audio y cortes, retrasos en vídeo.


Demanda de algunos programas p2p (por estación)

Para los programas p2p normalmente su ratio es 3:1 osea tres bytes de bajada contra uno de subida (salvo torrent que es 1:1 creo) al cual no le han puesto limite de subida pueden consumir así:
60-690 kbps / 20-230 kbps para los clientes como limeware, emule, etc, etc, ....
20-230 kbps / 20-230 kbps para los clientes bittorrent
... etc.

Notar que si contratamos un speedy 900 y no limitamos: el ancho de banda usado ademas del numero de conexiones simultaneas (dentro de la configuración del programa p2p) este programa p2p CONSUMIRÁ SIN PREGUNTARNOS casi todo el ancho de banda disponible para descargar y subir data (desde las carpetas escogidas como compartidas) apenas dejando algo para navegar.

Es decir, en cyber que esta detrás de un switch+router (sin qos), basta con una estación tenga un p2p instalado u andando puede apoderarse de una gran cantidad del ancho de banda contratado. Aver, un calculo rapido (900*0.8-690)/12= 2.5 kbps de bajada en las pcs restantes, algo como: 2.5/8= 0.3 kilobytes/seg insoportable para navegar en paginas web especialmente con contenido grafico.



El servidor linux

Puede usarse cualquier distro linux. Pero recomiendo debian, suse o ubuntu para servers por la estabilidad.

El filtro de paquetes a nivel de aplicación (layer7) que se implementaría en linux, consume mucho CPU especialmente en redes grandes y complejas, por lo que se recomienda que sean PCs con al menos 2.4 Ghz para 24 estaciones.


Mas información


Busquen, descarguen y estudien este libro:
Designing and Implementing Linux Firewalls and QoS using netfilter, iproute2, NAT, and L7-filter

Protocolos (y programas) soportados por bloqueo a nivel de aplicación (layer7)
http://l7-filter.sourceforge.net/protocols


Espero que la info sea útil para los cabineros que tienen problemas especiales y buscan soluciones particulares. Cuidense.

cabinas.cnorte@gmail.com