找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2386|回复: 22

纪念在家以来路由器开机最长时间的一次,并发布一个以Netlink为统计基础的流量显示

[复制链接]
本帖最后由 wulishui 于 2024-1-9 22:34 编辑


并非是我的路由器不稳定,而是我非常折腾,三头两日就刷、重启,这是在家以来第一次最长时间不重启路由器,但其实一样天天折腾,只是不重启而已。
之所以不重启这个,是因为折腾x86去了,经历了近一年,x86主板终于被我修好,60天不重启将成为过去,即将撤下它换x86。
下面入正题。
历年以来OP上曾经出现过的流量统计插件有:
最老牌的:luci-app-wrtbwmon (https://github.com/brvphoenix/luci-app-wrtbwmon
linkease搞的:luci-app-rtbwmon (https://github.com/linkease/openwrt-app-actions
原作者未明:wtBRMon (https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=362533
luci-app-wrtbwmon的作者是花了非常多的心血在这上面的,缝缝补补折腾了很多年,搞得太复杂了,甚至有时候出现很要命的问题:产生无限多子进程,直至CPU耗尽(甚至根本不明白他的思路,为什么要这样搞)。
linkease的大佬可能也觉得wrtbwmon不太爽,自起炉灶,搞了个luci-app-rtbwmon,从代码上很容易发现是参考了luci-app-wrtbwmon,只是它又过于简陋。
上面两位大佬的都有各自的优点,也有各自的不优点。
luci-app-wrtbwmon 基于iptables统计,一般还好,除了上面CPU耗尽大问题外,它统计不准:比如老王上午上了会网,出去了,下午回来,上午的流量居然没和上午的统计在一起(IP变动了)。
luci-app-rtbwmon一样基于iptables统计,只是个毛坯房,能用,无累积统计,只能计算流速(而且也很不准),还无ipv6。但就是因为功能单一,拿来做实验是最好不过。
wtBRMon可以看出作者也花了很多心血,因为这套webui组件太复杂,不投入心血研究根本无法完成。可是对比发现,这套webui是最优秀的。
用过luci-app-nlbwmon的道友会发现,利用连接统计的流量可以统计到路由器自身产生的流量(路由器作为上级的客户端,流量不经过iptables表),于是着手研究使用nlbwmon来统计流量。
nlbwmon的优点是使用MAC统计,不会出现老王上午蹲过,下午他的流量算在老李头上的事情。
下面这是使用luci-app-rtbwmon来修改,通过nlbwmon统计的(注意,只是研究品,不要妄想真正实用):
游客,如果您要查看本帖隐藏内容请回复

界面大致如下:

首先安装luci-app-nlbwmon,在配置里面把刷新率改为1s,监听网卡改为lan、wan,应用。上面的插件不需要安装,只需要按路径copy进去,/usr/libexec/rtbwmon改0755权限就行了。
可以直接支持luci-app-wrtbwmon的用户别名,并且不用分大小写和 : 与 - 分隔。
下面是脚本代码:
  1. #!/bin/sh

  2. tmpfile=/tmp/tmp/$(date +%s%N |tail -c 5).tmp

  3. while read LeaseTime mac ip name unknow
  4. do
  5.         eval "name_${mac//:/_}="$name""
  6. done < /tmp/dhcp.leases

  7. cat /etc/wrtbwmon.user 2>/dev/null |awk -F ',' '{print tolower($1)","$2}' > $tmpfile
  8. while IFS="," read mac name
  9. do
  10.         eval "name_${mac//[:-]/_}="$name""
  11. done < $tmpfile

  12. ip -4 route |grep '^default' |awk '{print $3}' > $tmpfile
  13. while read ip
  14. do
  15.         eval "mac=\$mac_${ip//[.:]/_}"
  16.         [ -n "$mac" ] && eval "black_${mac//:/_}=1"
  17. done < $tmpfile

  18. nlbw -c csv -g mac -q > $tmpfile
  19. while read mac conns rx_bytes rx_pkts tx_bytes tx_pkts
  20. do
  21.         eval "tx_${mac//:/_}="$tx_bytes""
  22.         eval "rx_${mac//:/_}="$rx_bytes""
  23. done < $tmpfile

  24. cat /proc/net/arp |grep '^[0-9]*\.' |grep '0x2' |tr -s ' ' |sort -k4,4 -u > $tmpfile
  25. while read ip HWType Flags mac Mask iface
  26. do
  27.         eval "black=\$black_${mac//:/_}"
  28.         if [ "$black" != 1 ]; then
  29.                 eval "up=\$tx_${mac//:/_}"
  30.                 eval "down=\$rx_${mac//:/_}"
  31.                 eval "name=\$name_${mac//:/_}"
  32.                 [ -n "$down" ] && echo "$ip,$mac,$iface,0,${up:-0},0,${down:-0},${name:-?}"
  33.         fi
  34. done < $tmpfile

  35. rm -f $tmpfile
  36. exit 0
复制代码

主要问题:
nlbwmon它有个尿性:它写死了更新时间,它只按设定的时间更新,无论你什么时候查询,它都是把内存中的数据抄给你,而不是实时更新给你。它默认是5分钟更新一次,所以你查询到的结果是上个纪元的。因此,我们需要把更新时间设为1秒,接近于实时更新。
这带来个大问题:统计连接数极其耗费CPU资源,大约1000条连接数能耗费10%左右CPU单核心资源,即使你不查询的时候它也非常耗费资源。但是好在它耗尽CPU资源时崩溃的是它自己,系统不会出问题,可以放心折腾。
所以这是它最不实用的地方,除非你能解决。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
终于在恩山刷到了关于流量统计插件的帖子
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习了,不过这个标题很有迷惑性
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持支持,看看是啥
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
哈哈哈,我的设置每周固定重启,猫和路由,ap都是。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
再三逼迫下,第三方都开始慢慢把流量监控又捡起来了

点评

大黄脸皮之厚,简直无敌!  发表于 2024-1-11 15:04

评分

参与人数 1恩山币 -3 收起 理由
2371*** -3 这才几个菜啊,喝成这样~~~.

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享!楼主牛逼,继续造福大家啊!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
#一44888995458894448888955
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

最近用RAX3000M改了一个4G CPE,解决了接收短信转发至TG的问题,但是流量监控这一块一直没有好的解决方案
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来瞅瞅,大佬死磕流量统计哈
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这么好的东西!感谢楼主分享!感谢论坛!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享了谢谢分享了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢楼主分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

终于在恩山刷到了关于流量统计插件的帖子
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
开硬件驾驶后准确吗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 00:31

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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