Quelle est la meilleure solution pour le contrôle du trafic dans un grand système (environ 2000 utilisateurs)?

11

situation suivante: Nous sommes un groupe d'étudiants administrant la connexion Internet pour les résidences locales, avec un total d'environ 2000 utilisateurs finaux.

Nous avons un système de points de trafic, chaque Mo coûte des points de téléchargement ou de téléchargement, de nouveaux points sont ajoutés à l'heure. Pour le moment, nous bloquons l'accès à Internet d'un utilisateur lorsqu'il a dépensé tous ses points (en le plaçant dans une politique REJETER dans iptables sur notre routeur de passerelle Debian).

Nous souhaitons uniquement limiter la bande passante d'un utilisateur. Quelle est la meilleure façon de procéder?

La réponse simple serait de définir une limite de débit sur le port du commutateur de l'utilisateur (principalement Cisco Catalyst 3550s). Cependant, cela n'est pas souhaitable, car le trafic à l'intérieur de notre propre réseau et vers le réseau universitaire devrait rester illimité. Existe-t-il un moyen de limiter la bande passante uniquement pour les paquets avec une certaine plage IP de destination ou source (donc à la fois pour la sortie et l'entrée) dans Cisco IOS? Je n'ai rien trouvé.

L'autre façon serait de contrôler le trafic sur notre routeur passerelle. Plusieurs solutions me viennent à l'esprit:

  • tc ou tcng - semble que les deux ont une syntaxe plutôt arcane et n'offrent pas de bonnes fonctionnalités pour effectuer le contrôle du trafic par IP. Un QDisc dédié pour tant de gens ralentirait probablement beaucoup le routeur. De plus, la documentation sur les deux est assez obsolète.

  • shorewall - semble avoir une syntaxe plutôt soignée pour les configurations, cependant, je ne sais pas s'il peut gérer cette quantité de trafic et d'utilisateurs et s'il convient à la limitation du trafic par IP

  • pfSense - ressemble à un système d'exploitation destiné à des fins comme la nôtre. Cependant, cela nous obligerait à réinstaller complètement notre routeur de passerelle. Nous n'avons pas d'autres systèmes BSD et pfSense devrait avoir de très bonnes capacités de comptabilité du trafic (nous utilisons actuellement fprobe-ulog et ulog-acctd).

Quelle est votre expérience? Quelle solution répond à nos besoins et peut être la plus facilement maintenue? Avez-vous d'autres idées?

Si vous avez besoin d'informations supplémentaires sur notre système, n'hésitez pas à demander.

Merci d'avance.


EDIT : J'ai implémenté le système avec iptableset tc.

Chaque utilisateur possède un sous-réseau / 28, une IP VPN (à la fois à partir de 10.0.0.0/8) et une IP externe, tous sont pilotés via une chaîne iptables. Cette chaîne n'a qu'une seule règle, une simple RETURN.

Toutes les cinq minutes, un script Python lit les compteurs d'octets de ces règles. Il réinitialise les compteurs et met à jour le compte de point de trafic de l'utilisateur dans notre base de données PostgreSQL.

Si le solde de points d'un utilisateur diminue en dessous d'un certain seuil, deux classes tc sont créées pour cet utilisateur (une pour l'interface entrante, une pour l'interface sortante sur notre routeur de passerelle), les adresses IP sont entrées dans des filtres tc appartenant à ces classes. Les classes sont limitées en vitesse par un HTB.

Par rapport au système précédent avec fprobe-uloget ulog-acctdcela est beaucoup plus rapide car le comptage d'octets est effectué par iptables.

La vitesse du réseau s'est considérablement améliorée pour nos utilisateurs.

Christoph Wurm
la source

Réponses:

2

Je ne sais pas à quel point vous êtes intéressé à reconfigurer l'ensemble de votre configuration (c'est-à-dire remplacer Debian), ni à quel point il serait possible de placer quelque chose comme ça derrière votre passerelle, mais FreeBSD a une fonctionnalité dans ipfw connue sous le nom de dummynet . Comme il semble que vous n'ayez pas envie d'obtenir un modulateur de trafic matériel dédié, cela peut être une option pour vous. Nous l'utilisons actuellement pour étouffer le trafic SMTP entrant et sortant via l'une de nos passerelles proxy pour empêcher un système backend NFS vieillissant d'être submergé et de ne plus répondre par la suite.

Avec des scripts et une configuration intelligente de vos ensembles de règles, il serait possible de contrôler le trafic de milliers d'adresses IP individuelles.

brent
la source
0

Je vais devoir vous demander ce que nous utilisons, mais nos employés ResTek ont ​​un appareil à la frontière Internet qui assure des fonctions de qualité de service. Il a une priorité par défaut pour les flux non classés et priorise les autres trafics en fonction des règles. C'est la fonctionnalité prioritaire qui le vend vraiment, car ils exploitent également un cluster de mise en cache basé sur Squid qui est répertorié comme prioritaire dans l'appliance de bordure. Les personnes sur leur réseau ont alors le choix de surfer sur le Web avec une priorité standard (et quelque peu excitante), ou d'utiliser le proxy et d'obtenir une réponse très rapide. Ils acceptent également les demandes de priorité des serveurs de jeu, car ils sont sensibles à la latence mais à faible bande passante, bien sûr.

Il y a beaucoup de travail à gérer les demandes de serveurs de jeux, mais celles-ci vont lentement au bord du chemin alors que de plus en plus de jeux s'éloignent des serveurs privés. Dans l'ensemble, j'entends que cela fonctionne assez bien pour eux. Ils peuvent empêcher des choses comme bittorrent d'étouffer tout autre trafic, tout en gardant les temps de chargement YouTube rapides.

sysadmin1138
la source
0

Avec autant d'utilisateurs, la plupart des logiciels simples commenceront à tomber en panne.

Pensez à regarder des packeteer et des appareils similaires. Ces jours-ci, ils sont presque plus chers que l'achat de plus de bande passante (aux États-Unis et en Europe, nous, pauvres pauvres d'Australie, avons toujours des tarifs très élevés).

LapTop006
la source
Malheureusement, nous ne pouvons pas nous permettre d'investir beaucoup d'argent dans cela, ni pour un shaper de paquets dédié ni pour plus de bande passante. Notre système fonctionne en ce moment, la question est de savoir comment, au lieu de bloquer les utilisateurs qui ont dépassé leur trafic alloué, nous ne pouvons que réduire la bande passante qui leur est disponible.
Christoph Wurm
0

dummynet est une très bonne suggestion à mon avis. Mais je suis sûr que iptables est également capable de façonner le trafic , vous pouvez donc le faire sur votre boîte Debian.

monomyth
la source
0

tc devrait bien fonctionner .. Je crois que ce que vous voulez faire est de changer vos règles iptables actuelles pour marquer plutôt que REJETER le trafic, alors vous pouvez utiliser un petit nombre de règles tc pour appliquer la mise en forme du trafic à ces flux marqués.

consultez également ipset pour gérer la liste des utilisateurs restreints http://ipset.netfilter.org/

Justin
la source
0

Trafficpanel semble être une solution. Entre autres fonctionnalités:

  • Limitation de la vitesse HTTP maximale par connexion
  • Limitation du trafic total des ressources Web par hôte de réseau local
  • Enregistrer le trafic Internet par hôte de réseau local
  • Limitation de la vitesse de trafic maximale par hôte de réseau local
  • Limiter le trafic Internet total par hôte de réseau local

En fait, je n'ai jamais essayé cette chose, mais ça va.

AlekS
la source