跳轉到內容

Linux 網路/IP 計費(適用於 Linux-2.0)

來自華夏公益教科書,開放的書籍,面向開放的世界

IP 計費(適用於 Linux-2.0)

[編輯 | 編輯原始碼]

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            * -> *
華夏公益教科書