什么是arp协议:
arp协议是地址解析协议,英文是address resolution protocol
通过IP地址可以获得mac地址
两个主机的通信归根到底是MAC地址之间的通信
在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址
,为了让报文能够在物理网络上传输,还必须要知道对方主机的物理地址(MAC地址),这样就存在把IP地址转换成物理地址的问题。
我们以以太网为例,为了正确的向目的主机发送报文,必须把目的主机的32位IP地址转换成48位的以太网地址(MAC地址),这就需要在互联层有各个服务或功能将IP地址转换成响应的物理地址,这个服务或者功能就是ARP协议。
所谓的“地址解析”,就是主机在发送帧之前将目的IP地址转换成目的主机的mac地址的过程,
ARP协议的基本功能就是通过目标设备的IP地址,查询目标主机的MAC地址,以保证主机间互相通信的顺利进行
ARP协议和DNS有点相像之处,不同点是DNS在域名和ip地址之间解析,而ARP是在IP地址和MAC地址之间解析,当然,他们都支持反向解析
ARP代理(ARP proxy)的工作原理:
ARP协议要求通信的主机必须在同一个物理网段内(局域网环境),如果不在同一个局域网内的话就需要ARP代理了
当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的mac地址,两者也不能通信,必须通过路由或ARP中继等技术转发才可以,此时发送主机通过ARP协议获得的将不是目的主机的MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址,于是伺候发送主机发往目的主机的所有帧都将发往该路由器或者该ARP中继,通过它向外发送,这种情况称为ARP代理
ARP通信过程:
以ARP广播的形式发出
以单播的形式回复
每台主机都有ARP缓存表,(windows:arp –a、清除arp缓存:arp –d (如果要清除指定的arp的话需要指定IP地址))
小结:主机之间的通信最终是基于MAC地址的
ip和Mac之间的解析式由ARP协议完成的
ARP协议应用于LAV局域网内
arp协议是通过广播的方式工作的
主机通讯后会缓存arp解析结果
arp表的好处:加快主机通讯的速度,减少arp广播风暴
arp缓存表是把双刃剑:
1、arp缓存表可以加快arp解析的速度
2、ARP欺骗(网关的IP地址是对的,但是Mac地址不对)(网关欺骗)
ARP协议的工作原理过程:A为发送主机,B为目标主机
1、A要给B发送文件,A会查找自己的ARP缓存表,如果有B的缓存的话,直接发送给B,如果没有的话A会向局域网中广播ARP请求
2、只有B才会回应A的广播请求,并且以单播的形式回复
3、A收到B的回复之后,将B的MAC地址封装到帧里面,并且将B的信息保存在自己的ARP缓存中,当然B也会保存A的MAC地址信息(因为A在广播中把自己的MAC地址广播出去了)。
注意:ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(windows一般是15分钟到20分钟,linux的非常小),如果表中的某一条记录没有使用,就会被删除,这样大大减小了ARP缓存表的长度,加快查询速度,同时也增加了ARP欺骗的风险
ARP欺骗的原理:
ARP欺骗原理:
通过伪造IP地址和MAC地址对实现ARP欺骗的。如果一台主机中了ARP病毒,那么这台主机会在网络中产生大量的ARP通信量(以很快的频率进行广播),以至于网络阻塞,攻击者只要持续不断的发出伪造的ARP响应报就能够更改目标主机ARP缓存中的ARP记录,造成网络中断或中间人攻击
ARP攻击主要存在于局域网中,局域网中若有一台主机感染ARP病毒,则感染该ARP病毒的主机会试图通过ARP欺骗手段截获所在网络内其他主机的通信信息,并因此造成局域网内其他主机的通信故障。
ARP在生产环境中产生的问题:
1、ARP欺骗和ARP攻击
2、高可用服务器切换时要考虑ARP缓存问题
3、路由器等设备无缝迁移时要考虑ARP缓存问题
为什么要使用ARP协议:
OSI模型把网络分为7层,彼此之间不直接打交道,而是通过接口(layer interface)互相通信,IP地址工作在第三层(网络层),而MAC地址工作在第二层(链路层),当协议在发送数据包时,需要封装第三层、第二层的报头,但是协议只知道目的节点的IP地址,不知道目的节点的MAC地址,又不能跨越第二层、第三层,因此得用ARP服务
7层模型:从上到下: 应用层----表示层---会话层---传输层---网络层---数据链路层---物理层 数据包 帧 bit |
一般人认为ARP在网络层,TCP/IP在传输层,
RARP:
反向ARP协议,ARP是通过IP地址找MAC地址,而RARP是通过MAC地址找IP地址
反向地址解析协议用于一种特殊情况,站点被初始化后,只有MAC地址而没有IP地址,则它可以通过RARP协议发出广播请求,征求自己的IP地址,而RARP服务器负责响应请求,RARP广泛用于获取无盘工作站的IP地址,和DHCP的工作原理相同
ARP欺骗防御和解决措施:
方法一、
写个bat程序临时阻止ARP攻击,电脑重启后失效,需重新执行或放在开机自启动里,
@echooff
%WINDIR%system32arp.exe–d
%WINDIR%system32arp.exe–s 10.10.10.10 00:0C:29:B2:A5:8C
方法二、
在电脑上安装360
方法三、
linux:
iptables -m 00:0C:29:B2:A5:8C 10.10.10.10
把IP地址与MAC地址的对应关系加入到/etc/ethers中,然后执行arp –f命令
上网防火墙迁移到B,要用arping进行arp广播,否则的话内网主机无法上网
[root@nginx scripts]# arping --help arping: invalid option -- '-' Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination -f : quit on first reply -q : be quiet -b : keep broadcasting, don't go unicast -D : duplicate address detection mode -U : Unsolicited ARP mode, update your neighbours -A : ARP answer mode, update your neighbours -V : print version and exit -c count : how many packets to send -w timeout : how long to wait for a reply -I device : which ethernet device to use (eth0) -s source : source ip address destination : ask for what ip address |
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
以上两个命令均可。命令参数的含义这里省略了。