Pour résumer: j'ai un serveur dédié avec quelques amis qui exécutent un client torrent avec interface graphique. Chaque utilisateur exécute un client sous son nom d'utilisateur sur le serveur. Les téléchargements sont donc placés dans son répertoire utilisateur. Seuls les utilisateurs ont accès à leurs propres fichiers, etc.
Comment puis-je surveiller et limiter la bande passante par mois, par utilisateur?
Je pensais qu'il devait y avoir un moyen d'utiliser iptables peut-être. Et en surveillant la bande passante utilisée par tous les processus de l'utilisateur X. S'ils ont utilisé plus de leur bande passante mensuelle autorisée de Y Go, ils reçoivent un message l'informant que la mise en réseau est bloquée pour leur client torrent ou que le client est complètement tué. J'ai aussi pensé au calmar, mais vu qu'il utiliserait plusieurs clients torrent, cela pourrait utiliser beaucoup de ressources serveur ...
J'utilise Debian Lenny.
Je ne sais pas comment faire ça ...
cela serait-il possible? Je suis reconnaissant pour les solutions, même partielles, à cette ...
Réponses:
Vous pouvez utiliser la commande de mise en forme du trafic 'tc'.
Donnez à chacun de vos amis un port différent à utiliser pour BitTorrent. Marquez les paquets TCP avec iptables pour chaque port.
Utilisez ensuite la commande tc pour définir la bande passante et le débit maximum pour chaque utilisateur.
À la fin du mois, vous pouvez supprimer et ajouter les commandes 'tc' pour réinitialiser les comptages.
Vous pouvez surveiller l'utilisation pour chaque utilisateur en:
Si vous utilisez shorewall pour l’installation de Debian, il est très facile de mettre en forme le trafic sans jouer avec iptables. Vous venez de modifier tcdevices, tcclasses et tcrules dans le répertoire / etc / shorewall. Plus d'informations ici: http://www.shorewall.net/traffic_shaping.htm
Comme l’a suggéré l’autre personne, il est probablement préférable de marquer les paquets par nom d’utilisateur que par port, ce qui permet de modifier les ports sans mettre à jour iptables.
la source
Vous pouvez essayer d'utiliser l'
--quota
option dans iptables, qui vous permet de définir une limite de transfert en octets. Comme vous exécutez plusieurs clients torrent, chacun sous un nom d'utilisateur différent, vous pouvez combiner cela avec l'--uid-owner
option, comme suggéré par katriel.De cette manière, vous pouvez imposer une limite de transfert par période (jour / semaine / mois / etc.) sans avoir à limiter la vitesse de téléchargement de vos utilisateurs.
Pour rendre les compteurs de paquets persistants, vous devez les enregistrer régulièrement (par exemple, via un travail cron), afin de pouvoir les restaurer au cas où vous auriez besoin de redémarrer le serveur ou de vider les règles du pare-feu.
la source
Juste pour ajouter à la question ci-dessus.
Vous pouvez utiliser iptables avec une correspondance d'utilisateur pour colorer les paquets de la manière suivante:
Et utilisez ensuite 'tc' pour limiter l'utilisateur par utilisateur.
la source
En fonction du trafic mensuel que vous souhaitez autoriser pour chaque utilisateur, vous pouvez définir une limite de bande passante en conséquence, en utilisant certains des outils suggérés par les autres utilisateurs.
Par exemple, supposons que vous souhaitiez définir une limite de téléchargement maximale de 250 Go / mois . Maintenant, si vous divisez cela par le nombre d'heures d'un mois (~ 730), puis par 3 600, vous obtiendrez le débit de téléchargement maximal, qui dans cet exemple serait d'environ 100 Ko / s .
Ensuite, si vous définissez un débit DL maximal de 100 Ko / s, vous appliquerez automatiquement votre limite de téléchargement de 250 Go / mois (en supposant bien sûr que votre gestionnaire de trafic fonctionne correctement). Si vos utilisateurs ne peuvent pas télécharger plus rapidement que 100 Ko / s, ils ne pourront pas télécharger plus de 250 Go / mois.
Afin de limiter le taux de téléchargement, vous pouvez utiliser
tc
certains des outils mentionnés. Si vous ne voulez pas traiter directement avectc
, vous pouvez utiliser cbq.init , qui est assez simple à configurer. Ce script était présent dans Debian Etch en tant queshaper
paquet, mais il semble avoir été supprimé par la suite. Quoi qu'il en soit, ce n'est qu'un simple script que vous pouvez télécharger depuis SourceForge.Bien sûr, cette approche pourrait ne pas être utile dans votre cas (par exemple, si vous vouliez que vos utilisateurs puissent télécharger à la vitesse maximale disponible tout en appliquant votre limite mensuelle, ma suggestion ne fonctionnerait pas).
la source
Je sais que c’est un vieil article, mais même si j’ai trébuché dessus à la recherche de réponses aujourd’hui, j’ai finalement rassemblé quelque chose qui fonctionne parfaitement pour moi. J'ai une liaison descendante de 25Mbs et une liaison montante de 2,5Mbs et il y a 4 personnes et 5 serveurs partageant ce lien. Avec les serveurs, la bande passante est critique, mais la liaison descendante est utile avec 4 personnes, donc personne ne le cache.
J'exécute centos 6.3 en tant que routeur, mais ces commandes devraient fonctionner sur n'importe quel linux. eth0 est ma liaison montante avec le fournisseur eth1 est mon réseau local via un commutateur à 24 ports et un point d'accès wifi Je limite les téléchargements à 5 des 25 Mbps (environ 500 Ko / s). Je limite les téléchargements à 200 Ko / s (environ 25 Ko / s).
puis pour limiter les utilisateurs vous utilisez 2 lignes iptables par utilisateur
pour limiter les téléchargements:
limiter les téléchargements
il suffit de changer votre adresse IP et vos ports eth pour correspondre à ceux que vous souhaitez limiter
la source
Pour être complet, il existe un démon d’espace utilisateur appelé
trickle
. Il peut être utilisé pour limiter la bande passante d'un processus unique. L'utilisation est très simple: par exemple, pour limiter la bande passante utilisée par aptitude, vous pouvez écrire ceci:trickle -d 10 aptitude install wesnoth
Cependant, comme cela fonctionne avec LD_PRELOAD, il pourrait être facilement remplacé par un utilisateur ayant un accès shell.la source
Jetez un coup d’œil au patch du noyau useripacct (il a en fait une longue histoire ). Dans la documentation de l'ancienne version, il semble également prévoir l'application de quotas ainsi que la surveillance. Il est également possible de fournir vos propres scripts de stratégie.
Étant donné que les créateurs d’utilisateurs devaient recourir à un correctif du noyau pour obtenir le comportement souhaité, il semble peu probable qu’une méthode plus simple soit disponible par défaut. Les seules alternatives semblent être la limitation de bande passante (par exemple, tc ou ruissellement) comme suggéré par la plupart des autres réponses ici (mais pas réellement ce que vous recherchez), ou la création d'une machine virtuelle pour chaque utilisateur (avec la virtualisation de système d'exploitation légère). par quelque chose comme OpenVZ ) et le trafic de comptabilité par machine virtuelle (ce qui est assez facile à évaluer par quelque chose comme vnstat ). Cela semble toutefois exagéré (vous avez soudainement un groupe de machines virtuelles à administrer au lieu d’un système).
la source