最简单的办法来做iptables统计流量,监控iptables数据流量iptables -L -vn
实际应用: iptables -L -vn | grep K 或 iptables -L -vn | grep M 查找出传输量较大的IP
iptables -L -vn | grep K
Chain INPUT (policy ACCEPT 6662K packets, 3007M bytes)
308K 29M SOLUSVM_TRAFFIC_IN all -- * * 0.0.0.0/0 0.0.0.0/0
308K 29M SOLUSVM_TRAFFIC_OUT all -- * * 0.0.0.0/0 0.0.0.0/0
82880 4325K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
Chain OUTPUT (policy ACCEPT 6448K packets, 84G bytes)
3329 245K all -- * * 0.0.0.0/0 111.22.33.15
15136 3622K all -- * * 0.0.0.0/0 111.22.33.24
1268 146K all -- * * 0.0.0.0/0 111.22.33.26
7687 2197K all -- * * 0.0.0.0/0 111.22.33.31
9965 452K all -- * * 0.0.0.0/0 111.22.33.37
18991 2255K all -- * * 0.0.0.0/0 111.22.33.48
19728 2355K all -- * * 0.0.0.0/0 111.22.33.58
5513 621K all -- * * 0.0.0.0/0 111.22.33.64
5493 618K all -- * * 0.0.0.0/0 111.22.33.66
1993 144K all -- * * 0.0.0.0/0 111.22.33.72
3029 228K all -- * * 0.0.0.0/0 111.22.33.74
19933 2375K all -- * * 0.0.0.0/0 111.22.33.82
6887 2288K all -- * * 0.0.0.0/0 111.22.33.96
15333 1114K all -- * * 0.0.0.0/0 111.22.33.100
5206 589K all -- * * 0.0.0.0/0 111.22.33.110
3590 164K all -- * * 111.22.33.15 0.0.0.0/0
19869 1190K all -- * * 111.22.33.24 0.0.0.0/0
7680 409K all -- * * 111.22.33.31 0.0.0.0/0
672 150K all -- * * 111.22.33.33 0.0.0.0/0
10446 503K all -- * * 111.22.33.37 0.0.0.0/0
20113 850K all -- * * 111.22.33.48 0.0.0.0/0
465 558K all -- * * 111.22.33.52 0.0.0.0/0
20079 849K all -- * * 111.22.33.58 0.0.0.0/0
6802 344K all -- * * 111.22.33.64 0.0.0.0/0
6752 342K all -- * * 111.22.33.66 0.0.0.0/0
3059 170K all -- * * 111.22.33.72 0.0.0.0/0
3386 154K all -- * * 111.22.33.74 0.0.0.0/0
20012 846K all -- * * 111.22.33.82 0.0.0.0/0
6699 448K all -- * * 111.22.33.96 0.0.0.0/0
17360 836K all -- * * 111.22.33.100 0.0.0.0/0
542 149K all -- * * 111.22.33.108 0.0.0.0/0
6483 283K all -- * * 111.22.33.110 0.0.0.0/0
iptables -L -vn
"-L" 參數列出鏈中的規則, 因為沒有指定鏈名, 所以預設列出 filter 鏈的規則 Chain INPUT (policy ACCEPT 35463 packets, 2608K bytes) Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) Chain OUTPUT (policy ACCEPT 45808 packets, 65M bytes) "45808 packets"從開機至今已經有 45808 個封包通過 OUTPUT 鏈 pkts bytes target prot opt in out source destination |
當傳輸量較大時, iptables 預設會以 K、M、G 等單位來顯示傳輸量, 與一般的計算不同, 這些單位分別代表 1000、1,000,000 與 1,000,000,000 bytes。就閱讀上, 使用這些單位能讓我們更容易地判斷數量大小, 但是未來如果以程式統計傳輸總量, 使用較精確的數字才能方便地進行數字的比較。此時可以如下使用 "-x" 參數, 強迫 iptables 顯示精確的傳輸量:
[root@free ~]# iptables -L -vxn ←加上 "-x" 參數 ... Chain OUTPUT (policy ACCEPT 58388 packets, 74888452 bytes) "74888452 bytes"共有 74888452 bytes 的傳輸量通過 OUTPUT 鏈 pkts bytes target prot opt in out source destination |
計量器的運作方式
核心所內建的傳輸量統計機制, 主要是依靠計量器 (counter) 來進行統計的工作。每一個 iptables 規則都伴隨著一組計量器, 當封包符合 iptables 內的某一個規則時, 核心便會將封包大小與數量累加於該規則所屬的計量器。