Proxy arp(代理 ARP)逻辑图解+实验详解+真机实践验证
代理ARP(Proxy-arp):
- 允许路由器代替其他设备响应 ARP请求,从而让不同子网的主机能够直接通信,即使它们没有配置默认网关。它的核心作用是“欺骗”本地主机,使其误以为目标设备在同一局域网内,从而解决跨子网通信的问题。
使用场景
- 代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的
代理ARP原理
- 当出现跨网段的ARP请求时,路由器将自己的MAC返回给发送ARP广播请求发送者,实现MAC地址代理,最终使得主机能够通信。
eNSP 实操
实验拓扑
- PC1 和 PC2 位于不同子网,默认情况(没有路由)下它们无法直接通信(因为 PC1 不知道如何到达192.168.2.0/24网络)。
- Router 作为网关,开启 Proxy ARP 功能,使得 PC1 和 PC2 可以互相 ARP 查询对方的 MAC 地址。
1、PC1 配置
- IP 地址:10.0.0.1
- 子网掩码:不设置
- 默认网关:不设置(为了测试 Proxy ARP,故意不配网关)
2、PC2 配置
- IP 地址:20.0.0.1
- 子网掩码:不设置
- 默认网关:不设置
3、启动设备后,初次验证通路:是不通的
4、路由器0/0/0接口配置
- interface GigabitEthernet 0/0/0
- ip address 10.0.0.2 255.255.255.0
- arp-proxy enable
- quit
5、路由器0/0/1接口配置
- interface GigabitEthernet 0/0/1
- ip address 20.0.0.2 255.255.255.0
- arp-proxy enable
- quit
6、链路连通性检测
通了
7、查看arp表
8、在路由器上查看arp对应表:
9、wireshark抓包分析ARP(Proxy-arp)数据流程:
- 细心的人可能已经发现了,终端设备PC上的arp表并不是实际的IP+MAC对应,IP而是对应的路由器以太网卡MAC地址
- 这也印证了“欺骗”
10、数据封包交互流程
- PC1发送以自己的MAC为source、目的MAC为全1的广播包
- proxy arp接收广播包,将PC1的广播包替换为以路由器自己以太网0/0/2的MAC替换source mac,目的mac 为全1的广播包
- PC2发送以自己的MAC为source、目的MAC为0/0/2的MAC的单播包
- proxy arp接收单播包,将PC2的单播包替换为以路由器自己以太网0/0/1的MAC替换source mac,目的mac 为PC1的单播包
树莓派 proxy arp 实践
1、硬件要求:
- 包含两个eth口的树莓派开发板(可用usb转eth)
- 两个有线终端
2、拓扑图(仅仅是拓扑参考图,不是ensp操作)
3、开发板设置
配置eth0
- sudo ip addr add 192.168.1.1/16 dev eth0
- sudo ip link set eth0 up
配置eth1
- sudo ip addr add 192.168.2.1/24 dev eth1
- sudo ip link set eth1 up
4、kernel配置临时启用proxy arp功能:
- echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
- echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/proxy_arp
- echo 1 | sudo tee /proc/sys/net/ipv4/conf/eth0/proxy_arp
- echo 1 | sudo tee /proc/sys/net/ipv4/conf/eth1/proxy_arp
5、同网段内连通性检测
- PC2 ping eth1
- PC1 ping eth0
是通的,这是进行实践验证的基础
6、跨网段连通性检测:
不通,抓包验证下
7、PC1 网段以太网口抓包:
- PC1发送arp广播,询问192.168.2.2是谁,得到eth0网卡为source mac地址的arp回复
- eth0 抓包:
PC与eth0相对应
8、PC2网段以太网口抓包:
- eth1转发发送arp单播报文,得到以PC2为source mac的arp回复
9、arp 表查看
- PC1
- PC2
抓包查看proxy arp已生效,只是ping未 reply,未reply是由于windows PC原因,本文不进行拓展