如何在 freebsd 路由器上收集完整的网络使用统计信息?

Dim*_*ims 3 freebsd routing statistics traffic nfsen

我有一个freebsd box,作为局域网到外界的路由器。它有多个 Internet 提供商、OpenVPN 服务器和客户端、NAT 等。

我想有关于何时、谁、给谁、通过哪个提供商、通过哪个协议以及发送了多少字节的完整统计信息。

我同意最小时间刻度将是一个小时,即不需要毫秒精度。

我尝试了 vnstat2、ntopng 和其他一些程序,但它们似乎没有我需要的东西,或者不明显。

我不明白,为什么这个功能不容易获得。但是我不擅长freebsd,所以请给我一些线索。

Rui*_*iro 7

为了获取网络事务的详细信息,您已经获得了 FreeBSD 或 Linux 的 Netflow 生成器的实现:

ng_netflow

名称 ng_netflow - Cisco 的 NetFlow 实施

描述 ng_netflow 节点在运行 FreeBSD 的路由器上实现 Cisco 的 NetFlow 导出协议。ng_netflow 节点侦听传入流量并识别其中的唯一流。流通过端点 IP 地址、TCP/UDP 端口号、ToS 和输入接口来区分。过期流以 NetFlow 版本 5/9 UDP 数据报从节点导出。

至于 NetFlow 本身:

NetFlow 是 Cisco 开发的一种网络协议,用于收集 IP 流量信息和监控网络流量。通过分析流量数据,可以构建网络流量和流量的图片。

还有rfc 3954 - NetFlow 服务导出版本 9

为了存储 Netflow 数据,您还需要所谓的服务器收集器。它可以是 Linux 或 FreeBSD 机器。它不应安装在实际路由器上。一种这样的已知实现是nfsen

NfSen 是用于 nfdump netflow 工具的基于 Web 的图形前端。

NfSen 允许您:
- 使用 RRD(循环数据库)显示您的网络流数据:流量、数据包和字节。
- 轻松浏览网络流量数据。
- 在指定的时间跨度内处理网络流数据。
- 创建历史以及连续配置文件。
- 根据各种条件设置警报。
- 编写您自己的插件来定期处理 netflow 数据。

nfsen2

请注意,根据您的可用带宽,生成 NetFlow 可能会对 CPU 造成负担。在某些情况下,一种已知的策略是对路由器的交换机端口进行镜像,并使用另一台机器进行这些操作。

在达到一定的带宽阈值后,如果需要生成 NetFlow,那么选择专业路由器可能更有意义。

作为最后的警告,使用 NAT,必须在内部/LAN 接口中捕获 NetFlow,否则您将失去对谁在做什么的感觉。

我在 5-6 个月的流量中使用了大约 100GB 的数据,使用 NfSen 从 Cisco 设备收集 NetFlow 数据,您的里程可能会有所不同。