什么是ARP协议:
ARP协议,全称“Address Resolution Protocol”(地址解析协议),使用ARP协议,可以实现将IP地址解析成对应主机的物理地址(MAC地址)
为了能够正确的向目的主机发送数据,必须将目的主机的32位IP地址转换成为目的主机48位以太网地址(MAC地址).为了完成从ip地址向MAC地址的转换,就需要使用到ARP协议。
ARP协议和DNS服务有点相像之处。不同点:DNS是域名和IP之间的解析,且DNS需要配置服务,ARP不需要配置服务。
ARP协议要求通信的主机双方必须在同一个物理网段(即局域网)
小结:
arp协议主要是将ip和mac地址相互转换
arp协议工作在2层属于三层协议
arp协议要求通信的主机在同一个局域网内
ARP通信原理:
通信过程:
1)1.1的机器想和1.2通信,首先检查本地的arp缓存表,查看是否有1.2的MAC地址
2)本地arp表有1.2的mac地址就直接通信。没有1.2的mac地址,1.1就发送arp广播(携带自己的ip:mac,并广播请求1.2的mac地址)
3)所有的主机都接收到arp广播信息,但是有1.2主机才会响应请求,给1.1单播一个回复,并缓存1.1的mac地址
4)1.1将1.2的mac缓存在arp表中,并传输数据。
局域网主机数量过多的情况下,会使用vlan来进行隔离避免广播风暴。
arp缓存表是把双刃剑:
1)加速arp的解析速度(减少广播风暴)
2)有了arp表,给恶意的黑客带来了攻击主机的风险。arp欺骗(伪造网关mac地址),arp攻击
ARP欺骗原理
ARP攻击就是伪造IP地址和MAC地址对实现ARP欺骗,如果一台主机中了ARP病毒,那么它就能够在网络中产生大量的ARP通信量(它会以很快的频率进行广播),以至于使网络阻塞,攻击者只要不断的发出伪造的ARP响应包就能更改局域网中目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP攻击主要存在于局域网中。
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
攻击者向电脑A发送一个伪造的ARP响应,告诉电脑A:电脑B的IP地址192.168.0.2对应的MAC地址是00-aa-00-62-c6-03,电脑A信以为真,将这个对应关系写入自己的ARP缓存表中,以后发送数据时,将本应该发往电脑B的数据发送给了攻击者。同样的,攻击者向电脑B也发送一个伪造的ARP响应,告诉电脑B:电脑A的IP地址192.168.0.1对应的MAC地址是00-aa-00-62-c6-03,电脑B也会将数据发送给攻击者。
为什么使用ARP协议
OSI模型把网络工作分为7层彼此不直接打交道,只通过接口(layer interface)进行通信。IP地址工作在第三层,MAC地址工作在第二层。当协议在发送数据包时,需要先通过第三层(IP地址),第二层(MAC地址)的报头。但协议只知道目的节点的ip地址,不知道其MAC地址,又不能跨第二,第三层,所以需要使用ARP协议服务。
arp缓存表生产环境中的实际应用:
1)高可用服务器在切换时要考虑到arp缓存表的问题(keepalived,heartbeat自动实现arp表的更新)
2)路由器迁移,机房设备准备切换,导致主备机故障等设备在无缝迁移时要考虑arp缓存的问题。例如:更换办公室路由器
相关命令:
arp -a 查看arp缓存表
arp -d 情况arp缓存表
ARP广播而进行新的地址解析
/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253(目标地址)
/sbin/arping -U -I eth0 10.0.0.162
在172.16.10.76主机上没有.31的MAC地址解析
[root@CMPP80 ~]# arp -a
? (172.16.10.1) at 00:10:db:ff:10:04 [ether] on eth1
在172.16.10.31主机上发起对.76的MAC地址解析
[root@cmpp_90 ~]# arping -I eth0 -c 3 -s 172.16.10.31 172.16.10.76
ARPING 172.16.10.76 from 172.16.10.31 eth0
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.949ms
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.337ms
Unicast reply from 172.16.10.76 [6A:EE:BE:55:21:24] 1.237ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
再看.76主机的arp表,已经有了.31的ip-mac条目
[root@CMPP80 ~]# arp -a
? (172.16.10.31) at 6e:45:1b:4c:d4:85 [ether] on eth1
? (172.16.10.1) at 00:10:db:ff:10:04 [ether] on eth1
在172.16.10.76主机上更新跟.76互通主机ip-mac地址
/sbin/arping -U -I eth1 172.16.10.76
arping 命令:
说明:arping是用于发送arp请求到一个相邻主机的工具;
arping使用arp数据包,通过ping命令检查设备上的硬件地址。
语法:arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
参数:
-c count表示发送指定数量的 ARP 请求 数据包后就停止。如果制定了deadline选项,则arping会等待相同数量的arp响应包,直到超时为止;
-b 用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast地址。
-w timeout设定一个超时时间,单位是秒。如果到了指定时间,arping 还没有完全收到响应则退出;
-q quiet output 不显示任何信息;
-f 表示在收到第一个响应包后就退出;
-s source设定 arping 发送的 arp 数据包中的 SPA 字段的值。如果为空,则按下面处理
如果是 DAD 模式(冲突地址探测),则设置为 0.0.0.0;
如果是 Unsolicited ARP 模式(Gratutious ARP)则设置为目标地址;
否则从路由表得出;
-U 主动ARP模式来更新邻居的ARP缓存。 预期没有答复。
-I interface设置ping使用的网络接口;
destination设置目标地址。
服务器切换ARP问题
当网络中一台提供服务的集群宕机后,当其他正常运行的主机,接管宕机的机器的资源时,会因为客户端的ARP table cache的地址解析还是原来宕机机器的MAC地址,从而导致,客户依然无法访问的情况。
解决办法:当机器宕机。ip地址迁移到其他机器上时,需要使用arping命令来通知所有网络内机器清空其本地的ARP table cache。从而使客户机访问时重新广播获取MAC地址。
ARP广播而进行新的地址解析
/sbin/arping -I eth0 -c 3 -s 10.0.0.162(接管vip的正常主机) 10.0.0.253(不通的客户机或者是网关地址。)
/sbin/arping -U -I eth0 10.0.0.162(接管vip的主机)