参考: 维基百科: https://en.wikipedia.org/wiki/Proxy_ARP
代理arp: 首先这是一个代理服务。在一个服务器上,一个网卡(有配置ip)会对不和该网卡属于同一网段的arp 请求(广播)响应arp。
该代理服务能够识别到包的目的地址,并把他(接收到arp请求的网卡)的mac作为目的地址的mac。
包直接转发给代理地址后,包就被代理ip所在的网卡(或者tunnel)路由到对应的目的(网卡)。
典型的使用场景1:
- 正在加入一个LAN(广播域) ,比如: 拨号或者vpc连接
假设存在一个lan(广播域),地址段: 192.168.0.0/24 。
分为分为两个地址段
192.168.0.1 – 192.168.0.127---hubA(vlan交换机A)
假设有一台或多台node充当(接入)router。来开启arp代理,响应 192.168.0.128 – 192.168.0.254网段的ip arp请求。
比如 192.168.0.100 想知道 192.168.0.254 在哪里。
假设充当router node 为 192.168.0.10, mac为00:00:00:00:00:10。 即使 192.168.0.128 – 192.168.0.254 对应的网卡根本没有接入hubA, 192.168.0.10 基于arp代理,也会代理响应 192.168.0.254:00:00:00:00:00:10的arp 响应包。
当然,如果后续的包发给了192.168.0.10 ,如果有对应的包处理和响应,那么看起来 192.168.0.254 就像是接入hub的状态。
如果没有包处理机制,那么后续的包都会出问题。
典型的使用场景2:Taking multiple addresses from a LAN
假设一个服务器网卡 10.0.0.2 连接到 网络(10.0.0.0/24),某些应用需要服务器上有多个ip。(比如LB vip 基于网卡子接口维护)。所有ip都来自 10.0.0.0/24 网段。
比如说,这个服务器用了十个ip 10.0.0.230-10.0.0.240, 都维护在lo环回接口上。
那么 10.0.0.2 接收到的关于10.0.0.230-10.0.0.240 的arp请求,都会基于10.0.0.2的mac地址进行响应。
比如 k8s proxy的vip的dummy网卡维护的svc地址,也是该模式。
典型的使用场景3:防火墙
比如防火墙配置了一个ip, 然后将该防火墙防止在(同一个网络的)一(多)个主机前面。
比如主机组在 (10.0.0.0/8) 网段,而proxy-arp防火墙ip为10.0.0.20。
所有目的为10.0.0.0/8的流量都会经过10.0.0.20。而且arp响应都是10.0.0.20对应的mac。
典型的使用场景4:移动ip
Home Agent uses Proxy ARP 为移动节点做代理响应
典型的使用场景5:透明子网网关
两个物理切片共享同一个子网ip,并基于router连接起来, RFC 1027。 应该也是路由器做proxy arp。
典型的使用场景6:冗余
ARP控制技术(协议): 在同一个广播域内提供冗余。L2, Common Address Redundancy Protocol and Virtual Router Redundancy Protocol.
缺陷:
arp代答在同一时刻一般是单点的,这种伪装机制有一定的迷惑性。
如果错误配置会导致arp的dos攻击。 比如 router arp代理 可以接受并响应其他节点的arp请求。可能导致包无法被正确转发,甚至导致流量黑洞。
网友评论