背景 - 在我的“家庭”网络上,我有一个 Linksys WTR45GL 路由器,它提供我的互联网访问以及无线 AP。
连接我有 * 2 台 Windows PC(有线) * 至少一台笔记本电脑(有线) * 一些支持 802.11 的手持游戏机 (PSP) * 一台 Nintendo Wii * 一些老奶奶公寓里的人使用的 Windows XP PC。
在我居住的地方,南非,每月 1GB 的带宽上限虽然不贵,但也足够昂贵了,所以我想确保我网络上的设备使用的所有带宽都是...嗯...合法的,而不是邻居寄生在我无线网络上的结果,也不是恶意软件,也不是我软件中“自由”下载政策的结果。
我购买了 Linksys WRT45GL,因为我知道有自定义固件(DD-WRT 和 Tomato)可以进行带宽跟踪,但似乎没有任何工具可以获取流量日志,以便检查(a)哪些本地设备是最大的带宽消耗者以及(b)它们连接到什么。
有哪些工具可以记录流量,以便当一个月内我所有的带宽都用完时,我有机会找出是什么消耗了所有的带宽(并希望尝试一些纠正措施)。
我尝试过的解决方案:
磁共振成像仪- MRTG 的安装很复杂。它需要安装在服务器 PC 上 - 即运行 Web 服务器的 PC。它还“仅限于”进行 SNMP 监控 - 这意味着它只能报告每个接口的聚合流量。耶 - 我可以确认有 Gb 的流量穿过我的路由器。我已经知道了!
公共关系部的免费版本功能太有限,无法做任何有用的事情。或者它支持的“传感器”功能太有限。除了 SNMP 捕获之外,它还可以进行数据包嗅探,但其报告的深入分析能力仍然不足。至少它可以按协议细分流量。所以现在我知道 80% 的流量是 HTTP。仍然不知道 HTTP 流量的来源和目的地是什么。也完全不清楚它是否能够测量不知名端口上的流量。
本维基页面详细说明如何(a)配置 DD-WRT 使用 RFlow 和 MACudp 向网络上的服务器广播流量。(b)服务器需要运行 RFlowCollector 来捕获数据、允许对数据进行有限的检查,以及(c)将其放入 mySQL 数据库 - 然后可以使用第三方工具进行分析 - 或(d)仅 MSQL 查询分析器。
除了 RFlowCollector 是一个编写糟糕的 Windows GUI 应用程序,没有作为服务安装的选项之外:这意味着它只能在我我已经登录了。哦,是的,即使没有任何记录,它也占用了我 60% 的 CPU。它自己的 UI 无法对数据进行任何深入分析(但可以进行梳理),所以在这一切结束后,我留下了一个包含“原始”捕获数据的大型 mySQL 数据库来分析。
- Wireshark也曾有人提出过。作为网络协议分析器,它确实提供了底层细节 - 只要我在正确的网络段上,Wireshark 就可以用来嗅探并生成所有 tcp 和 udp 流量的综合列表。这是一个问题。Wireshark 的级别太低了。数据太多了。
尝试对网络带宽进行简单分析真的这么难吗?我说的简单是指,给定路由器上的“一大块”带宽使用情况,让某个程序告诉我将其分配给 (a) 本地主机、(b) 远程主机和 (c) 按协议。
答案1
你可以跑dd-wrt 路由器中的 arpwatch 和 mrtg它会告诉你 #1 新的客户端何时与你的 AP 关联并发出 DHCP 请求(通过 arpwatch)以及 #2 你消耗了多少带宽(通过 mrtg)。mrtg 的总带宽插件位于 bjorn.swift.is/traffic/
答案2
网络流是一种协议,在 DD-WRT“标准”发行版上启用“RFlow”服务即可使用。RFlow 服务可以指向 LAN 上运行 Netflow 记录器或分析工具的 PC。
我在原帖中提到的 RFlow 收集器很垃圾。不过,有许多免费工具可以在漂亮的 GUI 中实时显示 Netflow 数据。不过,大多数免费版本都存在很大限制 :(
我发现的“免费”工具(都是功能有限、价格昂贵的商业“企业”产品的“免费”版本)包括: