ARP的那些事

本文内容包括arp请求、arp代理、免费arp、arp攻击的原理及详细流程.

一,arp请求。

 IP数据包,包含源IP地址、源MAC地址,目的IP地址、目的MAC地址。主机发送IP数据包时,首先查看目的IP的网络地址,如果目的网络地址就是主机所在的网络(第一种情况),那么该数据包不会默认发给网关,除非目的IP就是网关的IP。如果目的网络地址不在主机所在的网络(第二种情况),那么该数据包会默认发向网关。其次是查ARP表,填充IP数据包;上述任一情况,源IP/MAC,目的IP都是已经知道的,缺的就是目的MAC地址。如果查ARP表没有发现目的IP对应的MAC地址,那么主机则会向主机所在网络发送ARP广播,请求目的IP的MAC地址。最后,如果有主机回复该ARP请求,那么主机会从ARP回复包中提取目的IP的目的MAC地址,填充完整将要发送的IP数据包,将其发向目的MAC地址。如果主机网络内没有主机回复该ARP请求,那么该IP包将丢弃。

一般主机的ARP请求流程图:

 

ARP请求数据包结构:

 

二,免费ARP

免费ARP是ARP请求的一种边界情况,试考虑如果H主机的ARP请求包中,目的IP是本机的IP,会发生什么情况? 一般主机所在网络的其它主机都不会理会该ARP广播;除非该网络上,还有和H主机一样的IP地址的主机存在。如果H主机竟然收到了ARP回复,那么可以判定该网络上有IP地址冲突。免费ARP的作用之一,就是检测IP地址冲突

免费ARP的作用之二是通告IP对应的MAC地址。如果主机H的IP没变,但是MAC地址改变,那么需要通告网络中其它的主机更新H主机IP地址的MAC地址(比如在HA双机热备份的切换场景中会用到)。更新的细节:如果一台C主机收到一个ARP广播包,先看下包中源IP地址,如果C主机ARP表中没有该 源IP-MAC 对,那么添加该  源IP-MAC 对  进ARP表。如果C主机ARP表中已经该源IP-MAC 对,并且MAC地址与表中的不一样,那么更新该MAC.   后续将会看到,这种ARP协议的无脑更新方式,为ARP攻击(中间人攻击)打开了后门。

三,ARP代理

ARP代理能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的。注意,在下图的R1链接的左右两个子网(172.16.1.0和172.16.2.0),对于PC5和PC6来说,都是处于同一个网络172.16.0.0,只不过是R1将其物理分隔开了。

R1没有开启ARP代理前,PC5 ping 172.16.2.254 是ping不通的,即使PC5配置了172.16.1.254 的默认网关也是如此。为什么? 对于R1而言,R1收到目的地址是172.16.2.254的ARP广播包后,查看172.16.2.254并不是自己的ip地址,因此对该ARP请求不做应答对于PC5而言, 在(一,ARP请求)流程图里面,PC5判断172.16.2.254本来就和PC5处在同一网段172.16.0.0中,因此不会走网关这条通道,而是发ARP请求172.16.2.254的MAC地址,172.16.0.0网段内没有172.16.2.254主机,也就没有ARP应答,继而ping程序回复“主机不可达”

在R1的E0/0/1接口配置 arp-proxy enable 后,R1左边的网络172.16.2.0会被代理。因此凡是PC5发送的172.16.2.0网段的ARP请求,R1都会应答,并且将其E0/0/1的接口MAC地址作为PC5的ARP请求的应答结果。因此PC5的目的是172.16.2.0网段的数据包,都会发往R1的E0/0/1接口。由R1转发给与它直连的172.16.2.0网络。

我们再次在PC5上ping下172.16.2.254,可以看到此时R1不再保持沉默,而是将E0/0/1的MAC地址作为结果应答给PC5.

下图是(PC5)典型的被代理后的ARP表,172.16.2.0网段的ip,均指向54-89-989-59-58-9C的mac

由上面的ARP表可以看出,ARP代理实际上是ARP欺骗的一种情况。R1通过应答PC5的ARP请求,让PC5误以为,为发送的172.16.2.0网段的数据包找到了归宿。实际上172.16.2.0网段的包,对应的实际MAC地址,只有R1知道。如果R1接受到172.16.2.0网段的包后,没有学到该包对应的MAC地址,那么该包同样被丢弃,如果在PC5上ping 172.16.2.99,将会返回“请求超时”的错误。

 

附加:arp竞争

如果在arp代理的拓扑中,在PC5侧在添加一个PC12,并且配置的 ip 和PC11的 ip 相同;然后在PC5中 ping 冲突的 ip ,会发生什么情况? 如下拓扑图:

PC5目的ip的172.16.2.2数据包,到底是发向PC12还是PC11,由最后一个应答的arp决定。

通过抓包,可以看到PC12和PC11都对PC5的arp请求做了应答。通过PC5的arp缓存表,发现172.16.2.2数据包对应的是以9C结尾的MAC地址。

 

四,ARP攻击

 待续...


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值