前言
如果你的网站服务器是有流量限制或者流量不是无限量而是要收费的,如果流量超标怕赔不起,那么有没有什么方法可以限制每日流量使用量?
实现
之前的文章有提到Nginx实现初步抵御DDOS的方法、限速、限请求数、限制连接数,请看:https://blog.terrynow.com/2021/03/19/nignx-anti-ddos-implement/
本次使用iptables来限制每日流量,如果超出了就全部丢包。
查看你的服务器是否有iptables:which iptables
没有iptables的,请看:https://blog.terrynow.com/2021/02/16/centos7-ubuntu-iptables-firewall/
以每日限制40G流量为例:
iptables规则如下(可以保存到文件如/opt/quota40g.sh 并执行开机启动):
#【删除指定链或所有链的规则】 iptables -F quota40g iptables -F OUTPUT #【为指定链设置默认规则策略,对自定义链不起作用】 iptables -P OUTPUT ACCEPT #【创建用户自定义链】 iptables -N quota40g #【-A 在指定链尾部添加规则,RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。】 # 1MB=1048576 单位字节 iptables -A quota40g -m quota --quota 75161927680 -j RETURN iptables -A quota40g -j DROP iptables -A OUTPUT -o eth0+ -j quota40g
添加每日定时执行任务(cron),每天凌晨将40G的计数器清零:
crontab -e
内容如下:
8 0 * * * /sbin/iptables -Z quota40g
当然如果你想要设置月流量限制,只要修改相应的流量大小,然后定时任务每月清空计数器就好了。
文章评论