Linux

如何通過 src/dst(以及 UDP 和 TCP 的埠)記錄 IP 流量的數量?

  • October 5, 2018

如何通過 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

引用自:https://unix.stackexchange.com/questions/471043