- 论坛徽章:
- 0
|
实时查看网关上局域网IP连接数,如果某个IP一分钟内连接数超过100个,则实时查询该IP的MAC地址(防止用户修改MAC地址),并用iptables禁止该MAC地址转发出去包。
本来是准备一直都禁用该MAC地址,让用户向网管中心反映,然后由网管中心解封,但发现iptables不能自动判断上次所封的MAC地址,这样如果放到/etc/crontab 每分钟执行一次的话,iptables -L 查看的话会有很多重复的条数,没办法,只有先在脚本中的开头处清空iptables的FORWARD链,希望有高手完善……
把下面局域网IP段192.168换成你的局域网IP段就行了。 经测试实际效果不错!
#!/bin/bash
iptables -F FORWARD
sed -n 's%.* src=\(192.168.[0-9.]*\).*%\1%p' /proc/net/ip_conntrack | sort | uniq -c | grep "[1-9][0-9][0-9] " | awk '{print $2}' > /root/downip.txt
cat /root/downip.txt | while read line
do
mac=`arp $line | grep $line | awk '{print $3}'`
iptables -A FORWARD -m mac --mac-source $mac -j DROP
done |
|