Comment limiter l'utilisation de la bande passante du réseau dans Linux en utilisant le rotation

Comment limiter l'utilisation de la bande passante du réseau dans Linux en utilisant le rotation

Avez-vous déjà rencontré des situations où une application a dominé votre bande passante entièrement? Si vous avez déjà été dans une situation où une application a mangé tout votre trafic, vous apprécierez le rôle de l'application de Shaper de bande passante.

Soit vous êtes un administrateur système ou juste un Utilisateur Linux, Vous devez apprendre à contrôler les vitesses de téléchargement et de téléchargement des applications pour vous assurer que votre bande passante réseau n'est pas brûlée par une seule application.

[Vous pourriez également aimer: 16 outils de surveillance de bande passante utiles pour analyser l'utilisation du réseau dans Linux]

Qu'est-ce que le ruisseau?

Couler est un outil de shaper de bande passante réseau qui nous permet de gérer les vitesses de téléchargement et de téléchargement des applications afin d'éviter un seul d'entre eux pour se gêner tout (ou la plupart) de la bande passante disponible.

En quelques mots, Trickle vous permet de contrôler le taux de trafic réseau sur une base par application, par opposition au contrôle par utilisateur, qui est l'exemple classique de la mise en forme de la bande passante dans un environnement client-serveur, et est probablement la configuration que nous sommes plus familier avec.

Comment fonctionne le rotation?

De plus, un filet peut nous aider à définir les priorités sur une base par application afin que lorsque les limites globales ont été fixées pour l'ensemble du système, les applications prioritaires obtiendront toujours plus de bande passante automatiquement.

Pour accomplir cette tâche, le ruissellement fixe les limites de trafic à la manière dont les données sont envoyées et reçues de Sockets utilisant des connexions TCP. Nous devons noter que, à part les taux de transfert de données, le ruissellement ne modifie en aucune façon le comportement du processus qu'il façonne à un moment donné.

Ce qui ne peut pas faire de randonnée?

La seule limitation, pour ainsi dire, est que Trickle ne fonctionnera pas avec des applications ou des binaires liés statiquement Suid ou SGID Les bits définis car il utilise des liens et du chargement dynamiques pour se placer entre le processus en forme et sa prise de réseau associée. Trickle agit alors comme un proxy entre ces deux composants logiciels.

Étant donné que Trickle ne nécessite pas de privilèges de superutilisateurs pour s'exécuter, les utilisateurs peuvent définir leurs propres limites de trafic. Étant donné que cela peut ne pas être souhaitable, nous explorerons comment définir les limites globales que les utilisateurs du système ne peuvent pas dépasser. En d'autres termes, les utilisateurs pourront toujours gérer leurs taux de trafic, mais toujours dans les limites fixées par l'administrateur système.

Environnement de test

Dans cet article, nous expliquerons comment limiter la bande passante réseau utilisée par les applications dans un serveur Linux avec un filet.

Pour générer le trafic nécessaire, nous utiliserons ncftpput et ncftpget (Les deux outils sont disponibles en installation ncftp) sur le client (Centos serveur - Dev1: 192.168.0.17), et vsftpd sur le serveur (Debian - Dev2: 192.168.0.15) à des fins de démonstration. Les mêmes instructions fonctionnent également sur Chapeau rouge, Feutre et les systèmes basés sur Ubuntu.

Installation de NCFTP et VSFTPD dans Linux

1. Pour RHEL / CENTOS 8/7, Activer le référentiel EPEL. Packages supplémentaires pour Enterprise Linux (Epel) est un référentiel de logiciels libres et open source de haute qualité entretenus par le projet Fedora et est 100% compatible avec ses retombées, telles que Red Hat Enterprise Linux et Centos. Les deux couler et ncftp sont mis à la disposition de ce référentiel.

2. Installer ncftp comme suit:

# yum Update && sudo yum install ncftp [sur les systèmes basés sur redhat] # aptitude mise à jour && aptitude installer ncftp [sur les systèmes basés sur Debian] 

3. Configurer un serveur FTP dans un serveur séparé. Veuillez noter que bien que le FTP soit intrinsèquement précaire, il est toujours largement utilisé dans les cas où la sécurité dans le téléchargement ou le téléchargement de fichiers n'est pas nécessaire.

Nous l'utilisons dans cet article pour illustrer les primes de filet et parce qu'elle montre les taux de transfert en stdout sur le client, et nous laisserons la discussion pour savoir s'il doit ou non être utilisé pour une autre date et heure.

# yum Update && yum install vsftpd [sur les systèmes basés sur redhat] # Apt Update && apt install vsftpd [sur les systèmes basés sur Debian] 

Maintenant, modifiez le / etc / vsftpd / vsftpd.confli Fichier sur le serveur FTP comme suit:

$ sudo nano / etc / vsftpd / vsftpd.confue ou $ sudo / etc / vsftpd.confli 

Apporter les modifications suivantes:

anonymous_enable = no local_enable = oui chroot_local_user = oui allow_writeable_chroot = oui 

Après cela, assurez-vous de démarrer VSFTPD pour votre session actuelle et de l'activer pour démarrer automatiquement sur les futures bottes:

# SystemCTL start vsftpd [pour les systèmes basés sur Systemd] # systemCTL Activer vsftpd # service vsftpd start [pour les systèmes basés sur l'initiation] # chkconfig vsftpd on 

4. Si vous avez choisi de configurer le serveur FTP dans un Centos/ /Rhel Droplet avec clés SSH pour l'accès à distance, vous aurez besoin d'un compte utilisateur protégé par mot de passe avec le répertoire approprié et les autorisations de fichier pour télécharger et télécharger le contenu souhaité en dehors du répertoire de la racine.

Vous pouvez ensuite parcourir votre répertoire d'origine en entrant l'URL suivant dans votre navigateur. Une fenêtre de connexion apparaîtra pour vous inviter à un compte utilisateur valide et à un mot de passe sur le serveur FTP.

FTP: // 192.168.0.15 

Si l'authentification réussit, vous verrez le contenu de votre répertoire domestique. Plus tard dans ce tutoriel, vous pourrez actualiser cette page pour afficher les fichiers qui ont été téléchargés au cours des étapes précédentes.

Arbre d'annuaire FTP

Comment installer Trickle dans Linux

Maintenant, installez le rotation via Miam ou apte.

Pour assurer une installation réussie, il est considéré comme une bonne pratique pour s'assurer que les packages actuellement installés sont à jour (en utilisant Mise à jour) Avant d'installer l'outil lui-même.

# yum -y mise à jour && yum install trickle [sur les systèmes basés sur redhat] # apt -y update && apt install trickle [sur les systèmes basés sur Debian] 

Vérifiez si Trickle fonctionnera avec le binaire souhaité. Comme nous l'avons expliqué plus tôt, le filet ne fonctionnera qu'avec des binaires en utilisant des bibliothèques dynamiques ou partagées. Pour vérifier si nous pouvons utiliser cet outil avec une certaine application, nous pouvons utiliser le bien connu LDD utilité, où LDD signifie liste les dépendances dynamiques.

Plus précisément, nous chercherons la présence de glibc (la bibliothèque GNU C) dans la liste des dépendances dynamiques d'un programme donné, car c'est précisément que la bibliothèque qui définit les appels système impliqués dans la communication via des prises.

Exécutez la commande suivante contre un binaire donné pour voir si Trickle peut être utilisé pour façonner sa bande passante:

# LDD $ (qui [binaire]) | grep libc.donc 

Par exemple,

# LDD $ (qui ncftp) | grep libc.donc 

dont la sortie est:

# libc.donc.6 => / lib64 / libc.donc.6 (0x00007EFFF2E6C000) 

La chaîne entre les supports dans la sortie peut passer du système en système et même entre les exécutions ultérieures de la même commande car elle représente l'adresse de charge.

Si la commande ci-dessus ne renvoie aucun résultat, cela signifie que le binaire contre lequel il a été exécuté n'utilise pas libc, et donc le rotation ne peut pas être utilisé comme shaper de bande passante dans ce cas.

Apprenez à utiliser Trickle dans Linux

L'utilisation la plus élémentaire du rotation est en mode autonome. En utilisant cette approche, Trickle est utilisé pour définir explicitement les vitesses de téléchargement et de téléchargement d'une application donnée. Comme nous l'avons expliqué plus tôt, pour le bien de la concision, nous utiliserons la même application pour les tests de téléchargement et de téléchargement.

Rétalonner en mode autonome

Nous comparerons les vitesses de téléchargement et de téléchargement avec et sans utiliser de filet. Le -d L'option indique la vitesse de téléchargement en kb / s, tandis que le -u Le drapeau indique à Trickle de limiter la vitesse de téléchargement par la même unité. De plus, nous utiliserons le -s Flag, qui spécifie ce rythme devrait fonctionner en mode autonome.

La syntaxe de base pour exécuter le rotation en mode autonome est la suivante:

# trickle -s -d [Rate de téléchargement dans KB / S] -U [Taux de téléchargement dans KB / S] 

Afin d'effectuer les exemples suivants par vous-même, assurez-vous d'avoir couler et ncftp installé sur la machine client (192.168.0.17 dans mon cas).

Exemple 1: téléchargement d'un 2.Fichier PDF de 8 Mo avec et sans rotation.

Nous utilisons le libre-distribution Fondamentaux Linux Fichier PDF (disponible à partir d'ici) pour les tests suivants.

Vous pouvez initialement télécharger ce fichier dans votre répertoire de travail actuel avec la commande suivante:

# wget http: // linux-formation.be / files / books / linuxfun.pdf 

La syntaxe pour télécharger un fichier sur notre serveur FTP sans ruissellement est la suivante:

# ncftpput -u nom d'utilisateur -p mot de passe 192.168.0.15 / Remote_Directory Local-Filename 

/ Remote_directory est le chemin du répertoire de téléchargement par rapport à la maison du nom d'utilisateur, et filename local est un fichier dans votre répertoire de travail actuel.

Plus précisément, sans rotation, nous obtenons une vitesse de téléchargement de pic de 52.02 Mb / s (Veuillez noter que ce n'est pas la vitesse de téléchargement moyenne réelle, mais un pic de départ instantané), et le fichier est téléchargé presque instantanément:

# ncftpput -u nom d'utilisateur -p mot de passe 192.168.0.15 / testdir Linuxfun.pdf 

Sortir:

Linuxfun.PDF: 2.79 MB 52.02 Mb / s 

Avec Trickle, nous limiterons le taux de transfert de téléchargement à 5 kb / s. Avant de télécharger le fichier pour la deuxième fois, nous devons le supprimer du répertoire de destination; sinon, ncftp nous informera que le fichier du répertoire de destination est le même que nous essayons de télécharger et n'effectuera pas le transfert:

# RM / Absolute / Path / To / Destination / Directory / LinuxFun.pdf 

Alors:

# trickle -s -u 5 ncftpput -u nom d'utilisateur -p mot de passe 111.111.111.111 / TestDir Linuxfun.pdf 

Sortir:

Linuxfun.PDF: 2.79 MB 4.94 kb / s 

Dans l'exemple ci-dessus, nous pouvons voir que la vitesse de téléchargement moyenne est tombée ~ 5 Ko / s.

Exemple 2: Télécharger le même 2.Fichier PDF de 8 Mo avec et sans rotation

Tout d'abord, n'oubliez pas de supprimer le PDF du répertoire source d'origine:

# RM / Absolute / Path / To / Source / Directory / LinuxFun.pdf 

Veuillez noter que les cas suivants téléchargeront le fichier distant dans le répertoire actuel dans la machine client. Ce fait est indiqué par la période ('.') qui apparaît après l'adresse IP du serveur FTP.

Sans rotation:

# ncftpget -u nom d'utilisateur -p mot de passe 111.111.111.111 . / testdir / linuxfun.pdf 

Sortir:

Linuxfun.PDF: 2.79 MB 260.53 Mb / s 

Avec un rotation, limitant la vitesse de téléchargement à 20 kb / s:

# rotation -s -d 30 ncftpget -u nom d'utilisateur -p mot de passe 111.111.111.111 . / testdir / linuxfun.pdf 

Sortir:

Linuxfun.PDF: 2.79 MB 17.76 kb / s 

Rouier de course en mode [non géré] supervisé

Trickle peut également fonctionner en mode non géré, suivant une série de paramètres définis dans / etc / ruissellé.confli. Ce fichier définit à quel point (le démon) se comporte et gère le ruisseau.

De plus, si nous souhaitons définir des paramètres globaux à utiliser, dans l'ensemble, par toutes les applications, nous devrons utiliser la commande ruisselle. Cette commande exécute le démon et nous permet de définir des limites de téléchargement et de téléchargement qui seront partagées par toutes les applications exécutées par rotation sans que nous ayons besoin de spécifier des limites à chaque fois.

Par exemple, en cours d'exécution:

# ruissellement -d 50 -U 10 

Provoquera que les vitesses de téléchargement et de téléchargement de toute application exécutée via le rotation soient limitées à 30 kb / s et 10 kb / s, respectivement.

Veuillez noter que vous pouvez vérifier à tout moment, que ce soit en cours d'exécution et avec quels arguments:

# ps -ef | Le grep coule | grep -v grep 

Sortir:

racine 16475 1 0 déc24 ? 00:00:04 ruissellement -d 50 -U 10 
Exemple 3: Téléchargement d'un fichier MP4 de 19 Mo vers notre serveur FTP en utilisant avec et sans rotation.

Dans cet exemple, nous utiliserons le «HE est le cadeau”Vidéo, disponible en téléchargement à partir de ce lien.

Nous téléchargerons initialement ce fichier dans votre répertoire de travail actuel avec la commande suivante:

# wget http: // media2.LDSCDN.org / actifs / missionary / our-people-2014 / 2014-00-1460-he-is-the-geft-360p-Eng.MP4 

Tout d'abord, nous commencerons le démon coulé avec la commande répertoriée ci-dessus:

# ruissellement -d 30 -U 10 

Sans rotation:

# ncftpput -u nom d'utilisateur -p mot de passe 192.168.0.15 / Testdir 2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4 

Sortir:

2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4: 18.53 MB 36.31 Mb / s 

Avec un rythme:

# trickle ncftpput -u nom d'utilisateur -p mot de passe 192.168.0.15 / Testdir 2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4 

Sortir:

2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4: 18.53 MB 9.51 kb / s 

Comme nous pouvons le voir dans la sortie ci-dessus, le taux de transfert de téléchargement est tombé ~ 10 Ko / s.

Exemple 4: Télécharger la même vidéo avec et sans filet

Un péché Exemple 2, Nous téléchargerons le fichier dans le répertoire de travail actuel.

Sans rotation:

# ncftpget -u nom d'utilisateur -p mot de passe 192.168.0.15 . / TestDir / 2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4 

Sortir:

2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4: 18.53 MB 108.34 Mb / s 

Avec un rythme:

# trickle ncftpget -u nom d'utilisateur -p mot de passe 111.111.111.111 . / TestDir / 2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4 

Sortir:

2014-00-1460-HE-IS-THE-GIFT-360P-ENG.MP4: 18.53 MB 29.28 Ko / s 

Qui est conforme à l'ensemble de limite de téléchargement précédemment (30 kb / s).

Note: Qu'une fois le démon démarré, il n'est pas nécessaire de fixer des limites individuelles pour chaque application qui utilise un rotation.

Comme nous l'avons mentionné plus tôt, on peut encore personnaliser la mise en forme de la bande passante de Trickle à travers les randonnées.confli. Une section typique de ce fichier se compose des éléments suivants:

[Service] priority = lisse de temps = linge de longueur =  

Où,

  1. [service] Indique le nom de l'application dont nous avons l'intention de façonner de la bande passante.
  2. Priorité nous permet de spécifier un service pour avoir une priorité plus élevée par rapport à un autre, ne permettant donc pas à une seule application de coincer toute la bande passante que le démon gére. Plus le nombre est bas, plus la bande passante est affectée à [Service].
  3. Lisse de temps [en quelques secondes]: définit avec quels intervalles de temps ruisselés essaieront de laisser le transfert de l'application et / ou de recevoir des données. Valeurs plus petites (quelque chose entre la plage de 0.1 - 1s) sont idéaux pour les applications interactives et entraîneront une session plus continue (lisse) tandis que des valeurs légèrement plus grandes (1 à 10 s) sont meilleures pour les applications qui nécessitent un transfert en vrac. Si aucune valeur n'est spécifiée, la valeur par défaut est utilisée.
  4. Lisseur de longueur [dans KB]: L'idée est la même que dans le temps de lissance du temps, mais basé sur la durée d'une opération d'E / S. Si aucune valeur n'est spécifiée, la valeur par défaut (10 kb) est utilisée.

La modification des valeurs de lissage se traduira par l'application spécifiée par [service] en utilisant des taux de transfert dans un intervalle au lieu d'une valeur fixe. Malheureusement, il n'y a pas de formule pour calculer les limites inférieures et supérieures de cet intervalle car elle dépend principalement de chaque scénario de cas spécifique.

Ce qui suit est un coulé.confli Exemple de fichier dans le client CentOS 7 (192.168.0.17):

[ssh] prioritaire = 1 lisse de temps = 0.1 lisse de longueur = 2 [FTP] Priorité = 2 lisses de temps = 1 Longueur-linge = 3 

En utilisant cette configuration, les randonnées priorisent les connexions SSH sur les transferts FTP. Notez qu'un processus interactif, tel que SSH, utilise des valeurs de lisse de temps plus petites, tandis qu'un service qui effectue des transferts de données en vrac (FTP) utilise une valeur plus grande.

Les valeurs de lissage sont responsables des vitesses de téléchargement et de téléchargement dans notre exemple précédent ne correspondant pas à la valeur exacte spécifiée par le démon coulé mais se déplaçant dans un intervalle proche de lui.

[Vous pourriez également aimer: comment sécuriser et durcir le serveur OpenSSH]

Conclusion

Dans cet article, nous avons exploré comment limiter la bande passante utilisée par les applications en utilisant des distributions basées sur Fedora et Debian / Derivatives. D'autres cas d'utilisation possibles incluent, sans s'y limiter:

  • Limiter la vitesse de téléchargement via un utilitaire système tel que WGET ou un client torrent, par exemple.
  • Limitant la vitesse à laquelle votre système peut être mis à jour via «yum» (ou «aptitude», si vous êtes dans un système basé à Debian), le système de gestion des paquets.
  • Si votre serveur se trouve derrière un proxy ou un pare-feu (ou est le proxy ou le pare-feu lui-même), vous pouvez utiliser un rotation pour définir des limites sur le téléchargement et le téléchargement ou la vitesse de communication avec les clients ou l'extérieur.

Les questions et les commentaires sont les bienvenus. N'hésitez pas à utiliser le formulaire ci-dessous pour les envoyer à notre chemin.