原貼:http://turbolinux.com.cn/turbo/wiki/doku.php?id=arp:arp%E5%B7%A5%E5%85%B7%E7%AE%80%E4%BB%8B_arptables_arpwatch
當主機上的需要發送一個資料到一個目的IP時,裝置驅動程式并不能了解這個IP位址.
系統需要将IP位址轉換為網絡位址,再傳遞給裝置驅動程式發送出去.
ARP(位址解析協定)就是這樣的一種網絡協定.用于将高層協定位址(IP位址)轉換為實體
網絡位址.
linux核心中儲存有一個ARP表,裡面儲存有IP位址和MAC位址的對應關系.使用arp指令
可以檢視主機的ARP表.
arptables是使用者空間工具,用來管理 linux核心中的ARP規則表.這些規則用來
檢查ARP幀.arptables類似于iptables,但沒有那麼複雜.iptables工作于ip層,
用于對ip包進行管理.arptables工作與arp協定層,用于對arp資料幀進行管理.
arptables可以像iptables那樣對arp資料幀進行各種規則設定,可以ACCEPT,
DROP等.
Turbolinux 10.5和11版本中,已經內建有arptables指令.
你也可以從源碼進行安裝:
鍊(chain)
kernel表是用來區分不同設定的不同功能.規則的每個設定叫做一個”鍊”.每個鍊
是有一個排序了的規則清單,用來于ARP幀相比對.如果一個規則與一個ARP幀
相比對,一個”操作說明”會提供需要進行哪些操作.操作說明叫做”目标”.然而,
如果幀與目前鍊中的目前規則不比對,則繼續與鍊中的下一條規則進行檢查.用
戶可以建立一個新的鍊,作為規則的”目标”來使用.
目标(target)
包含有一個ARP幀與一個幀處理說明的防火牆規則說明叫做一個”目标”.當一個
幀與一個規則相比對時,則kernel按”目标”的定義進行下一步操作.“目标”可以是:
ACCEPT,DROP.CONTINUE,RETURN,擴充定義或使用者指定規則.
ACCEPT表示允許這個幀通過.DROP表示這個幀将被丢棄.CONTINUE表示繼續
進行下一條規則.這樣可以很友善的計算,有多少幀經過了某個規則.RETURN表示
不在這個鍊中繼續進行比對,傳回到上一條鍊的下一條規則.
表(table)
在kernel中隻有一個ARP表.這個表是一個過濾器.你可以在arptables指令中使用
’-t filter’參數.使用時,-t參數必須是arptables指令的第一個參數.
-t,–table
是一個過濾器,在kernel中僅有這一個表,它包含2個(2.4.x核心)或3個(2.6.x核心)内建規則:
INPUT(發送幀的源主機),OUTPUT(本地産生的幀),FORWARD(由橋代碼轉發的幀).
2.4.X核心中沒有FORWARD規則.
arptables指令參數
指令行參數分為幾個部分:指令部分,雜項部分,規則說明,比對擴充,螢幕擴充.
指令(command)
arptables指令參數用于指定在使用-t參數定義的表中的執行動作.如果你沒有使用
-t參數指定一個表名,則指令将應用于預設的過濾表.使用-Z指令時,指令行每次隻能
使用一個指令.
-A,–append
在指定的鍊結尾添加一個規則.
-D,–delete
從指定的鍊中删除規則.這個指令有2種用法:
1.指定要删除規則的序号,文法是: start_nr[:end_nr],可以使用負數.
2.指定要删除規則的詳細内容.
-I,–insert
按序号,在指定的鍊中插入規則.如目前的序号為N,則可以使用-N到N+1
作為插入序号.序号0表示表示在最後一條規則後插入新規則,等同于-A參數.
-R,–replace
替換鍊中指定的規則.如果目前的序号是N,則指定的序号可以是1到N之間的
數字.
-P,–policy
在鍊中設定指定目标的政策,可以為:ACCEPT,DROP或RETURN.
-F,–flush
清空指定的鍊.如果沒有指定鍊,則所有的鍊都将被清空.清空鍊不會改變鍊的
政策.
-Z,–zero
将指定鍊的計數器置0.如果沒有指定鍊,則所有計數器都将置0.-Z指令可以與
-L指令結合使用.當同時使用-Z,-L指令時,計數器的值會先被列印出來,然後置0.
-L,–list
輸出指定鍊中的規則.如果沒有指定鍊,所有将輸出所有鍊中的規則.
-N,–new-chain
建立新的使用者鍊.使用者鍊的數量沒有限制,但使用者鍊的名稱最多可以有31個字元.
-X,–delete-chain
删除指定的使用者鍊.使用者鍊中必須為空.如果沒有指定使用者鍊,則所有為空的使用者鍊
将被删除.
-E,–rename-chain
重命名指定鍊.你可以重命名一個使用者鍊,也可以重命名一個标準鍊名.
<其他指令>
-V,–version
顯示arptables程式的版本号.
-h,–help
輸出文法幫助資訊.
-j,–jump 目标
規則的目标.可以是:ACCEPT,DROP,CONTINUE,RETURN,目标擴充或使用者
定義鍊名.
<規則說明>
-s,–source-ip [!] IP位址[/掩碼]
源IP位址
-d,–destination-ip [!] IP位址[/掩碼]
目的IP位址
–source-mac [!] MAC位址[/掩碼]
源MAC位址
–destination-mac [!] MAC位址[/掩碼]
目的MAC位址.
-i,–in-interface [!] 裝置名
用于接收幀的接口(應用于INPUT,FORWARD鍊).–in-if是這個選項的别名.
-o,–out-interface [!] 裝置名
用于發送幀的接口(應用于OUTPUT,FORWARD鍊).–out-if是這個選項的别名.
-l,–h-length 長度[/掩碼]
硬體長度(機關位元組).
–opcode 代碼[/掩碼]
操作碼(2位元組).可以使用:1=請求,2=回複,3=反解析請求,4=反解析回複,
5=動态反解析請求,6=動态反解析回複,7=動态反解析錯誤,8=逆向ARP請求,
9=ARP_NAK
–h-type 類型[/掩碼]
硬體類型(2位元組,十六進制).可以使用:1=Ethernet.
–proto-type 類型[/mask]
協定類型(2位元組).可以使用:0×800=IPv4
arpwatch用來監聽網絡中的ARP資料包并進行記錄,同時将監聽到的
變化通過E-mail來報告給系統管理者.
arpwatch使用pcap(3)來監聽本地以太接口的arp資料包.
Turbolinux 10.5和11版本中,已經內建有arpwatch.
你也可以從源碼安裝:
-d 标記用來啟用調試模式.
-f 标記用來設定使用的資料庫名,預設是arp.dat.
-i 用來指定網絡接口.
-n 用于說明本地網絡.
-r 指定讀取一個由tcpdump或pcapture生成資訊檔案,而不從網絡接口中
-s 用于指定sendmail程式的路徑.
-p 指定禁用”混合模式”.網絡接口不是”混合模式”時,ARP廣播也可以通過.
-a 預設情況下,arpwatch僅記錄預設網絡接口上,第一個IP位址子網的arp
資訊.使用-a參數,則記錄網絡接口上所有IP位址子網的arp資訊.
-m 指定一個用于接收變更資訊的郵件位址.