1) 什么是ARP代理?
路由器收到ARP Request时,若发现查询的目的IP地址在不同子网,路由器会扮演代理的ARP的角色,代为回答,告诉查询者它所要做的MAC地址 (用的是之间接口的MAC地址)
2)为什么要有ARP代理?
路由器的一个重要功能是把局域网广播包限制在该网内,不让扩散,否则会造成网络风暴。ARP Request是个广播包,它询问的对象若在同一个局域网内,就会回答。但如果查询对象不在同一个局域网,那怎么办呢?为了解决这个问题,路由器就提供一个服务:代理ARP.
3) 还有什么方法来解决跨局域网的地址查询?
若主机配置了默认网关,在查询MAC地址的对象位于局域网之外的时候,可以把查询任务交给默认网关。
4) 什么情况下用ARP代理?
网络中主机、路由器都有ARP cache. 主机通常配置了默认网关,它们会用默认网关查询局域网外的MAC地址。路由器在需要查询远程网段里的MAC地址时,与其相连接的路由器,在收到ARP Request时就会扮演代理ARP的角色。
我们用一台路由器 和两台PC来进行路由器接口代理ARP 的实验来探究具体过程:
由于路由器隔离广播域不能设置同一网段因此我们配置不同网段的网关
配置路由器IP地址
此时我们用pc1 ping pc2 是不通的
因为华为路由器在默认情况下端口并没有开启代理ARP
我们在g0/0/0端口开启ARP代理
再次ping pc2发现可以连通
进行抓包分析
分析可得 pc1 发送ARP报文进行广播目标地址为全 f,源地址为0/0/0的端口MAC地址
pc2发送ARP报文进行广播目标地址为全 f,源地址为0/0/1的端口MAC地址
获得pc2的网关端口MAC
pc1发送ICMP请求报文 目标地址为0/0/0的端口MAC, 源地址为pc1的MAC地址
pc1收到ICMP响应报文 目标地址pc1的MAC地址, 源地址为0/0/0的端口MAC
pc2发送ICMP请求报文 目标地址为0/0/1的端口MAC, 源地址为pc2的MAC地址
pc2收到ICMP响应报文 目标地址pc2的MAC地址, 源地址为0/0/1的端口MAC
总结:
路由器隔离了广播域,当两个不同网段的pc想要通信时会使用默认网关来查询外网的MAC地址,而路由器通过端口配置网关为每个端口提供不同MAC地址来进行通信,这样路由器在隔离了广播域的同时完成不同网段的通信 。在通信时不直接使用pc的MAC地址而是使用端口MAC进行代理发送 这一过程就是代理ARP