需求
利用iptables
,限制每个客户端的流量为 1MB
背景分析
- 场景应该是在一个小局域网
- 网关是利用一台
Linux
实现的软路由,所以限速规则应该设置在forward
链上 - 假设该局域网网段为
192.168.2.0/24
- 假设该主机内网网卡为
eth0
,出网卡为eth1
Iptables扩展模块
Quota
模块介绍:
- 流量配额管理,可以计算指定
ip
的流量,单位为byte
Iptables命令
iptables -t filter -I FORWARD -i eth0 -o eth1 -p tcp -s 192.168.2.0/24 -m quota --quota 1024000 -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o eth1 -p tcp -j DROP
-t
:指定表-I
:插入规则-i
:入网口-o
:出网口-p
:协议-s
:源地址-m
:指定模块,--quota
指定流量-j
:处理动作-A
:追加规则
限速不限流量(扩展)
这里以 ping
流量为例
iptables -t filter -I INPUT -p icmp -m limit --limit 10/m -j ACCEPT
iptables -t filter -A INPUT -p icmp -j DROP
limit
模块:限速--limit 10/m
:1分钟内只能通过10个包,也就是6秒钟一个包
具体表现如下: