关键在于隔离、可控、可逆:须用VMware/VirtualBox搭建Kali(攻击机)、Ubuntu(靶机)、pfSense(网关)组成的仅主机模式虚拟网络(如192.168.100.0/24),关闭防火墙并创建快照;通过arpspoof双向欺骗验证ARP缓存被篡改及中间人效果;再以静态ARP绑定、arpwatch监控和arptables内核过滤构建三层防御体系。

在 Linux 环境下测试 ARP 欺骗与验证防御效果,关键在于**隔离、可控、可逆**——不能直接在生产网络操作,必须用虚拟环境模拟攻击链路,并同步部署检测与响应机制。下面分三块讲清楚怎么做。
一、搭建安全可控的测试环境
真实网络中做 ARP 测试违法且危险,务必使用虚拟机隔离网络:
- 用 VMware 或 VirtualBox 创建三个虚拟机:Kali(攻击机)、Ubuntu(靶机)、pfSense 或另一台 Linux(模拟网关)
- 全部桥接到一个仅主机模式网络(如 VMnet2),子网设为 192.168.100.0/24,确保彼此能 ping 通但与外网断开
- 关闭所有虚拟机的防火墙:
sudo systemctl stop firewalld或sudo ufw disable - 为每台虚拟机创建快照——误操作后一键回滚,避免反复重装
二、触发并验证 ARP 欺骗行为
先确认基础通信正常,再模拟攻击,观察现象是否符合预期:
- 在 Kali 上查网关 IP 和 MAC:
ip route | grep default→ 得到网关如 192.168.100.1;再用arp -n | grep 192.168.100.1记下原始 MAC - 执行欺骗命令(需开启 IP 转发):
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward,然后运行:sudo arpspoof -i eth0 -t 192.168.100.2 192.168.100.1(欺骗靶机)sudo arpspoof -i eth0 -t 192.168.100.1 192.168.100.2(欺骗网关) - 回到靶机 Ubuntu,再次执行
arp -n | grep 192.168.100.1——若 MAC 地址变成 Kali 的,说明欺骗成功 - 此时靶机访问外网会经过 Kali,可在 Kali 上用
tcpdump -i eth0 port 80抓到 HTTP 请求(不加密流量),验证中间人效果
三、部署并验证 ARP 防御手段
防御不是只装个工具就行,要组合使用静态绑定、监控告警和规则拦截:
-
静态 ARP 绑定(治本但难运维):在靶机执行
sudo arp -s 192.168.100.1 00:11:22:33:44:55(填真实网关 MAC),之后任何伪造响应都会被忽略 -
arpwatch 实时监控(推荐首选):在网关或独立监控机上安装
sudo apt install arpwatch,运行:sudo arpwatch -i eth0 -n 192.168.100.0/24;当某 IP 对应的 MAC 突然变更,它会记录日志甚至发邮件告警 -
arptables 主动拦截(内核级防护):在靶机或网关上限制 ARP 响应来源:
sudo arptables -A IN -s ! 192.168.100.1 -d 192.168.100.1 -j DROP(只允许真实网关发给自己的 ARP 包) -
arping 辅助排查:发现异常时,快速扫描确认设备在线状态:
arping -c 3 192.168.100.1,看响应 MAC 是否一致
整个过程不需要高深编程,核心是理解 ARP 缓存如何被覆盖、哪些环节可以卡住伪造包。真正有效的防御,从来不是单点工具,而是“静态绑定 + 实时监控 + 内核过滤”三层落地。


















