配置

1、加入命令

环境:padavan 的系统内核为 4.4

找到 参数设置->脚本->在防火墙规则启动后执行

新加入以下命令

1
2
3
4
5
6
7
#限制 IP 为 192.168.2.117 的设备下载速度为 8/Mbps
iptables -t mangle -A FORWARD -d 192.168.2.117 -m limit --limit 700/s --limit-burst 100 -j ACCEPT
iptables -t mangle -A FORWARD -d 192.168.2.117 -j DROP

#限制 IP 为 192.168.2.117 的设备上传速度为 8/Mbps
iptables -t mangle -A FORWARD -s 192.168.2.117 -m limit --limit 700/s --limit-burst 100 -j ACCEPT
iptables -t mangle -A FORWARD -s 192.168.2.117 -j DROP

说明:(已知问题:单独对上传或者下载限速会对另一个产生影响)

通过对每秒匹配包的个数进行限制,多余的由第二行相应的DROP规则去处理,这样就实现了iptables限速

192.168.2.239 改为自己需要限速的ip

700/s 改为自己需要限速的数值,即除了开始的100个数据包(–limit-burst 100),后面为每秒700个数据包(单个网络数据包最大长度为1.5KB,那么 700*1.5KB=1050KB=8.4MB),也就是限制最大带宽为8.4MB

注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。

2、关闭加速

高级设置->外网 WAN 中关闭加速服务

检验

可以在 系统管理->控制台 输入以下命令查看是否配置成功

再打开测速网站查看是否限速成功

1
iptables -t mangle -nvL FORWARD

关于iptables

iptables 实际上就是一种包过滤型防火墙。

通过书写一些接受哪些包,拒绝哪些包的规则,实现数据包的过滤。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。

三表作用
filter过滤,防火墙,过滤数据包
Nat用于网络地址转换(IP、端口)
Mangle拆解报文,作出修改,封装报文

对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT

对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING

而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

五链说明
PREROUTING数据包进入路由之前
INPUT数据包流入口(目的地址为本机)
FORWARD实现转发
OUTPUT数据包出口(原地址为本机,向外发送)
POSTROUTING发送到网卡之前

其中 INPUTOUTPUT 是控制外界与本地主机(也就是路由器)的交互 ,一般用来做安全设置,控制能访问路由的范围

大部分流量路由器是转发,做限速策略应该选择 PERRONTINGFORWARDPOSTROUTING 。 这其中的任何一个都可以控制转发的流量, 只是控制的时间不一样,即进来的时候控制,转发的时候控制,或者准备离开的时候控制,根据自己需求选择