CentOS7利用tc命令限制服务器的上行网速
比较适合长期大量占用带宽而可能被IDC定义为服务滥用最终导致被停机的一种使用场景,主动限速要比等运营商发现你滥用之后限速你要好的多,主机商的限速可能会影响你的业务
要使用 tc 命令在 CentOS 7 中限制网速为 1256KB/s,你需要使用 tc 结合 htb(hierarchical token bucket)类别来实现。以下是一个基本的示例:
阿里云限量代金券 | 此广告位出租25元/月 |
首先,确保你已经安装了 iproute 包,它包含了 tc 命令。
安装 iproute:
sudo yum install iproute
然后,你可以使用类似以下的命令来设置网速限制:
sudo tc qdisc add dev eth0 root handle 1: htb default 10 sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1
这些命令将限制名为 eth0 的网络接口的速率为 1256KB/s。
请确保将命令中的 eth0 替换为你要限制的实际网络接口名称,如果你不确定你的网卡是不是eth0接口可以执行ip addr命令查看。此外,这些命令只对传出的流量生效,如果需要对传入流量进行限制,可以使用类似的规则,但需要调整一些参数。
这些规则可以帮助你实现网络速率的限制,但在实施之前,最好在测试环境中进行验证,以确保规则不会对网络造成意外影响。
要修改现有的限速规则,首先要删除现有的限速规则:
sudo tc qdisc del dev eth0 root
然后,重新设置新的限速规则即可
PS:
一般设置的限制带宽要稍高于你预想的限制值,比如你想限制网速为10mbit的话建议设置成20mbit比较好
留有一定的突发带宽有助于提高平局带宽,不然的话平均带宽会有影响