最新消息:时间抓起来说是金子,抓不住就是流水。

shadowsocks流量检测控制方法

ShadowSocks 老子黑牵翻 10582浏览 0评论

ubuntu系统

非常简单,通过iptables来实现,比如你的shadowsocks本地地址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

获取具体流量值:sudo iptables -n -v -L -t filter |grep -i 'spt:20091' |awk -F' ' '{print $2}'

然后自己写个crontab脚本,每分钟去读取流量统计出来的流量值,判断下,超过预设流量即停止shadowsocks服务

当然你可能开启多个shadowsocks服务,需要保存他们的进程id,超出流量的就kill 这个id

shadowsocks进程启动脚本:

#启动服务并记录进程id到文件
   PORT=20091
   PID_FILE=~/shadow_$PORT.pid
   #开启对应端口流量统计
   sudo iptables -I OUTPUT -s 192.168.0.4 -p tcp –sport $PORT
   ss-server -c shadowsocks.json -p $PORT > logshadow.log 2>&1 &
   echo "$!" > $PID_FILE

======================================================

流量监控脚本:

#crontab 定时检测 流量超出则停止服务,比如限制每天流量100M
   PORT=20091
   PID_FILE=~/shadow_$PORT.pid
   MAX=100
   value_string=`sudo iptables -n -v -L -t filter |grep -i 'spt:20091' |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
      fi
   fi

转载请注明:LINUX服务器运维架构技术分享 » shadowsocks流量检测控制方法

与本文相关的文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址