题 如何限制CentOS服务器上传/下载带宽?


如何限制CentOS服务器上传和下载带宽?这是一个带有单一界面的盒子, eth0。 理想情况下,我想要一个命令行解决方案(我一直在尝试使用 tc),我可以在脚本中轻松打开和关闭的东西。

到目前为止,我一直在尝试做类似的事情 tc filter add dev eth0 protocol ip prio 50 u32 police rate 100kbit burst 10240 drop 但我显然缺少很多知识和信息。有人可以帮忙快速一行吗?

非常感谢, 担


5
2017-10-30 21:49




您想限制特定用户/服务的带宽吗? - Tabiko
不,全系统的东西都可以。 - Dan Nestor


答案:


我在这里为你添加脚本代码时遇到了麻烦,可以通过这个要点获得 - https://gist.github.com/akrasic/7242498#file-limit-tc-sh

该脚本使用TC和Hierarchical Token Bucket(HTB)来定义规则,最后使用过滤器作为一个包含所有规则的过滤器。

你需要修改 interface var如果它不同于 eth0˙和 interface_speed 。

将脚本保存在服务器上,然后通过以下方式启动它: ḃash limit-tc.sh start

停止: bash limit-tc.sh stop

查看状态: bash limit.tc status

状态输出看起来像这样:

qdisc htb 1: root refcnt 2 r2q 10 default 30 direct_packets_stat 1  
 Sent 535666 bytes 6461 pkt (dropped 172, overlimits 7641 requeues 0)  
 rate 0bit 0pps backlog 0b 0p requeues 0  
qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec  
 Sent 535624 bytes 6424 pkt (dropped 172, overlimits 0 requeues 0)   
 rate 0bit 0pps backlog 0b 0p requeues 0  
qdisc sfq 20: parent 1:20 limit 127p quantum 1514b perturb 10sec  
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)  
 rate 0bit 0pps backlog 0b 0p requeues 0  

5
2017-10-31 00:20



查看文档我了解到,对于传入流量,必须使用“警察”过滤器,脚本不使用该过滤器。怎么还能运作? - Dan Nestor
TC命令直到过滤器部分首先进行流量整形规则,并与之配合 tc filter ... 我们对传入和传出的数据包进行分类,如果它们符合规则,它们的形状将与规则相匹配。有不同的方法可以做到这一点,你可以使用iptables + tc来限制流量 - 但如果你有大量的流量来到它iptables ip_conntrack限制可能会被击中,你最终会提高限制,直到它成为内核处理得太多了。这样你就不会遇到这个问题,你可以拥有一套干净的iptables规则,这些规则不会使用ip_conntrack。 - Tabiko