iptables 实现流量配额控制
iptables 流量配额控制设置
当所用的服务器是按量付费时,就需要限制流量使用量以避免大额的流量费。
如下两行命令,即可启动流量配额上限设置:
$ iptables -A OUTPUT -p tcp -m quota --quota 1024000 -j ACCEPT $ iptables -A OUTPUT -p tcp -j DROP
iptables 结构解释
以上面的流量配额限制的命令为例做解释:
$ iptables -A OUTPUT -p tcp -m quota --quota 1024000 -j ACCEPT $ iptables -A OUTPUT -p tcp -j DROP
- -A OUTPUT 代表在OUTPUT链中添加一条规则,OUTPUT是iptables规则中的一个链(Chain),代表流出的流量包,总共有三个(INPUT, FORWARD, OUTPUT),区分不同场景的规则
- -p tcp 是iptables的协议参数(`--protocol``)。匹配规则的一部分
- -m quota --quota 1024000 是该条规则的另一匹配规则(match),匹配通过则执行后面指定的操作(target)。这里用quota做匹配,限制1M流量(1024000 Bytes)
- -j ACCEPT 指定匹配成功后的执行操作,ACCEPT代表接受,DROP代表丢弃包
这两条规则合起来:
- 第一条指定:对于流出的tcp协议包,如果流量没有超过限制,则允许通过。
- 当第一条规则匹配失败,即流量超过后,顺序第二条规则生效。第二条规则指定:拒绝所有的tcp协议流出包。
两者合起来,流量限制内通过,流量超出后拒绝,达到控制流量的目的。
另,针对tcp端口匹配有两种:--sport, --dport,其区别是包的连接两段的方向
- --sport,source port,指定连接的来源段
- --dport,destination port,指定链接的目的端