*流量检测统制方法
*流量检测控制方法
为什么要进行流量控制?? 因为你访问的国外的一个ip的流量达到一定的值后这个ip就会成为重点监控对象,比如速度会因此变得非常慢,处于半死不活状态.... 当然还有其他理由,比如防止你出于好心公开的*被人乱用...
本人ubuntu系统
非常简单,通过iptables来实现,比如你的*本地地址192.168.0.4和端口20091
20091端口的出口流量统计命令:sudo iptables -I OUTPUT -s 192.168.0.4 -p tcp --sport 20091
然后去定时检测统计流量,查看统计流量信息:
sudo iptables -n -v -L -t filter |grep -i --color -B 3 spt:20091
获取具体流量值:sudo iptables -n -v -L -t filter |grep -i 'spt:20091' |awk -F' ' '{print $2}'
然后自己写个crontab脚本,每分钟去读取流量统计出来的流量值,判断下,超过预设流量即停止*服务
当然你可能开启多个*服务,需要保存他们的进程id,超出流量的就kill 这个id
以上脚本请自行测试
参考:http://yzs.me/2212.html
为什么要进行流量控制?? 因为你访问的国外的一个ip的流量达到一定的值后这个ip就会成为重点监控对象,比如速度会因此变得非常慢,处于半死不活状态.... 当然还有其他理由,比如防止你出于好心公开的*被人乱用...
本人ubuntu系统
非常简单,通过iptables来实现,比如你的*本地地址192.168.0.4和端口20091
20091端口的出口流量统计命令:sudo iptables -I OUTPUT -s 192.168.0.4 -p tcp --sport 20091
然后去定时检测统计流量,查看统计流量信息:
sudo iptables -n -v -L -t filter |grep -i --color -B 3 spt:20091
获取具体流量值:sudo iptables -n -v -L -t filter |grep -i 'spt:20091' |awk -F' ' '{print $2}'
然后自己写个crontab脚本,每分钟去读取流量统计出来的流量值,判断下,超过预设流量即停止*服务
当然你可能开启多个*服务,需要保存他们的进程id,超出流量的就kill 这个id
#启动服务并记录进程id到文件 PORT=20091 PID_FILE=~/shadow_$PORT.pid #开启对应端口流量统计 sudo iptables -I OUTPUT -s 192.168.0.4 -p tcp --sport $PORT * -c *.json -p $PORT > logshadow.log 2>&1 & echo "$!" > $PID_FILE
#定时检测 流量超出则停止服务,比如限制每天流量100M PORT=20091 PID_FILE=~/shadow_$PORT.pid MAX=100 SLEEP_TIME=20 #每20秒检测流量一次 while true do value_string=`sudo iptables -n -v -L -t filter |grep -i "spt:$PORT"|awk -F' ' '{print $2}'` grep 'M' $value_string if [ $? = 0 ] ;then value=`echo $value_string |tr -d 'M'` if [ $value -gt $MAX ]; then kill -9 `cat $PID_FILE` rm $PID_FILE #关闭流量统计 sudo iptables -D OUTPUT -s 192.168.0.4 -p tcp --sport $PORT break fi fi sleep $SLEEP_TIME done
以上脚本请自行测试
参考:http://yzs.me/2212.html