HUAWEI_HCIA_实验指南_Lib2.2_理解ARP及Proxy ARP

发布于:2024-10-12 ⋅ 阅读:(13) ⋅ 点赞:(0)

1、原理概述

·        ARP(Address  Resolution  Protocol)是用来将IP地址解析为MAC地址的协议。ARP表项可以分为动态和静态两种类型。动态ARP是利用ARP广播报文,动态执行并自动进行IP地址到以太网MAC地址的解析,无需网络管理员手工处理。静态ARP是建立IP地址和MAC地址之间固定的映射关系,在主机和路由器上不能动态调整此映射关系,需要网络管理员手工添加。设备上有一个ARP高速缓存(ARP  cache),用来存放IP地址到MAC地址的映射表,利用ARP请求和应答报文来缓存映射表,以便能正确地把三层数据包封装成二层数据帜,达到快速封装数据帜、正确转发数据的目的。另外ARP还有扩展应用功能,比如ProxyARP功能。

        Proxy  ARP,即代理ARP,当主机上没有配置默认网关地址(即不知道如何到达本地网络的网关设备),可以发送一个广播ARP请求(请求目的主机的MAC地址),使具备ProxyARP功能的路由器收到这样的请求后,在确认请求地址可达后,会使用自身的MAC地址作为该ARP请求的回应,使得处于不同物理网络的同一网段的主机之间可以正常通信。

2、实验目的

  • 理解ARP工作原理
  • 掌握配置静态ARP的方法
  • 理解Proxy  ARP的工作原理
  • 掌握Proxy  ARP的配置
  • 理解主机之间的通信过程

3、实验内容

        本实验模拟公司网络场景。路由器R1是公司的出口网关,连接到外网。公司内所有员工使用10.1.0.0/16网段,通过交换机连接到网关路由器上。网络管理员通过配置静态ARP防止ARP欺骗攻击,保证通信安全。又由于公司内所有主机都没有配置网关,且分属于不同广播域,造成无法正常通信,网络管理员需要通过在路由器上配置ARP代理功能,实现网络内所有主机的通信。

4、实验拓扑

·        ARP及ARP Proxy的拓扑如图2-2所示。

图2-2  理解  ARP  及  ARP  Proxy  拓扑

5、实验编址

        实验编址见表2-2。

表 2-2 实验编址
设备 接口 IP地址 子网掩码 默认网关
R1 GE0/0/1 10.1.1.254 255.255.255.0 N/A
GE0/0/2 10.1.2.254 255.255.255.0 N/A
PC1 Ethernet 0/0/1 10.1.1.1 255.255.0.0 N/A
PC2 Ethernet 0/0/1 10.1.1.2 255.255.0.0 N/A
PC3 Ethernet 0/0/1 10.1.2.3 255.255.0.0 N/A

6、实验步骤

1)基本配置

        根据实验编址表进行相应的基本IP地址配置,并使用ping命令检测各直连链路的连通性,如图2-3所示。

图2-3  配置PC-1的IP地址

        根据实验编址配置PC主机的IP地址及对应的掩码,掩码长度是16。配置完成后,在命令行下使用arp-a命令查看主机的ARP表。

PC>arp -a

Internet Address    Physical Address    Type

PC>

        查看到ARP表项为空,没有任何条目在里面。

        根据实验编址配置路由器R1的接口IP地址,掩码长度为24。

[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/1]ip address 10.1.1.254 255.255.255.0	
[R1-GigabitEthernet0/0/1]undo shutdown 
[R1-GigabitEthernet0/0/1]quit 

[R1]interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/2]ip address 10.1.2.254 255.255.255.0
[R1-GigabitEthernet0/0/2]undo shutdown 
[R1-GigabitEthernet0/0/2]quit

        配置完成后,使用display arp all命令查看R1的ARP表。

[R1]display arp all
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc0f-5e64            I -         GE0/0/0
10.1.2.254      00e0-fc0f-5e65            I -         GE0/0/1
------------------------------------------------------------------------------
Total:2         Dynamic:0       Static:0     Interface:2  

        ARP表中仅含有R1的两个接口IP地址及与其对应的MAC地址的ARP表项,没有其他条目。

        在PC-1上使用ping命令测试到网关R1和PC-2的连通性。

