一、ARP
首先讲到ARP,ARP是地址解析协议,它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表。转发数据的时候根据ARP缓存表来进行传输。
在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出,所以在局域网的通信中,不仅需要源目ip地址的封装,也需要源目标mac的封装,一般情况下,上层应用程序更多关心ip地址而不关心mac地址,所以需要通过ARP协议来获悉目的主机的mac地址,完成数据封装。
Hardware type硬件类型,标示链路层协议
Protocol type协议类型,标示网络层协议
Hardware size协议地址大小,标示mac地址长度
Protocol size协议地址大小,标示ip地址长度
opcode操作代码,标示ARP数据包类型
Sender mac address发送者mac
Sender ip address发送者ip
Target mac address目标mac,此处全0表示在请求
Target ip address目标ip
二、代理ARP(Proxy ARP)
当局域网内部主机发起跨网段的ARP请求时,出口路由器/网关设备将自身mac地址回复给这个请求,这个过程称为代理ARP.
应用场景:
①没有默认网关的主机
cisco路由器接口默认开启arp代理的功能:
反向验证:关闭掉R1接口的arp代理功能,查看PC1是否能学习到mac
R4(config)#int f0/0
R4(config-if)#no ip proxy-arp
②有路由功能,目的地指向本地出口
R6(config)#ip route 192.168.2.0 255.255.255.0 f0/0
注意:
R6(config)#ip route 192.168.2.0 255.255.255.0 192.168.1.254则是一个普通的arp
二层以太网mac地址与ARP里面封装的mac的区别。
三、免费ARP(gratuitous arp) --源文档 <http://www.vants.org/?post=118>
免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。免费ARP的封装格式:
免费ARP在实际环境中的一些应用
免费ARP主要用于检测IP地址冲突。当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP 的主机。
在实际的工作环境中,免费ARP除了用于检测地址冲突之外,我们还可以用于以下几个方面:
1.1利用免费ARP确认设备接口地址
一般的设备在网卡地址加载阶段都会向网络中发送免费的ARP报文(也有些安全设备为了安全起见,让设备在加载地址期间不向外发送免费ARP报文),当我们想知道某些设备的接口地址但又没有相应记录可查时,我们就可以利用设备的这种特性,抓取其免费ARP报文,从而分析出其接口使用的IP地址。这个方法曾数次在用户处使用,效率很高,效果非常明显。
1.2使用免费ARP报文,更新某些设备的ARP表项
在《TCP/IP详解卷1》的第四章中,有讲到使用免费ARP报文,更新其他主机设备的ARP表项的应用,在我们的工作环境中最常见的应用可能是网关设备双机热备的应用场景,网关在双机热备的工作模式下,由主设备切换到备用设备时,与之相连的设备的ARP表项需要由以前主设备的MAC地址更新为现在主设备(切换前的从设备)的MAC地址,这时,一般从设备在切换为主设备时,就利用向网络中发送免费ARP请求报文,达到让其他设备更新ARP表项的效果。下面这个图示说明了这个切换的过程:
1.3利用免费ARP的攻击
在实际环境中,如果构造网关地址的免费ARP报文,并将ARP的源MAC地址设为任何非网关的MAC地址,再把构造的这个虚假的网关免费ARP报文向网络中发送,那么所有接收到这个免费ARP报文的主机都会更新自己的ARP表项中网关地址对应的MAC地址,导致这些主机的数据报文全部会被转发到错误的MAC地址上,从而实现了ARP欺骗的攻击。
1.4网关设备利用免费ARP防止ARP攻击
有些网关设备为了防止内部中毒机器对内部其他机器实施网关的ARP欺骗攻击,其会在一定的时间间隔内向网络中主动发送免费ARP报文,让网络内的主机更新ARP表项中的网关MAC地址信息,从而达到防止或缓解ARP攻击的效果。