全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3382|回复: 6

[疑问] 分享一个通过iptables统计端口流量并POST到Webhook的玩意...

[复制链接]
发表于 2015-7-2 23:37:12 | 显示全部楼层 |阅读模式
本帖最后由 imlonghao 于 2015-7-2 23:42 编辑

自己折腾的玩意,项目地址:https://github.com/imlonghao/portstat
我的小博客,网站地址:https://imlonghao.com/

本教程适用于shadowsocks流量的统计,适用于个人用户或者小范围区域的用户使用折腾。

原理:
iptables统计入口和出口的某个端口的流量,然后定期通过python脚本处理结果,然后POST到一个指定的页面

使用:

以Debian系统为例,
安装

  1. apt-get update
  2. apt-get install python-pip
  3. pip install portstat
复制代码


将下列代码复制到
  1. /etc/rc.local
复制代码
  1. exit 0
复制代码
之前

  1. /sbin/iptables -N PORTSTAT
  2. /sbin/iptables -A INPUT -j PORTSTAT
  3. /sbin/iptables -A OUTPUT -j PORTSTAT
  4. /bin/bash /etc/portstat.rules
复制代码


加入定时任务:
  1. crontab -e
复制代码

  1. */5 * * * * /usr/local/bin/portstat -u
复制代码


然后就安装好了,可以进行初始化,你可以重启VPS,或者手动运行下面的代码

  1. /sbin/iptables -N PORTSTAT
  2. /sbin/iptables -A INPUT -j PORTSTAT
  3. /sbin/iptables -A OUTPUT -j PORTSTAT
复制代码


/etc/portstat.conf文件中写入你想统计的端口和Webhook地址。

例如:

  1. [shadowsocks]
  2. Port=10000-10015
  3. Webhook=https://hub.imlonghao.com/upload/XATCv4FNnobciVJDGzpWaqLMRSlmK7sU
复制代码


这里是10000-10015,表示统计10000,10001,10002,10003,.......,10014,10015

保存后,记得要运行
  1. portstat -s
复制代码
生成对应的iptables规则


然后就可以了!

====================
附带本人的Hub(流量统计中心)
====================

新建一个Key:https://hub.imlonghao.com/new

{"status": 200, "message": {"newKey": "XATCv4FNnobciVJDGzpWaqLMRSlmK7sU", "createTime": 1435851422.917758}}

XATCv4FNnobciVJDGzpWaqLMRSlmK7sU就是我们新建的Key了

----

Webhook地址:https://hub.imlonghao.com/upload/你的Key

按照我们的例子,在portstat的设置文件中的Webhook地址即是https://hub.imlonghao.com/upload/XATCv4FNnobciVJDGzpWaqLMRSlmK7sU

----

查看统计数据:https://hub.imlonghao.com/view/你的Key

返回的样子像这样:{"status": 200, "message": {"9999": 368511665, "10000": 1074, [.....] }}

368511665和1074分别是9999端口和10000端口总计所用的流量。

单位是 Byte ,要化成 Megabyte ,请自行 368511665/1024/1024 = 351.44

----

删除一个Key:https://hub.imlonghao.com/delete/你的Key

所以请注意保存好你的Key,一旦丢失别人就可以删掉了。

----

统计数据清零:https://hub.imlonghao.com/cleared/你的Key

你可以用crontab定时每月1号0点清除数据~~Key不会被清除
 楼主| 发表于 2015-7-2 23:40:50 | 显示全部楼层
iptables 的问题主要是重启之后统计的数据就会没有,所以要定期将数据上传到数据库中,这也是我通过Webhook 保存数据的目的,防止重启数据丢失。
发表于 2015-7-2 23:41:00 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2015-7-3 13:50:43 | 显示全部楼层
lz可否给个马化腾咨询一个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-1-18 03:53 , Processed in 0.093468 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表