Linux
如何通過 src/dst(以及 UDP 和 TCP 的埠)記錄 IP 流量的數量?
如何通過 src/dst(以及 UDP 和 TCP 的埠)記錄 IP 流量的數量?
對於每個時間間隔(可能是每小時),我希望看到類似的內容:
proto, src, dst, packets, octets ICMP, 192.168.1.3, 2.3.4.5, 34, 483 TCP, 192.168.1.3:34821, 2.3.4.5:80, 123, 23408 TCP, 192.168.1.3:33812, 5.6.7.8:22, 201, 2039 TCP, 192.168.1.3:53, 1.1.1.1:53, 23, 3400 UDP, 192.168.1.3:53, 1.1.1.1:53, 323, 23403
對於網關/路由器盒,我預計每小時有數千條線路。
我知道 iptables 可以計算流量,但據我了解,在開始計算之前,您需要知道地址和埠。
是否有一種常用的解決方案來計算所有IP 流量?
(我正在尋找一種低級工具/技術,而不是網路管理套件的功能。)
您可以從 conntrack 獲取字節和數據包計數。
要啟用計數器,請設置記帳
#sysctl net.netfilter.nf_conntrack_acct=1
然後你會看到這樣的 conntrack 輸出
#conntrack -L tcp 6 431971 ESTABLISHED src=192.168.0.156 dst=192.168.0.1 sport=53474 dport=443 packets=11 bytes=1945 src=192.168.0.1 dst=192.168.0.156 sport=443 dport=53474 packets=12 bytes=5238 [ASSURED] mark=0 use=1
您可以使用此命令將計數器歸零
#conntrack -L -z
請注意,這些計數器是基於連接的。一旦連接關閉,Conntrack 條目將被刪除。
查看手冊頁以獲取更多資訊
#man conntrack