PC>ping 10.1.1.254

Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
From 10.1.1.254: bytes=32 seq=1 ttl=255 time=62 ms
From 10.1.1.254: bytes=32 seq=2 ttl=255 time=47 ms
From 10.1.1.254: bytes=32 seq=3 ttl=255 time=47 ms
From 10.1.1.254: bytes=32 seq=4 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=5 ttl=255 time=32 ms

--- 10.1.1.254 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 31/43/62 ms

PC>
PC>ping 10.1.1.2

Ping 10.1.1.2: 32 data bytes, Press Ctrl_C to break
From 10.1.1.2: bytes=32 seq=1 ttl=128 time=31 ms
From 10.1.1.2: bytes=32 seq=2 ttl=128 time=31 ms
From 10.1.1.2: bytes=32 seq=3 ttl=128 time=47 ms
From 10.1.1.2: bytes=32 seq=4 ttl=128 time=31 ms
From 10.1.1.2: bytes=32 seq=5 ttl=128 time=47 ms

--- 10.1.1.2 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 31/37/47 ms

PC>

        在PC-3上,使用ping命令测试到网关R1的连通性。

PC>ping 10.1.2.254

Ping 10.1.2.254: 32 data bytes, Press Ctrl_C to break
From 10.1.2.254: bytes=32 seq=1 ttl=255 time=78 ms
From 10.1.2.254: bytes=32 seq=2 ttl=255 time=47 ms
From 10.1.2.254: bytes=32 seq=3 ttl=255 time=31 ms
From 10.1.2.254: bytes=32 seq=4 ttl=255 time=31 ms
From 10.1.2.254: bytes=32 seq=5 ttl=255 time=31 ms

--- 10.1.2.254 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 31/43/78 ms

PC>

        可以观察到,直连网络连通性正常。

        当主机和网关之间有数据访问时,如果ARP表中没有目标IP地址与目标MAC地址的对应表项,ARP协议会被触发,向直连网段发送ARP广播请求包,请求目标IP地址所对应的MAC地址。图2-4是PC-1发送的ARP广播请求,请求目标IP 10.1.1.254的MAC地址。

图2-4  PC-1发送的ARP广播请求报文

        网关收到广播请求后,回应单播的ARP响应,里面含有自身IP地址与MAC地址的对应关系,如图2-5所示

图2-5  ARP响应报文

        PC和R1都会从这一对消息中知道对方的IP地址与MAC地址的对应关系,并将它写到各自的ARP表中。在PC-1上ping网关10.1.1.254后,在PC上使用arp -a命令查看,在R1上使用display arp all命令查看。

PC>arp -a

Internet Address    Physical Address    Type
10.1.1.254          00-E0-FC-0F-5E-64   dynamic

PC>


<R1>display arp all
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc0f-5e64            I -         GE0/0/0
10.1.1.1        5489-9834-130f  20        D-0         GE0/0/0
10.1.2.254      00e0-fc0f-5e65            I -         GE0/0/1
10.1.2.3        5489-98bc-216d  15        D-0         GE0/0/1
------------------------------------------------------------------------------
Total:4         Dynamic:2       Static:0     Interface:2  

        可以观察到,在PC-1上生成了网关IP地址10.1.1.254和与其对应的MAC地址的ARP表项,在R1上生成了PC-1的IP地址10.1.1.1和与其对应的MAC地址的ARP表项。上述出现在PC和R1里面的条目都是动态生成的。如果一段时间之后没有更新,便会从上述ARP表中删除。

