¿Cuál es la mejor solución para el control del tráfico en un sistema grande (aproximadamente 2000 usuarios)?

11

siguiente situación: Somos un grupo de estudiantes que administran la conexión a Internet para las salas de residentes locales, con un total de aproximadamente 2000 usuarios finales.

Tenemos un sistema de puntos de tráfico, cada MB baja o sube los puntos de costos, se agregan nuevos puntos por hora. En este momento, bloqueamos el acceso a Internet de un usuario cuando ha gastado todos sus puntos (colocándolo en una política de RECHAZO en iptables en nuestro enrutador de puerta de enlace Debian).

Solo nos gustaría limitar el ancho de banda de un usuario. ¿Cuál es la mejor manera de hacer esto?

La respuesta simple sería establecer un límite de velocidad en el puerto del conmutador del usuario (principalmente Cisco Catalyst 3550s). Sin embargo, esto no es deseable, ya que el tráfico dentro de nuestra propia red y hacia la red universitaria debe permanecer ilimitado. ¿Hay alguna manera de limitar el ancho de banda solo para los paquetes con un cierto destino o rango de IP de origen (tanto de salida como de entrada) en Cisco IOS? No pude encontrar nada.

La otra forma sería controlar el tráfico en nuestro enrutador de puerta de enlace. Varias soluciones vienen a mi mente:

  • tc o tcng: parece que ambos tienen una sintaxis bastante arcana y ninguno ofrece buenas características para hacer el control de tráfico por IP. Un QDisc dedicado para tanta gente probablemente ralentizaría bastante el enrutador. Además, la documentación sobre ambos está bastante desactualizada.

  • shorewall: parece tener una sintaxis bastante clara para las configuraciones, sin embargo, no estoy seguro de si puede manejar esta cantidad de tráfico y usuarios y si es adecuada para limitar el tráfico por IP

  • pfSense: parece un sistema operativo destinado a fines como el nuestro. Sin embargo, requeriría que reinstalemos por completo nuestro enrutador de puerta de enlace. No tenemos otros sistemas BSD y pfSense necesitaría tener muy buenas capacidades de contabilidad de tráfico (también estamos usando fprobe-ulog y ulog-acctd en este momento).

Cual es tu experiencia ¿Qué solución se adapta a nuestras necesidades y se puede mantener más fácilmente? ¿Tienes otras ideas?

Si necesita información adicional sobre nuestro sistema, no dude en preguntar.

Gracias por adelantado.


EDITAR : He implementado el sistema con iptablesy tc.

Cada usuario tiene una subred / 28, una IP VPN (ambas de 10.0.0.0/8) y una IP externa, todas se dirigen a través de una cadena de iptables. Esta cadena tiene solo una regla, una simple RETURN.

Cada cinco minutos, un script de Python lee los contadores de bytes de estas reglas. Restablece los contadores y actualiza la cuenta del punto de tráfico del usuario en nuestra base de datos PostgreSQL.

Si el balance de puntos de un usuario disminuye por debajo de un cierto umbral, se crean dos clases tc para este usuario (una para la interfaz entrante y otra para la salida en nuestro enrutador de puerta de enlace), las IP se ingresan en los filtros tc que pertenecen a estas clases. Las clases están limitadas en velocidad por un HTB.

En comparación con el sistema anterior fprobe-ulogy ulog-acctdesto es mucho más rápido ya que iptables realiza el conteo de bytes.

La velocidad de la red ha mejorado considerablemente para nuestros usuarios.

Christoph Wurm
fuente

Respuestas:

2

No estoy seguro de qué tan interesado está en reconfigurar toda su configuración (es decir, reemplazar Debian), o cuán factible sería colocar algo como esto detrás de su puerta de enlace, pero FreeBSD tiene una función en ipfw conocida como dummynet . Como parece que no tiene ganas de obtener un moderador de tráfico de hardware dedicado, esta puede ser una opción para usted. Actualmente lo usamos para ahogar el tráfico SMTP entrante y saliente a través de una de nuestras puertas de enlace proxy para evitar que un sistema de backend NFS obsoleto se vea abrumado y, posteriormente, deje de responder.

Con algunas secuencias de comandos y una configuración inteligente de sus conjuntos de reglas, sería posible controlar el tráfico de miles de direcciones IP individuales.

brent
fuente
0

Tendré que preguntar qué estamos usando, pero nuestra gente de ResTek tiene un dispositivo en la frontera de Internet que realiza funciones de calidad de servicio. Tiene una prioridad predeterminada para las transmisiones no clasificadas y prioriza otro tráfico según las reglas. Es la característica de prioridad lo que realmente lo vende, ya que también operan un clúster de almacenamiento en caché basado en Squid que figura como la prioridad más alta en el dispositivo de borde. Las personas en su red tienen la opción de navegar por la web con prioridad estándar (y algo desagradable), o usar el proxy y obtener una respuesta muy rápida. También aceptan solicitudes de prioridad de servidor de juegos, ya que son sensibles a la latencia pero de ancho de banda bajo, por supuesto.

Hay una buena cantidad de trabajo en el manejo de las solicitudes de los servidores de juegos, pero estas se van dejando de lado lentamente a medida que más y más juegos se alejan de los servidores privados. En general, escuché que funciona bastante bien para ellos. Pueden evitar que cosas como Bittorrent inunden todo el resto del tráfico, y aún así mantener los tiempos de carga de YouTube de la gente rápidos.

sysadmin1138
fuente
0

Con tantos usuarios, la mayoría de las cosas simples basadas en software comenzarán a descomponerse.

Considere mirar packeteer y dispositivos similares. En estos días son casi más caros que simplemente comprar más ancho de banda (en los EE. UU. Y Europa, los pobres en Australia todavía tienen tasas muy altas).

LapTop006
fuente
Desafortunadamente, no podemos permitirnos invertir mucho dinero en esto, ni para un modelador de paquetes dedicado ni para más ancho de banda. Nuestro sistema está funcionando en este momento, la pregunta es cómo, en lugar de bloquear a los usuarios que han excedido su tráfico asignado, solo podemos reducir el ancho de banda disponible para ellos.
Christoph Wurm
0

dummynet es una muy buena sugerencia en mi opinión. Pero estoy seguro de que iptables también es capaz de modelar el tráfico , por lo que puede hacerlo en su caja de Debian.

monomito
fuente
0

tc debería funcionar bien. Creo que lo que quiere hacer es cambiar sus reglas actuales de iptables para marcar en lugar de RECHAZAR el tráfico, luego puede usar un pequeño número de reglas de tc para aplicar el modelado de tráfico a esos flujos marcados.

Además, mire ipset para administrar la lista de usuarios estrangulados http://ipset.netfilter.org/

Justin
fuente
0

Trafficpanel parece ser una solución. Entre otras características:

  • Limitar la velocidad máxima de HTTP por conexión
  • Limitar la cantidad total de tráfico de recursos web por host de red local
  • Registre el tráfico de Internet por host de red local
  • Limitación de la velocidad máxima de tráfico por host de red local
  • Limitar la cantidad total de tráfico de Internet por host de red local

En realidad, nunca probé esto, pero se ve bien.

AlekS
fuente