如何限制下载/上传带宽?


77

如何限制以下内容的下载/上传带宽:

  • 整个操作系统。
  • 一个网络接口。
  • 单一申请。

我已经针对wondershaperUbuntu 17.10中的问题提交了一个错误,该错误可能与Ubuntu 17.04中@Zeromatiker的
aguadopd

Answers:


42

限制单个接口很容易,但是全局速率限制和基于应用程序的规则一样,需要更复杂的规则。我并不是说这不可能完成,但是需要深入挖掘网络的内部。

这里是一个快速如何在建立一个每个接口限制

如果您确实想设置基于应用程序的规则,则应查看一些防火墙框架,例如Shorewall,该框架具有用于配置整形的辅助功能。即使使用这些工具,也需要相当多的预见和测试才能将其安装到位。做这样的临时工作还不是那么容易。


wondershaper无法正常工作,我也不知道为什么(即使wondershaper eth0 1000 1000 没有互联网带宽也是如此。我不仅要限制所有eth0带宽,不仅要限制特定的应用程序。该怎么做呢?
Arash

67

尽管这是一个古老的问题,但我在寻找相同问题的答案时遇到了这个问题。操作系统和接口限制已在较早的答案中解决,因此这是设置应用程序特定限制的一种方法。使用一个称为细流的应用程序。也是sudo apt-get install trickle。您可以通过运行来限制特定应用的上传/下载

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

这将以指定的限制启动应用程序。您还可以指定“平滑”时间,以便在期望的时间段内对样本进行滴注,以防应用程序出现带宽消耗突发事件,并且您希望允许突发事件,只要平均值在规格范围内即可。


14
非常感谢你!该解决方案非常适合基于每个应用程序控制带宽。即使问题已经存在多年,也请随时发布答案。供将来参考:可能会向您显示错误消息,如trickle: Could not reach trickled, working independently: No such file or directory。您可以通过以独立模式执行细流来消除此警告trickle -s
谷氨酰胺

如何删除remove流限制的限制?
匿名鼠标

2
Trickle将在强制执行限制的情况下为您运行该应用程序。因此,您要做的就是在不使用细流命令的情况下重新启动应用程序。
SMeznaric

1
非常感谢这个答案,这正是我在寻找的东西
Ali

1
正是在尝试模拟慢速网络连接时需要的。
伊桑·卡明斯基

5

如果要限制特定IP地址的带宽,可以使用以下方法:

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

4
那真是令人费解。几条注释会很长的路要走。你可以为实例增加了qdiscs,ClassID的,HTB等链接或解释
oligofren

因此,默认情况下,以上内容将所有内容限制为5000 kbps,除非将其过滤到其他队列中?如果我们不想限制一切呢?
肯·夏普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.