2)配置静态ARP

        上述ARP协议的工作行为往往被攻击者利用。如果攻击者发送伪造的ARP报文,而且报文里面所通告的IP地址和MAC地址的映射是错误的,则主机或网关会把错误的映射更新到ARP表中。当主机要发送数据到指定的目标IP地址时,从ARP表里得到了不正确的硬件MAC地址,并用之封装数据帜,导致数据幅无法正确发送。

        由于公司内主机感染了这种ARP病毒,所以主机对网关R1进行ARP攻击,向网关R1通告含错误映射的ARP通告,导致网关路由器上使用不正确的动态ARP映射条目,造成其他主机无法与网关正常通信。

        模拟ARP攻击发生时,网络的通信受到了影响。在网关R1上,使用arp  static  10.1.1.1 5489-9834-140f命令在路由器上静态添加一条关于PC-1的错误的ARP映射,假定此映射条目是通过一个ARP攻击报文所获得的(静态的条目优于动态的条目),所以错误的映射将出现在ARP表中。

[R1]arp static 10.1.1.1 5489-9834-140f

        使用  display  arp  all命令查看ARP表,并使用ping测试PC-1和网关间的连通性。

[R1]display arp all 
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc0f-5e64            I -         GE0/0/0
10.1.2.254      00e0-fc0f-5e65            I -         GE0/0/1
10.1.2.3        5489-98bc-216d  9         D-0         GE0/0/1
10.1.1.1        5489-9834-140f            S--
------------------------------------------------------------------------------
Total:4         Dynamic:1       Static:1     Interface:2    

[R1]ping 10.1.1.1
  PING 10.1.1.1: 56  data bytes, press CTRL_C to break
    Request time out
    Request time out
    Request time out
    Request time out
    Request time out

  --- 10.1.1.1 ping statistics ---
    5 packet(s) transmitted
    0 packet(s) received
    100.00% packet loss

[R1]


PC>ping 10.1.1.254

Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!

--- 10.1.1.254 ping statistics ---
  5 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss

        可以观察到,PC-1与网关间无法通信,因为在路由器R1上ARP的映射错误,导致路由器无法正确地发送数据包给PC-1。在R1 GE0/0/1接口抓包观察,如


图2-6  抓包现象

        可以观察到,由于配置了静态ARP,R1发往PC-1的ping包的二层头部,目的MAC地址被错误地封装为5489-98CF-2803。

        应对ARP欺骗攻击,防止其感染路由器的ARP表,可以通过配置静态ARP表项来实现。如果IP地址和一个MAC地址的静态映射已经出现在ARP表中,则通过动态ARP方式学来的映射则无法进入ARP表。所以针对公司网络的现状,网络管理员在R1上手工配置三条关于PC-1、PC-2和PC-3的正确ARP映射。使用arp static命令,配置如下。

[R1]undo arp static 10.1.1.1 5489-9834-140f
[R1]arp static 10.1.1.1 5489-9834-130f
[R1]arp static 10.1.1.2 5489-98f9-743f
[R1]arp static 10.1.2.3 5489-98bc-216d
	
[R1]display arp all
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc0f-5e64            I -         GE0/0/0
10.1.2.254      00e0-fc0f-5e65            I -         GE0/0/1
10.1.1.1        5489-9834-130f            S--
10.1.1.2        5489-98f9-743f            S--
10.1.2.3        5489-98bc-216d            S--
------------------------------------------------------------------------------
Total:5         Dynamic:0       Static:3     Interface:2 

        配置完成后,在PC-1上测试。

PC>ping 10.1.1.254

Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
From 10.1.1.254: bytes=32 seq=1 ttl=255 time=47 ms
From 10.1.1.254: bytes=32 seq=2 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=3 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=4 ttl=255 time=47 ms
From 10.1.1.254: bytes=32 seq=5 ttl=255 time=32 ms

--- 10.1.1.254 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 31/37/47 ms

        可以观察到,配置后连通性恢复正常。

        公司网络中出现ARP攻击的情况是比较常见的,防御的办法之一是在ARP表中手工添加ARP映射。此种方法的优点是简单易操作,不足之处是网络中每个网络设备都有ARP表,要全方位保护网络就要在尽可能多的三层设备上把全网的ARP映射手工写入到ARP表里,工作量过大,如果更换IP或MAC后,还需要手工更新ARP映射,远没有动态ARP协议维护ARP表方便。但如果公司网络规模不大或者网络设备不多的情况下,静态ARP方案还是具有一定优势的。

