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

版权声明:本文为mayifan0原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。