理解ARP及Proxy(代理)ARP

理解ARP及Proxy(代理)ARP

ARP(address resolution protocol)是用来将IP地址解析为MAC地址的协议。

ARP可分为两种

  • 动态arp:利用ARP广播请求报文,自动进行IP地址到MAC地址的解析,再使用单播播进行回应ARP应答。
  • 静态arp:手工建立IP地址和MAC地址之间的映射关系。

ARP工作原理:

  • PC1产生了一条信息 广播信息 内网泛洪查询,查询192.168.1.1的MAC地址是多少
  • GW产生一条单播消息,进行回应,回应PC1.我就是你要找的,我的IP是192.168.1.1 我的MAC地址是XXX
  • PC1收到会记录到自己的ARP表里
  • PC1在产生实际的业务数据到达目的 192.168.1.1 可以查询到自己的ARP表 进行数据封装 

免费ARP:

  • 配置IP后,会向整个网络中广播自己的IP,问是否有和自身IP一致的设备。
  • 检测网络中IP地址的冲突

Proxy arp(代理ARP):

        当主机没有网关,可以发送一个广播ARP请求()请求目的主机MAC地址,配置了代理ARP的路由器收到了这个ARP请求后,再确认地址可达后,会使用自身的mac地址作为该ARP请求的回应,使处于不同物理网络的同一网段主机正常通信。

实验拓扑:

实验需求:

  • 通过配置静态ARP防止ARP欺骗攻击;
  • 配置ARP代理,实现网络内所以主机的通信;

实验配置:

ARP基础配置

R1:

interface GigabitEthernet0/0/1
 ip address 10.1.1.254 255.255.255.0 
 
 
interface GigabitEthernet0/0/2
 ip address 10.1.2.254 255.255.255.0 
 
 //配置互联IP地址

我们对PC和R1之间的连通性测试,触发ARP协议

PC2:

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=32 ms
From 10.1.1.254: bytes=32 seq=2 ttl=255 time=32 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

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

通过抓包我们发现,抓到了2个ARP的报文

第一个报文,是一个广播报文,PC2泛洪广播报文,询问10.1.1.254 的MAC是多少

发送者(Sender)为PC1的MAC,IP是PC1的IP,目标(Target)MAC是广播全F,IP是10.1.1.254 。

第二个报文,是一个单播报文,R1向PC2做出了一个单播的回应,告知IP10.1.1.254 的mac地址为00-E0-FC-1A-2B-B3

        当设备之间有数据访问时,ARP表中没有目标IP地址与目标MAC地址的对应表项,ARP协议会被触发,向直连网段发送ARP请求报文,请求目的IP地址所对应的MAC地址

让我们查看下PC和R1和ARP表

PC2:

 //查看ARP表,有R1 IP地址和MAC地址的映射关系
 PC>arp -a 

Internet Address    Physical Address    Type
10.1.1.254          00-E0-FC-1A-2B-B3   dynamic

R1:

[R1]dis arp all 
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc1a-2bb3            I -         GE0/0/1
10.1.1.1        5489-98cf-2603  5         D-0         GE0/0/1
10.1.1.2        5489-98cf-5723  8         D-0         GE0/0/1
10.1.2.254      00e0-fc1a-2bb4            I -         GE0/0/2
10.1.2.3        5489-98cf-e417  6         D-0         GE0/0/2
------------------------------------------------------------------------------
Total:5         Dynamic:3       Static:0     Interface:2    


//R1上有着PC1、PC2、PC3以及自己两个接口G0/0/1、G0/0/2的IP地址和MAC地址的映射关系

arp表项的老化时间为20分钟,可以修改

静态ARP配置

        如果攻击者发送伪造的arp报文,报文里面所通告的IP地址和MAC地址的映射是错误的,则设备会将错误的映射关系更新到ARP表中。当需要数据通信时,封装错误的数据帧,会导致无法通信。

        我们模拟R1受到了arp攻击,静态写一个错误的MAC地址和PC1的IP地址做映射,测试下连通性

R1:

arp static 10.1.1.1 5489-98cf-2604         //静态指定PC1 IP地址对应的MAC地址关系

//查看R1的ARP映射表,发现已经被更改了
[R1]dis arp all 
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.1.1.254      00e0-fc45-808f            I -         GE0/0/1
10.1.2.254      00e0-fc45-8090            I -         GE0/0/2
10.1.1.1        5489-98cf-2604            S--
------------------------------------------------------------------------------
Total:3         Dynamic:0       Static:1     Interface:2    


ping测试

PC>ping 10.1.1.254

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

--- 10.1.1.254 ping statistics ---
  2 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss
  
  //无法通讯
  
  
  [R1]arp static 10.1.1.1    5489-98cf-2603
  //将MAC静态更改回来
  

        静态ARP 可以很好的针对ARP攻击,但是需要一条一条的写,工作量大,而且更改了IP或者MAC还需要重新更新ARP映射。

配置Proxy ARP

  • 现在的网络被路由器R1 分割成了两个独立的广播域,每个路由器接口对应一个IP地址。
  • arp的数据包是没有办法穿过广播域的,继而无法获取到对应的mac地址,没有mac地址,就没有办法进行数据封装,无法访问。
  • 所以PC1和PC2无法和PC3通讯,即使他们是一个网段。

所以我们要再R1上开启ARP代理

interface GigabitEthernet0/0/1

 arp-proxy enable               //开启ARP代理
 
interface GigabitEthernet0/0/2

 arp-proxy enable               //开启ARP代理

再用PC1 与PC3测试连通性:

PC>ping 10.1.2.3

Ping 10.1.2.3: 32 data bytes, Press Ctrl_C to break
From 10.1.2.3: bytes=32 seq=1 ttl=127 time=93 ms
From 10.1.2.3: bytes=32 seq=2 ttl=127 time=63 ms
From 10.1.2.3: bytes=32 seq=3 ttl=127 time=94 ms
From 10.1.2.3: bytes=32 seq=4 ttl=127 time=313 ms
From 10.1.2.3: bytes=32 seq=5 ttl=127 time=78 ms

抓包看效果:

第一个报文,是一个广播报文,PC2泛洪广播报文,询问10.1.2.3 的MAC是多少

第二个报文,是一个单播报文,R1向PC2做出了一个单播的回应,要去往10.1.2.3使用的mac地址为00e0-fc45-808f,为R1的g0/0/1接口地址(网关地址的MAC)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值