一、ARP地址解析實驗
1. 基本配置
實驗環境:ensp
模擬環境:
- 路由器R1是公司出口網關,連接到外網。公司內所有員工在使用10.1.0.0/16,通過交換機連接到網關路由器上,爲了防止ARP欺騙配置靜態ARP。
- 主機沒有配置默認網關,且分屬不同廣播域,造成無法通信,在路由器上配置ARP代理功能,實現網絡內所有主機的通信。
1.1 ARP request包和reply包
R1配置:
Int g 0/0/0
Ip add 10.1.1.254 24
Int g 0/0/1
Ip add 10.1.2.254 24
PC1 ping 10.1.1.254
PC2沒有Ping路由器,看ARP緩存:
ARP表現爲空,沒有任何條目;
查看R1的ARP緩存表:
不但存在R1兩個接口的IP地址和MAC地址的映射,還包含了PC1 IP和MAC地址的映射;
接下來我們用PC2 PING R1的接口10.1.2.254查看ARP的包;
因爲PC2的arp表項中沒有10.1.2.254與MAC地址的映射表,所以PC2會發送ARP 廣播請求;
PC-2發送的ARP廣播request報文
PC-2發送的ARP廣播reply報文
R1 ARP緩存表
可以看出R1的ARP緩存表中有了接口的映射,以及PC-1,PC-2,PC-3的IP地址和MAC地址映射,但是PC的MAC地址都是動態映射的,如果一段時間沒有更新就會被刪除。
2. 靜態ARP
ARP工作行爲,往往會被攻擊者利用,如果攻擊者發送僞造的ARP報文,而且報文裏面所通告的IP地址和MAC地址映射是錯誤的,則主機或網關會把錯誤的映射更新到ARP表中,當主機發送數據到指定的目標IP地址時,從ARP表裏得到了不正確的MAC地址,並用之封裝,導致數據幀無法正確發送。
模擬ARP攻擊(修改MAC地址):正確的PC1的MAC地址是:54-89-98-92-11-BB
[R1]arp static 10.1.1.1 5489-9898-11cc
R1配置了靜態ARP的 ARP緩存表
此時R1 Ping 10.1.1.1是不能夠通的,PC-1 Ping 網關也是不能通的,因爲路由器R1上的ARP映射錯誤;
R1 Ping PC-1:
PC-1 Ping 網關:
在R1的G0/0/0接口抓包,R1配置靜態ARP後ping 10.1.1.1 抓包
可以看到目的MAC地址被錯誤封裝。
爲了防止ARP欺騙攻擊,防止其感染路由表的ARP表,可以通過靜態配置ARP表項來實現。如果IP地址和一個Mac地址的靜態映射已經出現在ARP表項中,則通過動態ARP方式學來的映射無法進入ARP表。
3. 配置Proxy ARP(代理ARP)
- 配置靜態ARP,如果是一個比較大的網絡,一直配置靜態arp的話,手動配置工作量大,維護不方便。
PC-2 ping PC-3(不同網段之間):
在PC-2的E0/0/1接上抓包:
R1 G0/0/0接口開啓代理arp命令:
[R1]int G0/0/0
[R1-GigabitEthernet0/0/0] arp-proxy enable
開啓代理arp後抓包:
1. Request包
2. Reply包
流程:R1的接口G0/0/0開啓了 代理arp後,收到PC-2的request廣播報文請求後,R1根據ARP請求中的目的IP地址10.1.2.3查看自身的路由表是否有對應的目標網絡,R1的G0/0/1接口有就是10.1.2.0/24網路,所以R1直接把自身的G0/0/0接口的MAC地址響應給PC-2,PC-2收到此arp響應後的MAC地址作爲目標硬件地址發送報文給R1,R1收到後再轉發給PC-3.
注意:此時PC-3是ping不同PC-2 的,因爲R1所連接的Pc-3的G0/0/1接口沒有開啓代理arp功能
PC-3 ping PC-2不通
在G0/0/1接口開啓arp代理功能再ping
二、免費ARP報文分析
字段 | 長度(bit) | 含義 |
---|---|---|
Ethernet Address of destination | 48比特 | 目的以太網地址。發送ARP請求時,爲廣播的MAC地址,0xFF.FF.FF.FF.FF.FF。 |
Ethernet Address of sender | 48比特 | 源以太網地址。 |
Frame Type | 16比特 | 表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0x0806。 |
Hardware Type | 16比特 | 表示硬件地址的類型。對於以太網,該類型的值爲“1”。 |
Protocol Type | 16比特 | 表示發送方要映射的協議地址類型。對於IP地址,該值爲0x0800。 |
Hardware Length | 8比特 | 表示硬件地址的長度,單位是字節。對於ARP請求或應答來說,該值爲6。 |
Protocol Length | 8比特 | 表示協議地址的長度,單位是字節。對於ARP請求或應答來說,該值爲4。 |
OP | 16比特 | 操作類型: 1 ARP請求 2 ARP應答 3 RARP請求 4 RARP應答 |
Ethernet Address of sender | 48比特 | 發送方以太網地址。這個字段和ARP報文首部的源以太網地址字段是重複信息。 |
IP Address of sender | 32比特 | 發送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太網地址。發送ARP請求時,該處填充值爲0x00.00.00.00.00.00。 |
ess of sender | 32比特 | 發送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太網地址。發送ARP請求時,該處填充值爲0x00.00.00.00.00.00。 |
IP Address of destination | 32比特 | 接收方的IP地址。 |