原创文章,转载请保留以下信息
作者:ipist (ipist#126.com)
来源:[url]http://www.51cto.com[/url]
 
    最近发现还有不少朋友深受ARP欺骗的困扰,在这里简单写上几句,便于大家理
解ARP欺骗,解决ARP欺骗。
 
    ARP欺骗仅存在于局域网中,局域网是依赖MAC地址作为源地址、目的地址来传
输数据帧的。由于网络层通过IP地址传输数据包,因此在局域网传输数据过程中需
要将IP地址转为对应的MAC地址用于数据帧传输,负责这项工作的就是ARP协议。在
IP地址转MAC地址时首先查找本机的ARP缓存,如果找不到请求的目标IP对应的MAC地
址,则广播ARP request包请求解析该IP对应的MAC地址,局域网中所有的设备均能
收到到该广播包,当某设备发现该包的目的IP是自己时,便发送ARP reply包回答对
方自己的MAC地址。局域网中每一个ARP包(无论request、还是reply),都包含源
IP地址、源MAC地址、目的IP地址、目的MAC地址。改变源IP地址、源MAC地址或目的
IP地址、目的MAC地址间的对应关系也就实现了ARP欺骗。而在局域网中任意构造一
个ARP包都可以更新PC端腁RP缓存。这样就导致局域网ARP欺骗很容易实现,检查
ARP欺骗存在的关键也就在于检查ARP缓存中的IP-MAC对应关系是否正确。
 
    实际网络中存在多样的欺骗方式,但都是通过广播精心构造的ARP包来修改PC端
ARP缓存中的IP-MAC对应关系,只是选择了修改“源IP地址、源MAC地址、目的IP地
址、目的MAC地址”其中某项实现欺骗目的。
 
1、PC端:
   如果是windows系统在cmd模式下,执行arp-a,显示当前系统ARP缓存表,检查缓
存中的IP-MAC对应关系是否正确,正常情况下IP-MAC是一一对应的。另外可先使用
arp-d清除当前ARP缓存表,再开始观察是否存在ARP欺骗的情况。
   如果是unix/linux客户端,使用/etc/arp -a检查ARP缓存信息。
 
2、网络设备端:
   通过show arp命令检测ARP缓存信息。
    如果某MAC地址对应多个IP地址,则说明该MAC地址的PC正在广播ARP欺骗包(如
果某设备存在多IP地址,这种情况是正常的)。另一种恶意欺骗是该MAC地址在局域
网中根本就不存在。
 
    还有个比较简单的方法,装个sniffer监听网络中所有ARP包,由于ARP欺骗往往
使用广播形式传播,即使在交换机环境下也明显能监听到某PC端正在狂发ARP包。
 
    下面简单介绍一下ARP欺骗解决方案:
1、PC端,增加IP-MAC绑定,不让局域网中的ARP包轻易修改自己的ARP缓存。
2、网关、路由器端,同PC端一样增加IP-MAC绑定。
3、如果是可网管型交换机,可以在交换机中实现IP-MAC绑定。
   据观察现在的ARP欺骗,往往都是在网关(路由器)与PC端之间实现欺骗,可以
在交换机上设置只允许接网关(路由器)的交换机口允许发送源IP为网关(路由器
)IP的数据帧;设置只允许接网关(路由器)的交换机口允许发送源MAC为网关(路
由器)MAC的数据帧。这样可以有效防止PC端被ARP欺骗,但在网关(路由器)端,
还必须进行IP-MAC一一绑定以防网关(路由器)被欺骗。
 
    本人不善言辞,写的比较乱,不知道大家能否看明白,如有疑问,非常乐意共同
探讨,感谢光临寒舍。