linux下限制每个IP网速


需求是要限制每个ip单独网速为100kb,服务器在阿里云上,专有网络网卡只有eth0

linux下限制网速的方法有很多种
1.wondershaper # 是一根据网卡来进行限制总网速,操作简单,适合新手
2.tc # linux自带的模块,规则复杂,但是效果强大
3.hashlimit # iptables的一个模块,用它结合iptables的其它命令可以实现限速的功能,但是单独hashlimit模块是无法限速的
这里我们选用的是hashlimit,因为比较熟悉iptables,tc太复杂,wondershaper 又达不到需求

利用hashlimit来限速需要包括两个步骤:

1.对符合hashlimit匹配规则包放行
2.丢弃/拒绝未放行的包
其实熟悉iptables,就可以很容易理解这个模块
根据需求使用以下规则就达到每个ip网速为100kb/s的限制
从eth0网卡进入INPUT链的所有数据,使用模块hashlimit 限制网速为100kb/s ,
mode为srcip,有4个mode选项:srcip(每个源地址IP为一个匹配项),dstip(每个目的地址IP为一个匹配项),srcport(每个源端口为一个匹配项),dstport(每个目的端口为一个匹配项),超过100kb/s的数据包会被DROP。OUTPUT链同理

iptables -A INPUT -i eth0 -m hashlimit --hashlimit-above 100kb/s --hashlimit-mode srcip --hashlimit-name in -j DROP 
iptables -A OUTPUT -o eth0 -m hashlimit --hashlimit-above 100kb/s --hashlimit-mode dstip --hashlimit-name out -j DROP

删除

iptables -D INPUT -i eth0 -m hashlimit --hashlimit-above 100kb/s --hashlimit-mode srcip --hashlimit-name in -j DROP 
iptables -D OUTPUT -o eth0 -m hashlimit --hashlimit-above 100kb/s --hashlimit-mode dstip --hashlimit-name out -j DROP

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - linux下限制每个IP网速


Carpe Diem and Do what I like