arp工具簡介 arptables arpwatch

來源:互聯網
上載者:User

 

一.ARP協議簡介
當主機上的需要發送一個資料到一個目的IP時,裝置驅動程式並不能理解這個IP地址.
系統需要將IP地址轉換為網路地址,再傳遞給裝置驅動程式發送出去.
ARP(位址解析通訊協定)就是這樣的一種網路通訊協定.用於將高層協議地址(IP地址)轉換為物理
網路地址.
linux核心中儲存有一個ARP表,裡面儲存有IP地址和MAC地址的對應關係.使用arp命令
可以查看主機的ARP表.

# arp -a
m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0

二.ARP協議相關工具
1.arptables
a)arptables簡介
arptables是使用者空間工具,用來管理
linux核心中的ARP規則表.這些規則用來
檢查ARP幀.arptables類似於iptables,但沒有那麼複雜.iptables工作於ip層,
用於對ip包進行管理.arptables工作與arp協議層,用於對arp資料幀進行管理.
arptables可以像iptables那樣對arp資料幀進行各種規則設定,可以ACCEPT,
DROP等.

b)arptables的安裝
Turbolinux 10.5和11版本中,已經整合有arptables命令.
你也可以從源碼進行安裝:

# wget -c

http://jaist.dl.sourceforge.net/sourceforge/ebtables/arptables-v0.0.3-3.tar.gz
#

tar zxvf arptables-v0.0.3-3.tar.gz
# cd arptables-v0.0.3-3
# make
#
make install
c)arptables命令的文法
  arptables [-t table] -[AD] chain
rule-specification [options]
  arptables [-t table] -[RI] chain rulenum
rule-specification [options]
  arptables [-t table] -D chain rulenum
[options]
  arptables [-t table] -[LFZ] [chain] [options]
  arptables [-t
table] -[NX] chain
  arptables [-t table] -E old-chain-name
new-chain-name
  arptables [-t table] -P chain target
[options]
鏈(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

d)arptables使用執行個體
# arp -a
m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether]
on eth0
顯示當前ARP表資訊
當前ARP表中儲存有一個主機的arp資訊,m1主機,ip地址192.168.0.1

# arptables -D INPUT -s 192.168.0.1 -j
DROP
設定arp規則,將所有192.168.0.1的arp包全部丟棄.

# arp -d 192.168.0.1 -i eth0
使用arp命令,刪除arp表中的192.168.0.1的記錄.

# arp -a
m1 (192.168.0.1) at on
eth0
arp表中已沒有m1主機的資訊.

# ping 192.168.0.1
PING m1 (192.168.0.1) 56(84) bytes of data.
From m2
(192.168.0.2) icmp_seq=2 Destination Host Unreachable
From m2 (192.168.0.2)
icmp_seq=3 Destination Host Unreachable
From m2 (192.168.0.2) icmp_seq=4
Destination Host Unreachable
由於無法獲得m1主機MAC資訊,所以,無法與m1主機進行通訊.

# arptables -D INPUT -s 192.168.0.1 -j DROP
刪除arptables規則.

# arp -a
m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on
eth0
arp表中重新記錄了m1的MAC資訊.

# ping 192.168.0.1
PING m1 (192.168.0.1) 56(84) bytes of data.
64 bytes
from m1 (192.168.0.1): icmp_seq=1 ttl=64 time=0.315 ms

 

2.arpwatch
a)arpwatch簡介
arpwatch用來監聽網路中的ARP資料包並進行記錄,同時將監聽到的
變化通過E-mail來報告給系統管理員.
arpwatch使用pcap(3)來監聽本地以太介面的arp資料包.

b)arpwatch的安裝
Turbolinux 10.5和11版本中,已經整合有arpwatch.
你也可以從源碼安裝:

# wget -c ftp://ftp.ee.lbl.gov/arpwatch.tar.gz
# cd arpwatch-2.1a15
#
./configure
# make
# make install
c)arpwath命令的文法
  arpwatch [ -dN
]
  [ -f datafile ]
  [ -i interface ]
  [ -n net[/width ]]
  [ -r
file ]
  [ -s sendmail_path ]
  [ -p ]
  [ -a ]
  [ -m addr ]
  [
-u username ]
  [ -R seconds ]
  [ -Q ]
  [ -z ignorenet/ignoremask
]
-d 標記用來啟用偵錯模式.
-f 標記用來設定使用的資料庫名,預設是arp.dat.
-i 用來指定網路介面.
-n
用於說明本網.
-r 指定讀取一個由tcpdump或pcapture產生資訊檔,而不從網路介面中

讀取.//-s 用於指定sendmail程式的路徑.
-p 指定禁用”混合模式”.網路介面不是”混合模式”時,ARP廣播也可以通過.
-a
預設情況下,arpwatch僅記錄預設網路介面上,第一個IP地址子網的arp
資訊.使用-a參數,則記錄網路介面上所有IP地址子網的arp資訊.
-m
指定一個用於接收變更資訊的郵件地址.

d)arpwatch使用執行個體
# arpwatch -i eth0 -s
root@localhost.localdomain
監聽eth0介面,並將arp的變更資訊,發送到本地的root使用者郵箱中.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.