3)配置Proxy ARP

        目前公司的网络被路由器R1分割为两个独立的广播域,每个路由器接口对应一个IP网络,分别是10.1.1.0/24和10.1.2.0/24,查看R1的路由表。

[R1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 10       Routes : 10       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       10.1.1.0/24  Direct  0    0           D   10.1.1.254      GigabitEthernet
0/0/0
     10.1.1.254/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     10.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       10.1.2.0/24  Direct  0    0           D   10.1.2.254      GigabitEthernet
0/0/1
     10.1.2.254/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     10.1.2.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

[R1]

        默认情况下,路由器上的ARP代理功能是关闭的。

        如果R1保持ARP代理功能关闭的情况,则PC-2和PC-3之间不能互相通信。在PC-2上,使用ping访问10.1.2.3,并在PC-2的E0/0/1接口上抓包来观察,如图2-7所示。

PC>ping 10.1.2.3

Ping 10.1.2.3: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: Destination host unreachable
From 10.1.1.1: Destination host unreachable
From 10.1.1.1: Destination host unreachable
From 10.1.1.1: Destination host unreachable
From 10.1.1.1: Destination host unreachable

图2-7 抓包观察

        可以观察到,PC-2发出了ARP广播,却一直没有收到ARP响应。原因是PC-2和PC-3分处在两个广播域内,PC-2发的ARP请求无法跨越中间的路由器,所以PC-3收不到PC-2的ARP请求,PC-2也无法知晓目标主机PC-3的硬件MAC地址而导致数据封装失败。

        但R1如果开启ARP代理之后,看是否能够解决这个问题。配置arp-proxy  enable命令在路由器的接口上来开启ARP代理功能。

[R1]interface GigabitEthernet 0/0/1	
[R1-GigabitEthernet0/0/1]arp-proxy enable 

        启用ARP代理之后,同样的测试,在PC-2上访问PC-3,并在PC-2的E0/0/1接口抓包观察,如图2-8所示。


图2-8  抓包现象

        可以观察到,PC-2发出了ARP请求并收到了ARP响应,但响应中10.1.2.3所对应的硬件MAC地址并非是PC-3的MAC地址,而是网关R1的GE0/0/0接口MAC地址。

PC>arp -a

Internet Address    Physical Address    Type
10.1.2.3            00-E0-FC-0F-5E-64   dynamic

        开启ARP代理后,PC-2访问PC-3的工作过程如下。

        R1的接口GE0/0/0开启了ARP代理后,收到PC-2的ARP广播请求报文后,R1根据ARP请求中的目标IP地址10.1.2.3查看自身的路由表中是否有对应的目标网络,R1的GE0/0/1接口就是10.1.2.0/24网络,所以,R1直接把自身的GE0/0/0接口的MAC地址通过ARP响应返回给PC-2,PC-2接收到此ARP响应后使用该MAC作为目标硬件地址发送报文给R1,R1收到后再把报文转发给PC-3。

        同理,PC-3要能访问R1连接的其他广播域的PC,也需要在R1的GE0/0/2接口上开启ARP代理功能。

[R1]interface GigabitEthernet 0/0/1	
[R1-GigabitEthernet0/0/1]arp-proxy enable 

        配置完成后,测试PC-3与PC-1间的连通性。

PC>ping 10.1.1.1

Ping 10.1.1.1: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: bytes=32 seq=1 ttl=127 time=78 ms
From 10.1.1.1: bytes=32 seq=2 ttl=127 time=47 ms
From 10.1.1.1: bytes=32 seq=3 ttl=127 time=46 ms
From 10.1.1.1: bytes=32 seq=4 ttl=127 time=63 ms
From 10.1.1.1: bytes=32 seq=5 ttl=127 time=78 ms

--- 10.1.1.1 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 46/62/78 ms

        可以观察到,通信正常。

        如果IP网络过大,广播对网络的影响也相应增大。在不改变网络主机配置的情况下,由管理员在网络中透明地插入一台路由器,靠路由器分割出多个广播域,降低了广播对网络的影响。在当前的IP网络中,此种做法并不多见。其缺点是主机间的通信会因为引入额外的路由器而延迟增大,并存在着瓶颈问题,所以一般只作为临时解决方案使用。