您好,欢迎访问三七文档
ProxyARP实验探究ARP协议,就不说了,直接略过。ProxyARP,ARP代理,首先看下TCP/IP详解卷一中对它的描述:复制内容到剪贴板代码:ARP代理也称作混合ARP(promiscuousARP)或ARP出租(ARPhack)。这些名字来自于ARP代理的其他用途:通过两个物理网络之间的路由器可以互相隐藏物理网络。在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个ARP代理,以响应一个网络到另一个网络主机的ARP请求。说得通俗易懂点就是,ProxyARP类似于ARP欺骗,启用了ProxyARP的以太口会有这么一个特性:当它收到一个ARPRequest,尽管这个ARP请求的不是它的地址,它依然会以自己的MAC地址返回一个ARP应答。(当然,这个应答是有条件的,会在后续做探讨)这里我们来用一个实验来进行验证和讨论,拓扑如下:配置很简单,这里的PC全部用Router来模拟。复制内容到剪贴板代码:PC1interfaceFastEthernet0/0ipaddress192.168.1.2255.255.255.0noiproutingipdefault-gateway192.168.1.1PC2interfaceFastEthernet0/0ipaddress192.168.1.3255.255.255.0noiproutingipdefault-gateway192.168.1.1PC3interfaceFastEthernet0/0ipaddress192.168.1.100255.255.255.0noiproutingipdefault-gateway192.168.1.254R1:复制内容到剪贴板代码:interfaceFastEthernet0/0ipaddress192.168.1.1255.255.255.0!interfaceFastEthernet1/0ipaddress10.1.1.1255.255.255.0!iproute192.168.1.100255.255.255.25510.1.1.2#注意这里的掩码,32位的主机路由哦!R2:复制内容到剪贴板代码:interfaceFastEthernet0/0ipaddress10.1.1.2255.255.255.0!interfaceFastEthernet0/1ipaddress192.168.1.254255.255.255.0!iproute192.168.1.2255.255.255.25510.1.1.1#注意这里的掩码,32位的主机路由哦!iproute192.168.1.3255.255.255.25510.1.1.1配置完毕之后我们尝试从192.168.1.2ping192.168.1.100复制内容到剪贴板代码:PC1#ping192.168.1.100Typeescapesequencetoabort.Sending5,100-byteICMPEchosto192.168.1.100,timeoutis2seconds:!!!!!Successrateis100percent(5/5),round-tripmin/avg/max=236/494/1268msPC1#分析下数据流向:第一步:PC1192.168.1.2pingPC3192.168.1.100,两个IP属于同一个子网因此PC1会发送ARPRequest请求PC3的mac地址。这个ARP请求是以广播的方式发送,会到达R1的f0/0接口。由于R1的f0/0启用了proxyarp,R1会以f0/0的mac地址去应答PC1发出的ARPRequest。第二步:PC1收到这个ARP应答后认为这个MAC地址就是PC3的mac,于是以这个mac地址构造一个ICMP报文。第三步:这个报文到达交换机上做mac查找,由于目的mac是R1的F0/0,这个数据包到达R1。第四步:R1去掉二层头部,看到目的IP地址是192.168.1.100于是查找路由,我们看下此时R1的路由复制内容到剪贴板代码:R1#R1#shiproCodes:C-connected,S-static,R-RIP,M-mobile,B-BGPD-EIGRP,EX-EIGRPexternal,O-OSPF,IA-OSPFinterareaN1-OSPFNSSAexternaltype1,N2-OSPFNSSAexternaltype2E1-OSPFexternaltype1,E2-OSPFexternaltype2i-IS-IS,su-IS-ISsummary,L1-IS-ISlevel-1,L2-IS-ISlevel-2ia-IS-ISinterarea,*-candidatedefault,U-per-userstaticrouteo-ODR,P-periodicdownloadedstaticrouteGatewayoflastresortisnotset10.0.0.0/24issubnetted,1subnetsC10.1.1.0isdirectlyconnected,FastEthernet1/0192.168.1.0/24isvariablysubnetted,2subnets,2masksS192.168.1.100/32[1/0]via10.1.1.2C192.168.1.0/24isdirectlyconnected,FastEthernet0/0后缀长的路由条目具有更高的优先级,因此匹配到S192.168.1.100/32[1/0]via10.1.1.2这条路由,数据包从F1/0转发出去,到达R2。第五步:R2看到目的IP是192.168.1.100,于是这个ICMP报文到达192.168.1.100这里,ICMP报文已经到达PC3了,PC3的Replay这里就不分析了,原理一摸一样。那么关掉R1的F0/0的proxyarp功能呢?通还是不通?于是我们在R1上复制内容到剪贴板代码:R1(config)#intef0/0R1(config-if)#noipproxy-arpR1(config-if)#然后再从PC1pingPC3,居然还是通的。为什么呢?因为arp缓存,在PC1上用cleararp-cache清掉缓存,再ping就ping不通了。在R1上开debugarp,可以很直观的看到R1对PC1请求PC3的ARPRequest进行应答。复制内容到剪贴板代码:R1#debugarpARPpacketdebuggingisonR1#*Mar102:10:41.031:IPARP:rcvdreqsrc192.168.1.2c000.1464.0000,dst192.168.1.100FastEthernet0/0*Mar102:10:41.031:IPARP:sentrepsrc192.168.1.100c002.1464.0000,dst192.168.1.2c000.1464.0000FastEthernet0/0看下PC1的Arp表,192.168.1.1和192.168.1.100应该对应同一个MAC复制内容到剪贴板代码:PC1#sharpProtocolAddressAge(min)HardwareAddrTypeInterfaceInternet192.168.1.1001c002.1464.0000ARPAFastEthernet0/0Internet192.168.1.10c002.1464.0000ARPAFastEthernet0/0Internet192.168.1.2-c000.1464.0000ARPAFastEthernet0/0PC1#我们的猜想完全正确!到这里还没有完,问题又来了,proxyarp对什么样的arprequest进行应答呢?难道对所有的arp都进行应答?如果这样的话,PC1广播arp请求PC2的mac地址的时候,PC2会对arp进行应答,R1因为proxyarp的存在也会对这个arprequest应答。一个arprequest两个收到两个arp应答。上面这个推理肯定不可能出现,如果我们的网络这样设计的岂不乱套了。带着这样的疑问,我们继续这个实验。首先,PC1pingPC2,我们在R1上开debugarp复制内容到剪贴板代码:R1#debugarpARPpacketdebuggingisonR1#*Mar102:19:25.591:IPARP:rcvdreqsrc192.168.1.2c000.1464.0000,dst192.168.1.3FastEthernet0/0*Mar102:19:26.467:IPARP:rcvdreqsrc192.168.1.3c001.1464.0000,dst192.168.1.2FastEthernet0/0R1#可以清楚的看到收到了来自PC1和PC2的ARPRequest,但是并没有应答。我们的假设再一次成立。那么究竟什么情况下proxyarp才会对一个arp进行应答呢?有没有可能当没有任何一台主机应答的时候,proxyarp才应答呢?那么我们down掉PC2,然后继续用PC1pingPC2(记得先清掉arp缓存)。然后在PC1和R1上都开debug。复制内容到剪贴板代码:PC1#ping192.168.1.3Typeescapesequencetoabort.Sending5,100-byteICMPEchosto192.168.1.3,timeoutis2seconds:*Mar102:29:58.879:IPARP:creatingincompleteentryforIPaddress:192.168.1.3interfaceFastEthernet0/0*Mar102:29:58.879:IPARP:sentreqsrc192.168.1.2c000.1464.0000,dst192.168.1.30000.0000.0000FastEthernet0/0*Mar102:29:59.879:IPARPthrottledouttheARPRequestfor192.168.1.3.*Mar102:30:00.879:IPARP:sentreqsrc192.168.1.2c000.1464.0000,dst192.168.1.30000.0000.0000FastEthernet0/0*Mar102:30:01.879:IPARPthrottledouttheARPRequestfor192.168.1.3*Mar102:30:01.879:IPARPthrottledouttheARPRequestfor192.168.1.3*Mar102:30:02.879:IPARP:sentreqsrc192.168.1.2c000.1464.0000,dst192.168.1.30000.0000.0000FastEthernet0/0*Mar102:30:03.879:IPARPthrottledouttheARPRequestfor192.168.1.3.*Mar102:30:04.879:IPARP:sentreqsrc192.168.1.2c000.1464.0000,dst192.168.1.30000.0000.0000FastEthernet0/0*Mar102:30:04.879:IPARPthrottledouttheARPRequestfor192.168.1.3*Mar102:30:05.879:IPARPthrottledouttheARPRequestfor192.168.1.3.*Mar102:30:06.879:IPARP:sentreqsrc192.168.1.2c000.1464.0000,dst192.168.1.30000.0000.0000FastEthernet0/0*Mar102:30:07.879:IPARPthrottledoutt
本文标题:代理ARP
链接地址:https://www.777doc.com/doc-5144535 .html