家庭网络
家庭网络流量监控与异常排查实战:用 vnStat + ntopng 摸清每台设备的带宽占用
2026年10月7日
用 vnStat 与 ntopng 监控家庭网络流量,定位蹭网与异常占用设备。
家庭网络流量监控与异常排查实战:用 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 页面按"流量"排序,重点关注三列:
- Sent(上行):家庭上行通常很窄(50~100Mbps),谁的上行高谁就是嫌疑。
- Received(下行):区分正常看视频与异常拉取大文件。
- 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 分钟内定位到具体那台设备,比反复重启路由器有效得多。