如何在 freebsd 路由器上收集完整的網路使用統計資訊?
我有一個 freebsd 盒子,它充當從 LAN 到外界的路由器。它有幾個 Internet 提供商、OpenVPN 伺服器和客戶端、NAT 等。
我想獲得關於何時、誰、給誰、通過哪個提供商、通過哪個協議以及發送了多少字節的完整統計資訊。
我同意最小的時間尺度是一個小時,即不需要毫秒精度。
我嘗試了 vnstat2、ntopng 和其他一些程序,但它們似乎沒有我需要的東西或者不明顯。
我不明白,為什麼這個功能不容易獲得。但是我不擅長freebsd,所以請給我一些線索。
要獲取網路事務的詳細資訊,您已經實現了適用於 FreeBSD 或 Linux 的 Netflow 生成器:
名稱 ng_netflow - Cisco 的 NetFlow 實施
描述 ng_netflow 節點在執行 FreeBSD 的路由器上實現 Cisco 的 NetFlow 導出協議。ng_netflow 節點偵聽傳入流量並辨識其中的唯一流。流通過端點 IP 地址、TCP/UDP 埠號、ToS 和輸入介面來區分。過期流在 NetFlow 版本 5/9 UDP 數據報中從節點導出。
至於 NetFlow 本身:
NetFlow 是 Cisco 開發的一種網路協議,用於收集 IP 流量資訊和監控網路流量。通過分析流量數據,可以建構網路流量和流量的圖景。
為了儲存 Netflow 數據,您還需要所謂的伺服器收集器。它可以是 Linux 或 FreeBSD 機器。它不應該安裝在實際的路由器上。一種這樣的已知實現是nfsen
NfSen 是一個基於圖形 Web 的 nfdump netflow 工具前端。
NfSen 允許您:
顯示您的 netflow 數據:使用 RRD(循環數據庫)的流、數據包和字節。
輕鬆瀏覽 netflow 數據。
在指定的時間跨度內處理 netflow 數據。
創建歷史以及連續的配置文件。
根據各種條件設置警報。
編寫您自己的外掛以定期處理 netflow 數據。
請注意,根據您的可用頻寬,生成 NetFlow 可能會對 CPU 造成負擔。在某些情況下,一種已知的策略是對路由器的交換機埠進行鏡像,並使用另一台機器進行這些操作。
在達到一定的頻寬門檻值後,如果需要生成 NetFlow,則使用專業路由器可能更有意義。
作為最後的警報,有了 NAT,必須在內部/LAN 介面中擷取 NetFlow,否則您將失去對誰在做什麼的感覺。
我為 5-6 個月的流量使用了大約 100GB 的數據,使用 NfSen 從 Cisco 設備收集 NetFlow 數據,您的里程可能會有所不同。