代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。

proxy ARP

编辑

 

什么是proxy ARP

proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的ARP请求作出应答。
 

proxy ARP是如何工作的

代理ARP的工作过程如下:
PC1和PC2虽然属于不同的广播域,但它们处于同一网段中,因此PC1会向PC2发出ARP请求广播包,请求获得PC2的MAC地址。由于路由器不会转发广播包,因此ARP请求只能到达路由器,不能到达PC2。
当在路由器上启用ARP代理后,路由器会查看ARP请求,发现IP地址172.16.20.100属于它连接的另一个网络,因此路由器用自己的接口MAC地址代替PC2的MAC地址,向PC1发送了一个ARP应答。
PC1收到ARP应答后,会认为PC2的MAC地址就是00-00-0c-94-36-ab,不会感知到ARP代理的存在。
在PC1的ARP表中可以能看到如下ARP条目:
C:\>arp -a
Interface: 172.16.10.100 --- 0x2
Internet Address Physical Address Type
172.16.20.100 00-00-0c-94-36-ab dynamic
在接下来的数据通信中,PC1先将数据发送给路由器,由路由器转发给PC2。

 

proxy ARP有哪些优点

最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的
proxy ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上
 

proxy ARP带来的哪些负面影响

⒈增加了某一网段上ARP流量
⒉主机需要更大的ARP table来处理IP地址到MAC地址的映射
⒊安全问题,比如ARP欺骗(spoofing)
⒋不会为不使用ARP来解析地址的网络工作
⒌不能够概括和推广网络拓扑
 

ARP与代理ARP

编辑

ARP报文是主机发送出来的,在该主机只知道对方的IP地址且想知道对方的MAC地址时,它以广播的方式将ARP请求发送到自己所在网段的各个节点。当有主机响应时,回发的报文是单播发送。
代理ARP是当主机知道一个IP地址且它想知道该IP地址对应的MAC地址时,主机广播发送ARP请求,但是如果有同一网段的部分主机在另一个物理网络时(比如两个192.168.1.0的网段,中间夹着一个192.168.2.0的网段),就需要中间设备(路由器)进行代理ARP。因为路由器默认是不转发广播报文的,所以当路由器收到ARP请求时,它将启动代理ARP服务,将发送广播ARP报文。[1] 
 
 
注意:
代理ARP只响应那些在自己的路由表里能找到的网段,而不是象我以前想的那样会用自己的mac响应主机所有的arp请求
本网段内的访问仅仅是简单的广播寻址,不涉及代理ARP,当主机配置默认路由时,该ARP请求直接请求的就是网关的ARP,也不涉及代理ARP,所以所谓的代理ARP相当于网关是有道理的。在配置了网关的设备上是不会出现代理ARP的问题
端口下来启动arp proxy
 
实例配置:

如图,交换机连接两台PC(A和B),最初的时候他们都在一个vlan1内,分别配置IP地址 172.16.1.2/16和172.16.2.2/16 ,均未配置网关,此时可以Ping同对方。

将A加入vlan1 ,vlanif配IP:172.16.1.1/24
将B加入vlan2 ,vlanif配IP:172.16.2.1/24
此时A ping B是ping不通的。
原因猜想:没有配置网关也没有配置代理ARP,所以ping不通
当我配置上两个端口的代理ARP,此时发现还是Ping不同。
此时查看了A的ARP表,发现表中记录172.16.2.2的MAC地址是B的地址。
此时A发出去的包中封装的MAC地址是B的,当vlanif收到该帧时,会丢弃该报文
将A的ARP表清空(arp –d),此时再pingB,发现可以Ping通了,A中记录的关于172.16.2.2的MAC地址已经是vlanif1 的MAC了。

代理ARP的更多相关文章

  1. 1-13 代理ARP和RARP

    一.代理ARP(Proxy ARP) 因为路由器有阻住广播的作用,如果我们要访问一台远端的主机,那么我们封装的并不是远端的目的MAC地址,而是我们网关的MAC地址. 当我们的网关出现故障,就需要给他重 ...

  2. [TCPIP]代理arp

    一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的)     实验二.代理arp pc访问服务器想让走路由器(写32bit静态路由),右边的R arp server的时 ...

  3. ARP/代理ARP

    1.ARP首先讲到ARP,ARP是地址解析协议,它的作用是在以太网环境下,通过3层的IP地址来找寻2层的MAC地址,得到一张ARP缓存表.转发数据的时候根据ARP缓存表来进行传输.下图详细说明数据传输 ...

  4. [na]代理arp导致的问题(路由卷)

    已过期... 一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的) 实验二.代理arp导致的问题 pc访问服务器想让走路由器(写32bit静态路由),右边的R arp ...

  5. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  6. IP服务-1-ARP和代理ARP

    代理ARP常被人忽视,因为现在基本不用了

  7. HCNP Routing&Switching之代理ARP

    前文我们了解了端口隔离相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16186451.html:今天我们来聊一聊ARP代理相关话题: 端口隔离之破解之 ...

  8. H3C 代理ARP

  9. ARP (地址解析协议)

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机, ...

随机推荐

  1. C#基础第八天-作业-设计类-面向对象方式实现两个帐户之间转账

    要求1:完成以下两种账户类型的编码.银行的客户分为两大类:储蓄账户(SavingAccount)和信用账户(CreditAccount),两种的账户类型的区别在于:储蓄账户不允许透支,而信用账户可以透 ...

  2. JAVA日期查询:季度、月份、星期等时间信息

    package com.stt.dateChange; import java.text.SimpleDateFormat; import java.util.Calendar; import jav ...

  3. Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用

    前言 之前咱们通过 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化 和 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案 这两篇文章了解了Nginx对高并发应用 ...

  4. ssm redis 数据字典在J2EE中的多种应用与实现

    数据字典在项目中是不可缺少的“基础设施”,关于数据字典如何设计如何实现,今天抽空讲一下吧 先看一下表设计: 通过自定义标签来实现页面的渲染: public class DataDictValueTag ...

  5. IOS UIView自动调整尺寸

    自动尺寸调整行为 当您改变视图的边框矩形时,其内嵌子视图的位置和尺寸往往也需要改变,以适应原始视图的新尺寸.如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据au ...

  6. 谷歌Chrome浏览器小于12px字号显示的BUG

    webkit的私有属性:html{-webkit-text-size-adjust:none;}

  7. 利用es-checker检测当前node对ES6的支持情况

    ode.js发展非常快,对es6特性的支持也越来越良心,但node.js版本很多,各版本对es6的支持度都不一样,为了能清晰的了解各版本对es6特性的支持,需要有一个工具能提供比较清晰的支持说明,甚至 ...

  8. django中celery的使用

    1.什么是celery celery是一个异步任务框架,当我们的程序中存在一个比较耗时的操作时,可以启动这个异步任务框架, 将耗时操作,交给它来完成,这样节省了程序的执行时间. 2.celery的原理 ...

  9. 【Android】LayoutInflater

    LayoutInflater的作用 LayoutInflater的作用类似于findViewById(). 不同点是: LayoutInflater是用来找res/layout/下的xml布局文件,并 ...

  10. Node.js学习笔记(4)--简单路由,老师学生id

    说明(2017-5-2 17:57:23): 1. foo.js var http = require("http"); var url = require("url&q ...