Linux 網路/IP 計費(適用於 Linux-2.0)
外觀
< Linux 網路
Linux 核心的 IP 計費功能允許您收集和分析一些網路使用資料。收集的資料包括自上次重置數字以來累積的包數和位元組數。您可以指定各種規則來對這些資料進行分類,以滿足您的任何目的。此選項在核心 2.1.102 中被移除,因為舊的基於 ipfwadm 的防火牆被“ipfwchains”所取代。
核心編譯選項
Networking options --->
[*] IP: accounting
編譯並安裝核心後,您需要使用 ipfwadm 命令來配置 IP 計費。您可以選擇多種不同的方式來分解計費資訊。我選擇了一個簡單的例子,它可能對您有用,您應該閱讀 ipfwadm 手冊頁以獲取更多資訊。場景:您有一個乙太網網路,透過 PPP 連線到網際網路。在乙太網上,您有一臺提供多種服務的機器,您感興趣的是瞭解每個 FTP 和 WWW 流量產生的流量,以及總的 TCP 和 UDP 流量。
您可以使用以下命令集,它顯示為一個 shell 指令碼
#!/bin/sh
#
# Flush the accounting rules
ipfwadm -A -f
#
# Set shortcuts
localnet=44.136.8.96/29
any=0/0
# Add rules for local ethernet segment
ipfwadm -A in -a -P tcp -D $localnet ftp-data
ipfwadm -A out -a -P tcp -S $localnet ftp-data
ipfwadm -A in -a -P tcp -D $localnet www
ipfwadm -A out -a -P tcp -S $localnet www
ipfwadm -A in -a -P tcp -D $localnet
ipfwadm -A out -a -P tcp -S $localnet
ipfwadm -A in -a -P udp -D $localnet
ipfwadm -A out -a -P udp -S $localnet
#
# Rules for default
ipfwadm -A in -a -P tcp -D $any ftp-data
ipfwadm -A out -a -P tcp -S $any ftp-data
ipfwadm -A in -a -P tcp -D $any www
ipfwadm -A out -a -P tcp -S $any www
ipfwadm -A in -a -P tcp -D $any
ipfwadm -A out -a -P tcp -S $any
ipfwadm -A in -a -P udp -D $any
ipfwadm -A out -a -P udp -S $any
#
# List the rules
ipfwadm -A -l -n
#
名稱“ftp-data”和“www”指的是 /etc/services 中的行。最後一個命令列出每個計費規則並顯示收集到的總數。
在分析 IP 計費時,需要注意的重要一點是,所有匹配規則的總計都會被遞增,因此要獲得差值資料,您需要進行適當的數學運算。例如,如果我想知道有多少資料不是 FTP 也不是 WWW,我需要從匹配所有埠的規則中減去各個總計。
root# ipfwadm -A -l -n IP accounting rules pkts bytes dir prot source destination ports 0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 20 0 0 out tcp 44.136.8.96/29 0.0.0.0/0 20 -> * 10 1166 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 80 10 572 out tcp 44.136.8.96/29 0.0.0.0/0 80 -> * 252 10943 in tcp 0.0.0.0/0 44.136.8.96/29 * -> * 231 18831 out tcp 44.136.8.96/29 0.0.0.0/0 * -> * 0 0 in udp 0.0.0.0/0 44.136.8.96/29 * -> * 0 0 out udp 44.136.8.96/29 0.0.0.0/0 * -> * 0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 20 0 0 out tcp 0.0.0.0/0 0.0.0.0/0 20 -> * 10 1166 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 80 10 572 out tcp 0.0.0.0/0 0.0.0.0/0 80 -> * 253 10983 in tcp 0.0.0.0/0 0.0.0.0/0 * -> * 231 18831 out tcp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 in udp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 out udp 0.0.0.0/0 0.0.0.0/0 * -> *