iptables限流

iptables 是一个强大的 Linux 命令行工具,用于配置 Linux 内核中的网络包过滤规则和网络地址转换 (NAT)。

借助iptables实现限流,类似nginx的limit_req。

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set

这个命令的作用是在INPUT链中添加一条规则
    -A INPUT:这是iptables命令的选项之一,表示在INPUT链末尾添加一条规则。
    -p tcp:这是iptables命令的选项之一,表示匹配TCP协议的数据包。
    --dport 80:这是iptables命令的选项之一,表示匹配目标端口号为9000的数据包。
    -i eth0:这是iptables命令的选项之一,表示匹配输入接口为eth0的数据包。
    -m state --state NEW:这是iptables命令的选项之一,表示匹配连接状态为NEW(新建连接)的数据包。
    -m recent --set:这是iptables命令的选项之一,使用recent模块来设置最近连接的相关信息。
这个命令的效果是,当有新的TCP连接到达端口9000时,且连接状态为NEW,且输入接口为eth0时,使用recent模块记录这个最近连接的信息。



iptables -A  INPUT -p tcp --dport 80 -i etho0 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

这个命令也是在INPUT链中添加一条规则,与前一条命令的选项类似,但有一些额外的选项
    -A INPUT:添加规则到INPUT链末尾。
    -p tcp:匹配TCP协议的数据包。
    --dport 80:匹配目标端口号为9000的数据包。
    -i eth0:匹配输入接口为eth0的数据包。
    -m state --state NEW:匹配连接状态为NEW的数据包。
    -m recent --update:使用recent模块来更新最近连接的相关信息。
    --seconds 10:指定时间窗口的长度,表示统计的窗口时间。
    --hitcount 10:指定在时间窗口内允许的最大连接数,表示每个IP地址允许的最大连接数。
    -j DROP:指定要执行的动作,可以是DROP(丢弃)或REJECT(拒绝)连接。
这个命令的效果是,在指定的时间窗口内,如果某个IP地址在端口80上的连接数超过了阈值(10),则执行DROP指定的动作,这里是丢弃(DROP)连接。

综上所述,这两条iptables命令用于配置防火墙规则,限制特定端口上的连接数和连接时间。第一条命令用于设置最近连接的相关信息,而第二条命令用于在时间窗口内检查连接数,并根据规定的阈值执行动作。

设置完规则后可以实用 iptables --list 查看设置的规则。

然后请求上面的端口,发现10秒内访问次数超过10就会无响应,说明实现了限流的目的。

取消上面的iptables规则,则只用将上面命令中的A改为D即可。

iptables -D  INPUT -p tcp --dport 80 -i etho0 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

iptables -D INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值