每個網路連接埠的流量統計

每個網路連接埠的流量統計

我有兩台機器,有兩個應用程序,它們透過幾個網路連接埠(TCP 和 UDP)相互通訊。我想計算他們發送和接收的流量。我不僅需要總數,還需要每天每個機器每個連接​​埠的統計資料。我試過暗狀態,但它不提供每天的統計數據,而只提供總體計數器。

還有其他方法可以計算流量(我可以在兩台機器之間放置一些代理或網關)。

答案1

iptables 可以為您提供有關每個規則被觸發的數量的統計信息,因此您可以在感興趣的端口上添加 LOG 規則(假設端口 20 和端口 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

進而

iptables -n -L -v

將為您提供透過此連接埠發送的資料包和位元組數。當然,您必須從輸出中解析您感興趣的連接埠。

如果您需要精確值,請新增 -x:

iptables -n -L -v -x

答案2

您可以將記帳規則新增至 iptables 設定中。這些應該在您接受 ESTABLISHED 和 RELATED 流量之前發生,否則您將錯過對通過的流量的計數。若要計算網路流量,請嘗試以下規則:

iptables -A INPUT -p tcp --dport 80 

如果你有很多這樣的鏈,你可能想要建立一個會計鏈,這樣你就可以在其上報告和清除計數器,與其他鏈隔離。

岸牆防火牆可讓您輕鬆地將記帳規則新增至規則集中。

答案3

不要忘記包括輸出流量統計資料。

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443

答案4

目前尚不清楚您是否需要使用每個目標 IP,但是統計數據是記錄每個介面的流量使用情況的有用工具。安裝它,然後vnstat -u -i eth0為您想要監控的每個介面運行。然後取得每天的使用情況vnstat -i eth0 -d

相關內容