ARP 简介

1. 什么是APR协议

   ARP,Address Resolution Protocol,中文名是地址解析协议。使用 ARP 可以实现通过 IP 地址或得对应主机的物理地址(MAC 地址)。

   在 TCP/IP 网络环境下,每个联网的主机都会被分配一个 32 位的 IP 地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网络上传输,还必须要知道对方目的主机的物理地址(MAC)才行。这样就存在把 IP 地址变换为物理地址的地址转换的问题。

   我们以以太网环境为例说明,为了正确地向目的主机传送报文,必须把目的主机的 32 位 IP 地址转换为 48 位以太网的地址(MAC地址)。这就需要在互联网层有一个服务或功能将 IP 地址转为相应物理地址(MAC地址),这个服务或功能就是 ARP 协议。

   所谓的“地址解析”,就是主机在发送帧之前将目标 IP 地址转换成目标 MAC 地址的过程。ARP 协议的基本功能就是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证主机间互相通信的顺利进行。

   ARP 协议和 DNS 有点相像之处。不同点是:DNS 是在域名和 IP 之间的解析,另外,ARP 协议不需要配置服务,而 DNS 要配置服务才行。

2. 什么是APR代理

   ARP 协议要求通信的主机双方必须在同一个物理网段(即局域网环境)!

   当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的 MAC 地址,两者也不能直接通信,必须经由路由或 ARP 中继等技术转发才可以。所以,此时发送主机通过 ARP 协议获得的将不是目的主机的真实 MAC 地址,而是一台可以通往局域网外的路由器的某个端口的 MAC 地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器或者说是 ARP 中继,通过它向外发送。这种情况称为 ARP 代理(ARP Proxy)。

3. ARP 协议工作原理

  • 在局域网环境中主机 10.1.1.1 想发送数据给主机 10.1.1.2,ARP 表会检查本地缓存,如果发现没有 ARP 表其对应的 MAC 地址

  • 主机 10.1.1.1 在局域网内发送 ARP 广播spacer.gif

  • 所有主机都收到 10.1.1.1 的 ARP 广播但只有 10.1.1.2 给它一个单播恢复spacer.gif

  • 主机 10.1.1.1 拿到 10.1.1.2 对应的 MAC 地址信息之后,将 MAC 地址保存到本地缓存 ARP 表中,并发送数据

ARP 缓存表有一个老化机制(即设置了生存时间 TTL),在一段时间内(一般 15-20 分钟)如果表中的某一行没有使用,就会被删除。这样大大减少了 ARP 缓存表的长度,加快查询速度,但也带来了 ARP 欺骗的安全风险。

arp 缓存表是把双刃剑:

1. ARP 缓存表可以较快 ARP 的解析速度。

2. 正是有了 ARP 缓存表,给恶意***带来***服务器主机的风险,这就是著名的 ARP 欺骗或 ARP ***。

在每台装有 TCP/IP 协议电脑中,都会有一个 ARP 缓存表(windows 命令提示符输入 arp -a)即可。

  C:\Users\Administrator>arp -a

   接口: 192.168.1.100 --- 0xb

   Internet 地址         物理地址           类型

   192.168.1.1             9c-21-6a-62-df-5e     动态

   192.168.1.102           68-3e-34-27-5d-a2     动态

   192.168.1.255           ff-ff-ff-ff-ff-ff     静态

   224.0.0.252             01-00-5e-00-00-fc     静态

   239.255.255.250          01-00-5e-7f-ff-fa     静态

   255.255.255.255          ff-ff-ff-ff-ff-ff     静态

4. ARP 欺骗的原理

ARP ***就是通过伪造 IP 地址和 MAC 地址实现对 ARP 欺骗的,如果一台主机中了 ARP 病毒,它能够在网络中产生大量的 ARP 通信量(会以很快的频率进行广播),以至于使网络阻塞,***者只要持续不断地发出伪造的 ARP 响应包就能更改局域网中目标主机 ARP 缓存中的 IP-MAC 条目,造成网络中断或中间人***。

ARP ***主要是存在于局域网网络中,局域网中若有一个人感染 ARP ***,则感染该 ARP ***的系统将会视图通过"ARP欺骗"手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

5. ARP ***案例

下面这个案例是由于某台 PC 中了 ARP 病毒通过 ARP 欺骗导致的局域网内上不了网的情况,通过查看 ARP 表查看是否对应的 MAC 地址记录正确(原先必须留有正确的 MAC 地址记录):spacer.gif

下面这个案例是由于某台路由器宕掉,重新换过之后,导致不能上网的情况,此时可以通过 arpping(linux中)进行 arp 广播更新 ARP 表:spacer.gif

6. ARP 表在生产环境中产生的问题和解决办法

 1). ARP病毒,ARP欺骗(通过入职时,记录每位员工对应的机器的MAC地址)对应上述案例1.

    预防:通过绑定 ip 和 mac 地址(ip 与 mac 对应关系加入 /etc/ethers 然后执行 arp -f 命令).

 2). 高可用服务器对切换时要考虑 ARP 缓存的问题。对应上述案例2.

 3). 路由器等设备无缝迁移是要考虑 ARP 缓存的问题,例如办公室的路由器。

ARP 病毒欺骗的排查办法:

 1. 使用“ARP -a”命令查看本地 ARP 缓存表,查找重复 MAC 地址或错误的网关 MAC 地址。

 2. 使用“nbtscan.exe”工具扫描分析网内 IP 地址与 MAC 地址。

 3. 使用“ping”命令测试本机与其他内网主机的延迟时间,延迟高则可疑。

 4. 使用金山贝壳 ARP 防火墙拦截 ARP ***数据包,根据***拦截日志进行判断。

 5. 使用“彩影 ARP 防火墙”分析数据流量,查找可疑***源。

 6. 使用“WireShark、Sniffer Pro、tcpdump”等嗅探分析软件对网络数据进行抓包检测,查找发布大量 Broadcast 类数据包源主机及其他无请求类 ARP 数据包发送源。

 7. 开启“诺顿企业版防护软件”网络威胁保护一项中的“防御 MAC 地址欺骗”功能。

 8. 使用“折半法”分析判断病毒源主机物理位置。

 9. 登录路由器,检测 DHCP 分配日志信息与 ARP 缓存表,再做 IP/MAC 地址双绑定。

 10.登录交换机,通过划分 VLAN 技术控制广播域内的异常数据包影响,查看 MAC 地址表,查找可疑 MAC 对应物理端口号,确定主机位置。

总结:网络中一台提供服务的机器宕机后,当在其他运行正常的机器添加宕机的机器的 IP 是,会因为客户端的 ARP table cache 的地址解析还是宕机的机器的 MAC 地址,从而导致,即使在其他运行正常的机器添加宕机的机器的 IP,也会发生客户依然无法访问的情况。

解决:当机器宕机,IP 地址迁移到其他机器上时,需要通过 arping(linux环境中)命令通知所有网络内机器清除本地的 arp table cache,从而使得客户机访问时重新广播获取MAC地址。这个在自己开发脚本实现服务器的高可用时是要必须考虑的问题之一,几乎所有的高可用软件都会考虑这个问题。

命令:arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253

   arping -U -I eth0 10.0.0.162

文章:http://www.chinaunix.net/