Comment puis-je limiter la bande passante Download / Upload?

77

Comment je peux limiter la bande passante Download / Upload pour:

  • OS complet.
  • Une interface réseau.
  • Une seule application.
yevhene
la source
J'ai déposé un bogue pour le wondershaperproblème dans Ubuntu 17.10, qui peut être similaire à ce qui se passe pour @Zeromatiker dans Ubuntu 17.04: bugs.launchpad.net/ubuntu/+source/wondershaper/+bug/1745421
mardi

Réponses:

42

Limiter une seule interface est facile, mais les limites de débit globales nécessitent des règles plus complexes, tout comme les règles basées sur les applications. Je ne dis pas que cela ne peut pas être fait, mais cela nécessite un peu de fouille dans les éléments internes du réseau.

Voici un rapide Comment mettre en place une limite par interface

Si vous voulez vraiment configurer des règles basées sur les applications, vous devriez vous pencher sur une infrastructure de pare-feu, telle que shorewall , qui dispose de fonctionnalités d'assistance pour configurer la mise en forme. Même avec ces outils, il faut un peu de prévoyance et de tests pour le mettre en place. Faire quelque chose comme ceci ad-hoc n'est pas encore aussi facile.

Ressu
la source
merveershaper ne fonctionne pas, je ne sais pas pourquoi (même s'il wondershaper eth0 1000 1000 n'a pas de bande passante Internet. Je dois limiter toute la bande passante d'eth0, pas seulement des applications spécifiques. Comment peut-on y
arriver
67

Bien que cette question soit ancienne, je l’ai trouvée en cherchant une réponse à la même question. Les limites du système d'exploitation et de l'interface sont déjà abordées dans une réponse précédente. Voici donc un moyen de définir des limites spécifiques à l'application. Utilisez une application appelée filet. Donc faire sudo apt-get install trickle. Vous pouvez limiter le téléchargement pour une application spécifique en exécutant

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

Cela lancera l'application avec les limites spécifiées. Vous pouvez également spécifier le temps de "lissage", afin que les échantillons s'écoulent sur la période souhaitée au cas où votre application consomme de la bande passante en rafales et souhaitez que les rafales soient autorisées tant que la moyenne correspond à vos spécifications.

SMeznaric
la source
14
Merci beaucoup! Cette solution est idéale pour contrôler la bande passante application par application. N'hésitez pas à poster une réponse, même si la question a plusieurs années. Pour référence future: Un message d’erreur tel que trickle: Could not reach trickled, working independently: No such file or directory. Vous pouvez supprimer cet avertissement en exécutant le filet en mode autonome avec trickle -s.
Glutanimate
Comment puis-je supprimer la limite limitée par le filet?
Souris anonyme
2
Trickle exécutera l'application pour vous avec les limites appliquées. Donc, tout ce que vous avez à faire est de redémarrer l'application sans utiliser la commande de maintien.
SMeznaric
1
merci beaucoup pour cette réponse, c'était exactement ce que je cherchais
Ali
1
Exactement ce dont j'avais besoin lorsque je tentais de simuler une connexion réseau lente.
Ethan Kaminski
5

Si vous souhaitez limiter la bande passante pour une adresse IP spécifique, vous pouvez utiliser ceci:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11
Billtian
la source
4
c'était assez compliqué. Quelques commentaires iraient un long chemin. Vous pouvez par exemple ajouter des liens ou des explications sur les disques, classids, htb, etc.
oligofren
Donc, par défaut, la limite ci-dessus limite tout à 5 000 kbps à moins d'être filtrée dans une autre file d'attente? Et si on ne voulait pas tout limiter ?
Ken Sharp