孙亮亮
返回 家庭网络

家庭网络

家庭网络流量监控与异常排查实战:用 vnStat + ntopng 摸清每台设备的带宽占用

2026年10月7日

用 vnStat 与 ntopng 监控家庭网络流量,定位蹭网与异常占用设备。

家庭网络流量监控vnStatntopng

家庭网络流量监控与异常排查实战:用 vnStat + ntopng 摸清每台设备的带宽占用

摘要

家庭网络卡顿,很多时候不是带宽不够,而是某台设备在后台悄悄占满上行或下行。本文用轻量的 vnStat(长期流量账本)和 ntopng(实时流分析)两套开源工具,在 OpenWrt 软路由或一台常开 NAS 上把每台设备的真实流量摊开来看,并给出蹭网、异常上传、IoT 设备夜间外联的排查步骤。

为什么要监控家庭流量

大多数家庭路由器只有一个"已用流量"的粗略数字,看不到设备级分布。一旦某台手机在后台做云相册全量备份、某台电视在预加载 4K 片源、或者某个被入侵的摄像头在向外回传,整个家庭的上行带宽会被打满,结果是视频会议卡顿、游戏延迟飙升、网页打开慢。这种问题肉眼看不出,只能靠监控定位。

监控分两层:一层是"总量账本",记录每天、每月用了多少,适合看趋势和发现异常日;另一层是"实时流",能看到此刻哪台设备在跟哪个 IP 通信、走了什么协议。vnStat 负责第一层,ntopng 负责第二层,两者都不依赖厂商 App,数据完全掌握在自己手里。

一、vnStat:低开销的长期流量账本

vnStat 不抓包,只读取网卡计数器的累计字节数,因此 CPU 占用极低,跑在路由器上几乎无感,非常适合做长期趋势记录。

安装与初始化

OpenWrt 上直接 opkg update && opkg install vnstat;Debian/Ubuntu 系用 apt install vnstat。安装后初始化数据库:

vnstat -i eth0 --create
systemctl enable vnstat && systemctl start vnstat

注意 -i 要指向真正跑流量的口。软路由常见是 eth0(WAN 出口)和 br-lan(LAN 桥),想看内网互访就监控 br-lan,想看出口总量就监控 eth0。一台设备可以同时对多个口建账本。

常用命令

  • vnstat:默认显示本月、今日、本小时汇总。
  • vnstat -d:按天列出,一眼看出哪天流量异常。
  • vnstat -h:按小时,定位到具体时段。
  • vnstat -l:实时速率(live),临时排查时很好用。
  • vnstat -tr 10:做 10 秒流量采样,快速判断当前速率量级。

建议每周看一次 vnstat -d 的输出,若某天流量比平时高出一个数量级,多半有设备在大规模上传或下载,需要结合 ntopng 进一步定位。

二、ntopng:实时看清"谁在跟谁说话"

vnStat 告诉你"用了多少",ntopng 告诉你"被谁用了、去哪了"。它在网卡上做抓包汇总,按主机、会话、协议归类,是排查实时卡顿的利器。

部署

在常开主机(NAS 或软路由)用 Docker 起一个社区版即可:

docker run -d --name ntopng   -p 3000:3000   -v ntopng_data:/var/lib/ntopng   ntop/ntopng -i eth0

关键点:-i 必须监听"汇聚"接口才能看到所有内网设备。如果是旁路部署,需要交换机做端口镜像(mirror/SPAN)把 LAN 流量导到监控口;软路由上直接监听 br-lan 最简单。注意 ntopng 抓包有一定 CPU 开销,低性能路由器建议只在排查时临时开启。

关键视图

打开 http://主机IP:3000,在 Hosts 页面按"流量"排序,重点关注三列:

  1. Sent(上行):家庭上行通常很窄(50~100Mbps),谁的上行高谁就是嫌疑。
  2. Received(下行):区分正常看视频与异常拉取大文件。
  3. Active Flows(会话数):异常多可能是 P2P 或扫描行为。

点进单台主机还能看到 Top Receivers/Senders 和 Flows Protocol,能直接看出它在用 HTTPS、QUIC、BitTorrent 还是 SSH,定位效率远高于盲猜。

三、典型异常排查清单

1. 上行被打满

现象:所有人网页都慢但测速下行正常。在 ntopng 按 Sent 排序,找到上行最高的主机。常见凶手是手机云相册全量备份、NAS 在做异地同步(如 rclone 加密上传)、或 BT 做种。对策:在路由器做 QoS/SQM 给该设备限速,或把备份任务挪到夜间闲时。

2. 陌生 MAC 持续下载

在 ntopng Hosts 里出现的 MAC/主机名不在你的设备清单里,基本就是蹭网。对策:进路由器"已连接设备"核对,改 Wi-Fi 密码、关闭 WPS、把 IoT 设备单独放进 VLAN,并对陌生 MAC 在防火墙做丢弃。

3. IoT 设备夜间异常外联

摄像头、智能音箱半夜向境外 IP 高频外联,可能是被控或被劫持。在 ntopng 的 Flows 里按目的地排序,对可疑 IP 在 OpenWrt 用 nftables 加一条拒绝规则,并升级该设备固件、关闭不必要的云端功能。

四、告警与常态化

ntopng 社区版可在设置里配置"主机流量超过阈值"的告警,但推送能力有限。更省事的做法是把 vnstat -d 的输出接一个简单的 cron 脚本,当当日流量超过基线 N 倍时通过企业微信机器人或邮件通知你。监控的价值在于"异常时能主动知道",而不是事后翻记录。

小结

vnStat 负责"看趋势、找异常日",ntopng 负责"看实时、定位罪魁"。两者都是开源、低资源、数据自持,10 分钟就能在软路由或 NAS 上跑起来。先把设备清单和正常流量基线建立起来,后面任何一次卡顿都能在 1 分钟内定位到具体那台设备,比反复重启路由器有效得多。

本模块其他文章

家庭网络流量监控与异常排查实战:用 vnStat + ntopng 摸清每台设备的带宽占用 · 孙亮亮