Comment limiter la bande passante sous Linux
Sommaire
I. Présentation de wondershaper et trickle
Lorsque l'on commence à beaucoup travailler sur des machines et des serveurs Linux, il est intéressant de savoir comment limiter la bande passante. Cela peut être utile dans différents contextes, dans le cadre d'un serveur ou d'une infrastructure mutualisés par exemple ou juste pour éviter qu'un téléchargement ou une application prenne l'ensemble du trafic au détriment des autres utilisateurs du réseau. On pourrait très bien mettre de la QoS ou d'autres technologies, mais les outils que nous allons voir ensemble ici permettent d'effectuer une limitation de la bande passante utilisée très simplement et rapidement sous Linux, j'ai nommé wondershaper et trickle.
II. Limiter la bande passante par interface avec wondershaper
wondershaper est un petit outil, léger et très simple qui n'a qu'une seule fonction : limiter la bande passante qui peut être utilisée par une interface réseau donnée de notre machine Linux. On peut en effet limiter la bande passante entrant (download) et la bande passante sortant (upload) avec des valeurs différentes et avoir un paramétrage différent par interface.
On commence par l'installer, pour les machines Debian et Ubuntu :
apt-get install wondershaper
Pour les machines CentOS/RHEL :
yum install wondershaper
L'utilisation de cette commande est des plus basique, voici la syntaxe générale :
wondershaper <interface> <limite_download> <limite_upload>
Il faut bien noter ici que les limites sont à inscrite en kilobits par seconde et non en kilooctets comme il est plus courant de le faire. Pour limiter la bande passante à 1Mo/s par en download et 200Ko/s en uload sur l'interface eth0 par exemple :
wondershaper eth0 8192 1600
1 mégaoctects étant égale à 8192 kilobits et 200Ko/s à 1600 kilobits. Il existe des convertisseurs très efficace sur le net, voici celui que j'ai utilisé pour ma conversion : Bit Calculator
On peut ensuite faire un test, par exemple en téléchargeant une archive depuis internet pour voir que la bande passante est bien limitée.
Il est à noter que l'on peut très bien, si l'on dispose de plusieurs interfaces, laisser les autres interfaces sans limitations ou au contraire, en mettre des plus ou moins restrictives en utilisant la même syntaxe. Il nous suffira juste pour cela de changer le nom de l'interface dans la commande utilisée.
Pour faire sauter toute restrictions sur une interface donnée, on va simplement utiliser la ligne de commande suivante, par exemple pour l'interface "eth0" :
wondershaper clear eth0
L'interface désignée n'aura alors plus aucune restrictions.
III. Limiter la bande passante d'une commande avec trickle
Bien qu'il agisse également sur la limitation de la bande passante en upload et en download, trickle correspond à d'autres contextes d'utilisation puisqu'il ne s'applique que lors de l'utilisation en ligne de commande, c'est à dire de façon ponctuelle. Si je souhaite télécharger une archive sur internet et que je souhaite limiter la bande passante utilisée par ce téléchargement, je peux utiliser trickle pour limiter la bande passante. On commence par l'installer avec les lignes de commandes suivantes, pour Debian/Ubuntu :
apt-get install trickle
pour les machines CentOS/RHEL :
yum install trickle
On peut ensuite l'utiliser, il suffit pour cela de faire précéder notre commande de la limitation que l'on souhaite effectuer. Par exemple si je veux télécharger l'archive du dernier WordPress en limitant la bande passante utilisée en download à 10 Kilooctets par seconde :
trickle -d 10 wget https://fr.wordpress.org/wordpress-4.1-fr_FR.zip
Je vais alors voir le téléchargement s'effectuer normalement, mais la bande passante sera limitée à 10Ko/s. Je peux également effectuer une limitation sur l'upload indépendemment avec l'option "-u" au lieu de "-d" ou alors les deux en même temps :
trickle -d 10 -u 20 scp archive.zip emile@serveur-34:/home/emile
Ici, je vais envoyer une archive via scp sur un serveur distant et la bande passante en upload ne pourra pas dépasser 20 mo/s, la bande passante en download ne pourra excéder 10mo/s.
C'est une limitation qui prendra fin dès que la commande sera terminée.
Si l'on ne souhaite pas saisir notre limitation à chaque fois que l'on saisi une commande, on peut utiliser trickle en mode démon. On va commencer par lancer le démon en indiquant notre limite de bande passante, par exemple, 50mo/s en download et pas de limitation en upload :
trickled -d 20
puis on va juste saisir "trickle" avant chaque commande sur lesquelles nous souhaitons appliquer cette restriction :
trickle wget https://fr.wordpress.org/...
Si la même commande est lancée sans "trickle" devant, aucune restriction ne lui sera appliquée.
Ces deux commandes sont très simple d'utilisation et peuvent rendre bien des services lorsque la bande passante est faible et que plusieurs utilisateurs se la partagent !
j’ai un debit de 2Mbps/2Mbps. J’ai utilisé wondershaper pour limiter la BP montant et descendant à 1Mbps, comme suit sur l’interface de sortie sur Internet de mon firewall ,mais aucun changement en terme de limitation :
wondershaper eth0 1024 1024
Mais en exécutant la commande vnstat -l -i eth0, elle montre un débit descendant au delà de de 1mbps, le débit atteint même 2,05 mbps.
Bonjour, cette limite se porte sur la carte réseau mais par exemple si on a un dédié sur ovh et que quelqu’un possède une ligne pour télécharger un fichier lourd, ovh envoi ce fichier à une vitesse très élevé, 800-900mb/s
Comment limiter la vitesse par raquette sur le serveur et non la carte réseau de façon général ? Merci de votre aide.