代理ARP--善意的欺骗
1. 代理ARP(Proxy ARP)是什么?
顾名思义,它指通过中间设备(通常为Router)代替其他主机响应ARP请求。对于没有配置默认网关的主机想要与其他网络的另一台主机通信时,网关收到源主机的ARP请求时,会使用自己的MAC地址和目的主机的IP对源主机的ARP请求进行应答。 (可能当你读到这里时,脑子里对Proxy ARP这个东西还不太明白,不要急,慢慢来)
2. 一个拓扑

图中,假设路由器左边接口是子网A,路由器右边接口是子网B,且路由器上没有NAT
3. 细心的读者可能发现,PC2掩码是16位,同时没有网关,而其他的PC和路由器的两个接口都是24位掩码。
3.1 PC2 ping PC3
PC2组装ICMP报文(源IP是192.168.1.3,目的IP是192.168.2.2),此时组装会失败,因为PC2不知道PC3的MAC地址。
PC2就会想办法得到PC3的MAC地址。因为PC2是16位掩码,因此它认为PC3与自己是同一网段的,因此它会直接广播ARP请求,去询问PC3的MAC地址。ARP请求部分格式如下:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC2 192.168.1.3 00:00:00:00:00:00 192.168.2.2
然而,这里我们会发现,这个ARP请求报文压根就不能到达PC3,因为路由器不会转发广播包,因此这个ARP请求广播包只能到达路由器(路由器会更新ARP表: 192.168.1.3---MAC2)。
若是路由器支持ARP代理功能,且启用ARP代理后,路由器会查看ARP请求,发现IP地址192.168.2.2属于它连接的另一个网络(子网B),因此路由器用自己左边接口的MAC地址(MAC4)代替PC2的MAC地址,向PC2发送了一个ARP应答。ARP应答部分格式如下:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC4 192.168.2.2 MAC2 192.168.1.3
当PC2收到这个ARP应答,会认为PC3的MAC地址是MAC4,根本不会感知到Proxy ARP的存在。PC1会更新自己的ARP表: 192.168.2.2----MAC4 。 此时路由器的行为就叫代理ARP,这实质上是一种ARP欺骗----善意的谎言(瞧瞧,这多有意思)。
接着PC2重新组装ICMP报文(源IP为192.168.1.3,目的IP为192.168.2.2;源MAC为MAC2,目的MAC为MAC4),这个报文会先到路由器,之后再由路由器转发到PC3上,同样道理,路由器会寻求PC3的MAC地址,这个ARP请求的部分格式如下:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC5 192.168.2.1 00:00:00:00:00:00 192.168.2.2
当PC3收到这个ARP请求报文时,会记录下路由器右边接口的IP(192.168.2.1)和MAC(MAC5)地址映射(即更新ARP表: 192.168.2.1----MAC5),之后单播回复APR应答到路由器。此时ARP应答部分格式如下:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC3 192.168.2.2 MAC5 192.168.2.1
当路由器收到这个ARP应答,更新自己的ARP表: 192.168.2.2----MAC3,此时ICMP包能够到达PC3
最后就是PC3回应ICMP应答报文给PC1,这个报文同样会经过路由器转发,只是这次不会再经历ARP过程了。
3.2 PC1 ping PC3
PC1发现和PC3不在同一网段,会先把报文扔向网关(192.168.1.1)。这里PC1广播ARP请求获取网关的MAC地址时,ARP请求报文部分格式为:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC1 192.168.1.2 00:00:00:00:00:00 192.168.1.1
这个ARP请求包到达路由器后,路由器会进行ARP应答,回复PC1自己的MAC地址,此时ARP应答报文部分格式为:
字 段: |Serder MAC| |Serder IP| |Target MAC| |Target IP|
值 : MAC4 192.168.1.1 MAC1 192.168.1.2
当这个ARP应答到达PC1时,PC1更新自己的ARP表: 192.168.1.1----MAC4
接下来的过程和3.1中相同,这里不一一赘述。
可以看出,PC1和PC2的ARP表项不一样。其实这一切都是为了通信而服务的。
4. Proxy ARP的好处和缺点
好处: 最主要的一个优点就是能够在不影响其他路由器的路由表的情况下在网络上添加一个新的路由器,这样使得子网的变化对主机是透明的。用户的路由器和客户端不用做任何修改,用户甚至感觉不到透明接入的路由器的存在
缺点: 1. 安全问题,Proxy ARP本身就是利用ARP欺骗,所以自己也很容易被ARP欺骗(其实ARP协议本身就有这个缺陷); 2. 整个网络看起来是透明的,不利于概括和推广网络拓扑;3. 若是路由器不支持ARP代理,会导致PC2不能访问其他网络
5. FAQ
5.1 为什么会有ARP代理?
ARP Request是个广播包(当然也有单播的ARP请求,不在这里讨论),它询问的对象若在同一个局域网内,就会回答。但如果查询对象不在同一个局域网,那怎么办呢?为了解决这个问题,路由器就提供一个服务:Proxy ARP
5.2 Proxy ARP会自动响应到哪些网段的ARP请求
代理ARP只响应那些自己知道网段(路由表中能找到的),而不是会用自己的MAC响应主机所有的arp请求。如PC2去ping 192.168.3.2/24,此时路由器不会响应这个ARP请求
5.3 Proxy ARP适用于哪些场景
Proxy ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。具体的场景我也没找到合适的,大家可以探讨
5.4 还有什么方法来解决跨局域网的地址查询?
其实默认网关完全可以解决这个问题,直接将报文扔到网关上,让网关去转发。
5.5 如果存在多个ARP代理设备(这些设备的左边接口与PC2接在同一个傻瓜交换机上;右边接口与PC3接在同一个交换机上,PC3此时也使用16位掩码,不设置网关),那么PC2访问PC3时,PC2的ARP缓存表是怎样的?
我使用模拟器搭建环境,发现每个设备都会回复ARP应答,这些ARP应答都是以自己左边接口的MAC对应PC3的IP,且这些ARP应答都会达到交换机,但是交换机只会转发一个到PC2上(至于选哪一个,这里没有去深究),因此PC2只会收到一个ARP应答, PC2的缓存表中,关于PC3的ARP条目只有一条。
6. 总结
Proxy ARP其实就是中间设备利用ARP欺骗,代替某个主机响应ARP请求;
实际应用的场合很少,用默认网关就可以解决这个问题,而且很多时候主机都支持DHCP自动获取地址,不会出现拓扑中的情况‘;
很多设备都不支持Proxy ARP功能。我本来想使用实际的设备来搭建这个拓扑,却未找到合适的路由器,最后无奈,只好使用Cisco Packet Tracer工具来模拟(目前知道思科路由器支持这个功能)
代理ARP--善意的欺骗的更多相关文章
- 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)
一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...
- ARP/代理ARP
1.ARP首先讲到ARP,ARP是地址解析协议,它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表.转发数据的时候根据ARP缓存表来进行传输.下图详细说明数据传输 ...
- 代理ARP
代理ARP是ARP协议的一个变种. 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答.代 ...
- 1-13 代理ARP和RARP
一.代理ARP(Proxy ARP) 因为路由器有阻住广播的作用,如果我们要访问一台远端的主机,那么我们封装的并不是远端的目的MAC地址,而是我们网关的MAC地址. 当我们的网关出现故障,就需要给他重 ...
- [TCPIP]代理arp
一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的) 实验二.代理arp pc访问服务器想让走路由器(写32bit静态路由),右边的R arp server的时 ...
- [na]代理arp导致的问题(路由卷)
已过期... 一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的) 实验二.代理arp导致的问题 pc访问服务器想让走路由器(写32bit静态路由),右边的R arp ...
- IP服务-1-ARP和代理ARP
代理ARP常被人忽视,因为现在基本不用了
- HCNP Routing&Switching之代理ARP
前文我们了解了端口隔离相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16186451.html:今天我们来聊一聊ARP代理相关话题: 端口隔离之破解之 ...
- ARP原理和欺骗
ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网***,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的.但是ARP的是 ...
随机推荐
- 《深入分析Linux内核源代码》读书、私藏笔记大放送
秉承着"不懂操作系统原理的程序员不是合格的程序员"的至理名言,鄙人又是买陈莉君老师的“Linux教学视频”,又是研读其力作<深入分析Linux内核源代码>,先将总结笔记 ...
- 配置 Nginx 的目录浏览功能
Nginx 默认是不允许列出整个目录的,需要配置 Nginx 自带的 ngx_http_autoindex_module 模块实现目录浏览功能 . location / { alias /opt/fi ...
- Android invalidate()方法 requestLayout()方法分析
强调一点的就是,在onMeasure(),onLayout(),onDraw()这三个流程中,Google已经帮我们把draw()过程框架已经写好了,自定义的ViewGroup只需要实现 measur ...
- Android应用系列:完美运行GIF格式的ImageView(附源码)
前言 我们都知道ImageView是不能完美加载Gif格式的图片,如果我们在ImageView中src指定的资源是gif格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...
- 自动化发布-GitLab WEB Hooks 配置
钩子(hooks) hooks是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件.触发器之类的东西类似). Git hooks就是那些在Git执行特定事件(如commit.pu ...
- Java基础之 运算符
前言:Java内功心法之运算符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,J ...
- SqlServer主键
*主键 作用:唯一标识表中的一条记录. *特点: 1不能重复的列. 2主键不能为null. *同名时如何处理:王洋(大) 王洋(小) *主键有两种选用策略: 业务主键和逻辑主键. 业务主键是使用有业务 ...
- 【Dubbo&&Zookeeper】3、Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法
转自:http://blog.csdn.net/gaoshanliushui2009/article/details/50469595 我们公司使了阿里的dubbo,但是阿里的开源网站http://c ...
- Ubuntu(14.04LTS)学习札记
这篇博文是我在基于Ubuntu学习一些知识的札记,方便日后进行不断回顾,这里进行统一记录,当然当学到新的东西也会陆续更新!!!还请各位博主不要见笑,小弟在此谢过~\(≧▽≦)/~啦啦啦!!!! 1.U ...
- 手把手教你实现Confluence6.7.1安装与破解
Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki. 一.准备工作 下载confluence6.7.1 wget https://downloads.atlassian ...