原创:计算机网络-代理ARP功能详解

一、什么是代理ARP?

代理ARP就是一台路由器应答一台机器要发送至另一台机器的ARP请求,通过"伪造"身份应答ARP请求来将信息路由到"真实"的目的地。

代理ARP可以帮助同网段中的计算机找到其路由表中拥有的网段,且无需计算机配置默认路由或网关。


二、代理ARP实验

经常配置接入交换机的工程师可能会发现,有时候接入交换机忘记配置网关。为什么我还能通过局域网中其他网段也能管理到这台交换机。跨网关访问不是必须配置网关吗?

下面我将通过一个实验以及数据包分析来解释,为什么不设置网关还能跨网段访问。


1、实验拓扑

原创:计算机网络-代理ARP功能详解


思科设备通过show ip interface 某接口,可以查看该端口是否开启代理ARP功能。

原创:计算机网络-代理ARP功能详解


2、数据报文分析

以下为交换机发送的ARP请求报文及代理路由器发送的ARP响应报文:

原创:计算机网络-代理ARP功能详解

原创:计算机网络-代理ARP功能详解

交换机在广播域内请求192.168.2.10/24的MAC地址,如果在路由器2上没有开启代理ARP功能,自然在192.168.1.0/24的网络中不会有192.168.2.10这台主机,当然也不会收到192.168.2.10这台主机回复的ARP响应。但是如果路由器2开启了代理ARP功能,因为路由器2知道192.168.2.0/24网段如何到达,所以交换机1将收到来自网关192.168.1.1的ARP响应,告知要到达192.168.2.10,可以把数据报文先给我,我给你转发,具体报文如下图:

原创:计算机网络-代理ARP功能详解

这样,交换机就可以在没有配置网关的情况下跨网段访问其他主机了。


三、常见的代理ARP应用

下面我给大家举两个例子必须使用代理arp的应用场景,供大家参考:

1、 NAT端口映射至非出接口地址

原创:计算机网络-代理ARP功能详解

在没有VPN的环境下,企业通常会使用NAT端口映射技术将内部的服务器映射到公网地址上,出差用户访问公网地址即可访问到内部服务器,此时企业路由器出接口必须开启代理arp,否则端口映射无法访问。

工作流程:

1、公网计算机访问映射后的内网服务器地址202.102.134.3。

2、经过互联网中的路由数据包到达202.102.134.0/29这个网段。

3、运行商网关连接企业路由器的接口在202.102.134.0/29网段中ARP请求202.102.134.3的MAC地址。

4、如果没有开启代理ARP,此网段中将没有202.102.134.3这个地址响应此ARP请求,固202.102.134.3无法访问。

5、如果开启代理ARP,企业路由器拥有202.102.134.2地址的路由器出接口接收到ARP请求后,发现自己可以访问到202.102.134.3,因为202.102.134.3是自己创造出来的一个虚拟地址。

6、企业网路由器通过ARP响应告知运营商网关访问202.102.134.3可以直接给IP地址为202.102.134.2接口所对应的的MAC地址。

7、数据包交给企业网路由器出接口后由路由器转发至自己的NAT映射进程后发现NAT映射后指向的地址为内部服务器192.168.1.100,此时,企业路由器通过内网接口将数据包转发至服务器,传输完成。


2、远端拨号VPN场景

原创:计算机网络-代理ARP功能详解

在使用出差用户使用VPN拨号到企业内部访问服务器环境下,如果VPN拨号地址池与内网规划在同一网段,路由器内网接口必须开启代理arp,否则公网VPN拨号客户端无法访问内部服务器。

工作流程:

1、 公网计算机通过VPN拨号后获得192.168.10.99的地址。

2、通过VPN访问企业内部服务器,数据包到达服务器后,服务器需要响应VPN客户端计算机,并向VPN客户端发送数据包。

3、此时,如果路由器内部接口没有开启代理arp功能,内部服务器使用arp在广播域中发送ARP请求要求告知192.168.10.99这个地址的MAC地址时,将没有终端响应其ARP请求,所以数据包无法成功发送。因为192.168.10.99是VPN路由器上产生的一个虚拟地址,并没有对应的MAC地址。

4、如果路由器内部接口开启了arp功能,当路由器内网接口192.168.10.1接收到此ARP请求后,发现192.168.10.99是路由器自身VPN进程创建的一个虚拟IP地址,此时,企业路由器将响应服务器的ARP请求,并通过ARP响应报文告知服务器访问192.168.10.99需要把数据包交给IP地址为192.168.10.1的接口所对应的MAC地址即可访问192.168.10.99。

5、当服务器将数据包交给192.168.10.1后,由路由器内部将数据包发送给VPN进程并由VPN进程转发至192.168.10.99的VPN客户端。


以上内容均为本人对所掌握知识的总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够及时得到大家的指正,大家共同学习,共同进步。


分享到:


相關文章: