什么是代理ARP(proxy ARP)?

本文介绍了Proxy ARP,它通过主机(通常为路由器)应答ARP请求。以Cisco 2500系列路由器为例,说明了其工作过程,包括ARP请求、应答及主机ARP table和cache的更新。还阐述了其优点,如不影响路由表添加新路由器,也指出增加ARP流量、有安全问题等负面影响。
Proxy ARP

yUmi#sh start
!
Written by yUmis(牛奶咖喱) a.k.a. 红头发
Description 欢迎转po,请保留作者信息
Homepage http://www.show-tym.com
Jun.27th.2004
!

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

proxy ARP是如何工作的?
设备需求:
Cisco 2500系列的rourer
Cisco IOS Release 12.2(10b)

此主题相关图片如下:
按此在新窗口浏览图片
假设在如上图的一个环境中,位于子网A的主机A(172.16.10.100)需要发送packet到位于子网B的主机D(172.16.20.200)上去.于是主机A将发送ARP请求给D.当然,为了能够达到主机D,就需要知道主机D的MAC地址.因此,主机A在它位于的那个子网A上广播ARP请求,大致内容如下图:

此主题相关图片如下:
按此在新窗口浏览图片
当然router的e0口也接收到该广播,但是router默认不会转发广播的,所以该ARP请求仍然到达不了主机D.但是router却知道主机D位于另外一个子网B.于是router应答自己的MAC地址给主机A,如下图:

此主题相关图片如下:
按此在新窗口浏览图片
注意如上图,源IP地址为主机D的IP地址,但是源MAC地址是router e0口的MAC地址.这就是发送给主机A的proxy ARP应答(代理人,中间人).这样的proxy ARP应答一般是作为unicast发送给请求者(主机A)
主机A收到这个proxy ARP应答以后,开始更新自己的ARP table,如下图:

此主题相关图片如下:
按此在新窗口浏览图片
于是从现在开始,主机A将不把要前往主机D的packet通过router e0口(00-00-0c-94-36-ab)转发,因为router知道如何到达主机D,它会把packet转发给主机D
另外,位于子网A的主机的ARP cache,如下图:
此主题相关图片如下:
按此在新窗口浏览图片
注意上图,3个IP地址映射到1个MAC地址(router e0口的MAC地址)上,这就说明正在使用proxy ARP


Cisco的router的接口应该配置成能够接收和应答proxy ARP,当然这个默认是启用的,不过可以使用一些命令来关闭这个功能,命令如下:
Router# config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int e 0
Router(config-if)#no ip proxy-arp
Router(config-if)#^Z
Router#
要再次启用的话,在接口配置模式下使用ip proxy-arp命令即可

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

proxy ARP带来的哪些负面影响?
1.增加了某一网段上ARP流量
2.主机需要更大的ARP table来处理IP地址到MAC地址的映射
3.安全问题,比如ARP欺骗(spoofing)
4.不会为不使用ARP来解析地址的网络工作
5.不能够概括和推广网络拓扑

一些参考资料:RFC 925和RFC 1027
Fin
### 代理ARPProxy ARP)的定义、功能及其实现方式 #### 定义 代理ARPProxy ARP)是一种网络技术,允许一个设备(通常是路由器)代表另一个设备来回应ARP(地址解析协议)请求。当主机A想要发送数据给同一子网但不在同一物理网络上的主机C时,连接它们的具有代理ARP功能的设备可以回答该ARP请求[^1]。这种技术通过“善意的欺骗”帮助子网中的计算机到达远程子网,而无需配置路由或默认网关[^2]。 #### 功能 代理ARP的主要功能包括: 1. **实现跨子网通信**:在不支持路由功能的主机之间实现跨子网的通信。例如,一些较旧的网络设备可能没有配置正确的默认网关或者不支持路由协议,但通过代理ARP,这些设备仍然可以和其他子网的设备进行通信[^3]。 2. **简化网络配置**:在某些情况下,使用代理ARP可以简化网络配置。例如,在小型网络扩展过程中,新加入的子网如果暂时不想配置复杂的路由策略,可以利用代理ARP来实现与其他子网的基本通信。 3. **网络过渡方案**:在网络从平面网络结构向子网划分结构过渡阶段,代理ARP可以作为一种过渡手段,使得部分还没有适应新子网划分的设备仍然能够正常通信[^3]。 #### 实现方式 代理ARP工作原理如下: - 在正常的ARP过程中,当主机A想要发送数据给同一子网内的主机B时,主机A会广播一个ARP请求,询问“谁是IP地址为[主机B的IP]的主机的MAC地址?”主机B收到这个请求后,会直接回复自己的MAC地址给主机A。 - 在代理ARP场景中,当主机A和主机C位于不同子网,中间通过路由器连接时,主机A想要发送数据给主机C。主机A会广播一个ARP请求来查找主机C的MAC地址。然而,由于主机A和主机C不在同一子网,主机C无法直接收到这个ARP请求。 - 此时,路由器连接主机A子网的接口收到这个ARP请求后,会代替主机C进行回应。路由器发送一个包含其自身连接主机A子网接口的MAC地址的ARP回复给主机A。这样,主机A就会把数据发送到路由器的这个接口,路由器再根据路由规则将数据转发给主机C。 ```python # 示例代码:模拟代理ARP的响应过程 def proxy_arp_response(source_ip, target_ip, router_mac): arp_reply = { "source_ip": source_ip, "target_ip": target_ip, "mac_address": router_mac, "type": "ARP Reply" } return arp_reply # 路由器接收到ARP请求后,返回自身的MAC地址作为响应 response = proxy_arp_response("192.168.1.10", "192.168.2.20", "00:11:22:33:44:55") print(response) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值