新闻资讯
看你所看,想你所想

代理ARP

代理ARP

代理ARP

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

基本介绍

  • 中文名:代理ARP
  • 外文名:proxy ARP
  • 解释:ARP协定的一个变种
  • 设备需求:Cisco 2500系列的router
  • 优点:子网的变化对主机是透明的
  • 负面影响:需要更大的ARP table来处理

简介

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

proxy ARP

定义

proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的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。
代理ARP
代理ARP

优点

最主要的一个优点就是能够在不影响其他router的路由表的情况下在网路上添加一个新的router,这样使得子网的变化对主机是透明的
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报文。

FAQ

1) 什幺是ARP代理?
路由器收到ARP Request时,若发现查询的目的IP位址在不同子网,路由器会扮演代理的ARP的角色,代为回答,告诉查询者它所要做的MAC地址 (用的是之间接口的MAC地址)
2)为什幺要有ARP代理?路由器的一个重要功能是把区域网路广播包限制在该网内,不让扩散,否则会造成网路风暴。ARP Request是个广播包,它询问的对象若在同一个区域网路内,就会回答。但如果查询对象不在同一个区域网路,那怎幺办呢?为了解决这个问题,路由器就提供一个服务:代理ARP.
3) 还有什幺方法来解决跨区域网路的地址查询? 若主机配置了默认网关,在查询MAC地址的对象位于区域网路之外的时候,可以把查询任务交给默认网关。
4) 什幺情况下用ARP代理? 网路中主机、路由器都有ARP cache. 主机通常配置了默认网关,它们会用默认网关查询区域网路外的MAC地址。路由器在需要查询远程网段里的MAC地址时,与其相连线的路由器,在收到ARP Request时就会扮演代理ARP的角色。

常见疑问

验证一些疑问:
⒈ARP请求到底什幺时候会发
⒉代理ARP(proxy arp)会自动回响到哪些网段的ARP请求
⒊代理ARP到底适用什幺样的环境
下面一个一个说:
⒈首先ARP是Ethernet环境下的一个机制,刚开始的时候有点犯晕,居然在s0口上配了一下,然后去sh arp,还在想怎幺没东西出来
然后,并不是每一个出外网的包都会产生arp请求(这里不讨论arp cache的问题,默认cache里都是空的),一个接口,只会向ip地址在本接口配置的子网内的地址发arp请求,而对于ip地址不在接口配置的子网的,就要去查路由表传送了
比如:打开debug arp,e0 ip add 172.16.1.1 255.255.255.128
本地ping 172.16.1.1-1.126都会产生arp请求(arp-cache里没有的情况下),
但是ping 172.16.1.128以上都不会了
⒉代理ARP只回响那些在自己的路由表里能找到的网段,而不是象我以前想的那样会用自己的mac回响主机所有的arp请求
比如:PC--Route
PC Ether:ip address 172.16.12.2 255.255.0.0
Router:
interface Ethernet0/0:
ip address 172.16.12.1 255.255.255.0
interface Loopback0
ip address 172.16.14.1 255.255.255.0
这样,在pc上ping 172.16.14.1的时候,可以看到,pc产生了一个arp request,路由器用自己的E0/0 Mac地址回复了这个请求,也就是做了ARP代理,如果我们ping 172.16.15.1,arp包也被发到路由上,但是路由器不回响这个arp包。

适用环境

代理ARP到底适用什幺样的环境
这个问题说实在的我也没有想的很明白,有的书上说,代理ARP起到了一个提供网关的作用,其实通过上面第一个验证,很明显这个说法是完全不正确的,因为只有请求本网段的ip的时候才会产生arp请求,代理arp最多也只能代理对于产生这个arp请求的主机是“同一个子网”的ip,这算什幺网关呢?
***************这个作者显然是错的,当主机未配置默认路由时,ping非本网段地址,会向网路传送此非本网段地址的ARP请求,并且开启了代理ARP的设备接口有该非本网段路由时,会将自己的MAC进行ARP答覆,实现ARP代理功能。本网段内的访问仅仅是简单的广播定址,不涉及代理ARP,当主机配置默认路由时,该ARP请求直接请求的就是网关的ARP,也不涉及代理ARP,所以所谓的代理ARP相当于网关是有道理的。在配置了网关的设备上是不会出现代理ARP的问题********************************
那代理ARP到底有什幺用呢?
下面这个图也许比较能说明问题
看到了吧,注意主机上的子网位数的配置,似乎只有在这种“怪异”的场合才会用到代理arp,AC通信,A以为C在自己的子网内,直接发arp,路由e0接到这个arp请求,然后发现请求的ip地址在自己直连的网段中(在路由表中能找到),这样,就用e0口回响了这个arp请求,完成了代理ARP

