慢生活 3 分钟阅读

旧路由器做流量看板

家里那台吃灰的旧路由器,是几年前换下来的。当时觉得性能不够,现在看它双核 CPU、128MB 内存,跑个轻量服务绰绰有余。正好最 […]

旧路由器做流量看板

家里那台吃灰的旧路由器,是几年前换下来的。当时觉得性能不够,现在看它双核 CPU、128MB 内存,跑个轻量服务绰绰有余。正好最近总感觉晚上网速变慢,想看看是不是有人在偷偷下载,于是决定把它改成家庭网络流量看板。

先确认硬件底子

拆开外壳之前,先查了型号:MT7621 芯片,16MB Flash,128MB 内存,带千兆口。这个配置跑 OpenWrt 没问题,但原厂固件锁得死,得先刷机。我找了一根 USB-TTL 线,焊上串口针脚,用 breed 引导器替换了原厂 bootloader。这一步花了半小时,主要是找对针脚定义——网上教程很多,但版本对不上,最后靠万用表量出来的。

刷完 OpenWrt 后,第一件事是确认它能正常拨号上网。旧路由器只有百兆 WAN 口,跑满带宽会成瓶颈,所以我把光猫桥接,让路由器直接 PPPoE 拨号,LAN 口接交换机。这样所有流量都经过它,看板才有意义。

抓流量而不是看总量

最初想用 nlbwmon 或 vnstat 看每台设备的流量,但这两个工具只能统计总量,看不出实时速率和连接数。我想要的是类似“谁在占带宽”的即时视图,于是选了 softflowd 配合 ntopng。

softflowd 监听 br-lan 接口,把 NetFlow 数据发给本机的 ntopng。安装很简单:opkg update && opkg install softflowd ntopng。配置 softflowd 时注意指定接口和采集间隔,我设成 60 秒聚合一次,减少 CPU 压力。ntopng 默认监听 3000 端口,用浏览器打开就能看到实时流量图,还能按 IP 排序。

但 ntopng 的 Web 界面有点重,旧路由器跑起来内存吃紧。我关掉了它的历史记录功能,只保留实时视图,内存占用从 80MB 降到 40MB 左右。

用 Grafana 拼一个看板

ntopng 的界面够用,但我想把数据留久一点,顺便练手 Grafana。方案是:softflowd 把数据发给 ntopng,ntopng 开启 InfluxDB 导出,Grafana 从 InfluxDB 读数据画图。

InfluxDB 装在另一台小主机上,旧路由器只负责采集和转发。ntopng 的 InfluxDB 配置在 Web 界面的 Settings 里,填上地址和数据库名就行。Grafana 那边新建一个 InfluxDB 数据源,然后导入 ntopng 的官方仪表盘模板(ID 是 10652),稍作调整就能用。

我主要看三个图:总带宽曲线、Top 10 设备流量、TCP 连接数。总带宽曲线能看出晚高峰的规律,Top 10 设备流量帮我抓到了那个偷偷跑 PT 的邻居——他连上来之后上传一直占满。

外壳和散热的小折腾

旧路由器原本是塑料壳,闷在里面温度不低。我拆掉上盖,用亚克力板切了个底座,把主板悬空固定,旁边加了个 5V 小风扇对着吹。风扇从 USB 口取电,加了个 10 欧电阻降速,噪音几乎听不见。

跑了一周,CPU 温度稳定在 55 度左右,内存占用 60MB,没出过问题。看板页面挂在局域网里,手机浏览器也能看,晚上躺床上刷一眼就知道谁在拖网速。

这事做完,最大的收获不是看板本身,而是发现旧硬件只要找对用途,完全能当个正经工具用。下一步想给它加个告警,比如某台设备流量超过阈值就发通知——不过那得先解决旧路由器上跑通知服务的内存问题,估计又得折腾一阵。

留下你的回声