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

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

我有一个 freebsd 盒子,它作为 LAN 到外界的路由器。它有多个互联网提供商、OpenVPN 服务器和客户端、NAT 等。

我想获得关于何时、谁、向谁、通过哪个提供商、通过哪个协议发送以及发送了多少字节的完整统计数据。

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

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

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

答案1

为了获取网络事务的详细信息,您可以使用 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 是 nfdump netflow 工具的基于图形 Web 的前端。

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

NFSEN2

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

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

最后的警告是,使用 NAT 后,必须在内部/LAN 接口中捕获 NetFlow,否则您将无法了解谁在做什么。

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

相关内容