实例配置

代理ARP (proxy ARP),又叫杂错ARP(promiscuous ARP),它是一种IP网路地址复用技术。在企业网中有些用户会用到此技术。
代理ARP的原理如图1:
主网路
运行ARP
隐藏网路
隐藏主机
图中的主网路和隐藏网路共享一个网路地址,也就是说主网路和隐藏网路在一个地址段上。代理ARP要求在主网路採用ARP协定进行IP位址à物理地址映射,当主网路上各台主机调用ARP解析隐藏网路上主机的物理地址时,网关G代替主机回响,给出的物理地址是G本身的物理地址,由G来应答。而网关G要求对隐藏网路的各主机了如指掌,这样所有进入隐藏网路的数据报文都先送到网关G,网关G在将报文送往应该到达的主机,同样网关G也掌握主网路上的主机,以便对外出的数据进行合适的操作。
代理ARP技术涉及到IP 地址和物理地址两个方面,一方面代理ARP要用IP寻径,因为它要判断对那些ARP请求作出回响;另一方面代理ARP又要在网关G建立一张IP-物理地址映射表,它是直接参与物理传输的。说它是一种网路地址复用技术,是因为在代理ARP技术中,一个物理地址对应于若干个IP位址,二者不是一一对应的,这在协定上来说是不合法的 ,因为这样会引起安全问题,如果某计算机声称自己是另外一台计算机,就是对不属于自己的ARP请求回答自己的物理地址,然后非法接受分组,为了避免这种不安全的因素,有些ARP实现引入了专门的应付机制,一旦发现两个IP位址映射到同一物理地址,立即发出警告,提醒管理员採取措施。在代理ARP技术中,它不允许产生警告,否则警告报文太多,引起不必要的麻烦。在代理ARP技术中一个重要的概念是“信用”(trust),它的基本思想就是:所有参与ARP的机器要互相协作,不能有欺骗行为,因此所有ARP回响都是合法的。
这种技术广泛套用在路由器上,在中心区域网路路由器的区域网路连线埠设定代理ARP,一些拨号用户就可以使用中心区域网路网段来和中心通信,如果路由器还支持动态IP位址池,那幺整个网路配置就相当简单了。上海博达数据通信有限公司生产的BDCOM3000系列路由器就支持这种用法,典型的套用如下:
在这个网路中,路由器作为拨号访问伺服器使用,主要的配置工作集中到中心路由器BDC0M3161上面,在E0连线埠使用代理ARP技术,路由器上配置动态IP位址池,这样远程拨号计算机只需要配置拨号网路中的电话号码就能和中心通信了。BDCOM3161相当于 cisco的2511,具有16个异步连线埠,还有3个同步连线埠,每个连线埠最高速率(同步)都是2M,这3个连线埠也支持异步(根据需要在路由器连线埠配置同步/异步)。如果全用成异步,可以提供19个异步口。在青海省某银行就有这种用法。路由器配置如下:
nodename BDCOM3161 设定路由器名字
ippool add remoteip 192.168.1.100 16 设定IP位址池,名字为remoteip 从 192.168.1.100 开始分配,共有16个地址可供分配
e0 进入乙太网连线埠
arpproxy-arp enable 将ARP代理打开
ip add 192.168.1.254 255.255.255.0 设定乙太网IP位址
quit 退出E0连线埠
a0 进入A0连线埠
encapsulate ppp 将A0连线埠封装成PPP协定
ip add 192.168.1.254 255.255.255.0 设定IP位址 (此IP位址和E0连线埠地址相同)
line dial 将此连线埠改成拨号线
idletime 300 设定挂机时间(当300秒没有 业务流量时路由器将MODEM挂断)
ppp auth pap 在此连线埠进行PAP认证
给远程计算机分配地址
quit 退出A0连线埠
a1
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip 指定此连线埠使用地址池remoteip 给远程计算机分配地址
quit
a2
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
a3
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
……
a15
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
user add bdcom abcd 为PAP认证加用户帐号(bdcom)和口令(abcd)
user add bdcom1 dcba 同上此帐号可以根据需要添加多个
icmp redirect disable 将internet控制报文协定的重定向信息禁止 远程拨号计算机只需配置拨号网路的电话号码,从管理员处得到帐号和密码,IP位址由路由器自动分配即可。
实例配置:
如图,交换机连线两台PC(A和B),最初的时候他们都在一个vlan1内,分别配置IP位址 172.16.1.2/16和172.16.2.2/16 ,均未配置网关,此时可以Ping同对方。
代理ARP
将A加入vlan1 ,vlanif配IP:172.16.1.1/24
将B加入vlan2 ,vlanif配IP:172.16.2.1/24
此时ApingB是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

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com