在 CentOS 上排查 ARP 欺骗(ARP Spoofing),通常不需要专门的“Sniffer”,而是结合抓包 + ARP 表分析。下面给你一套实战可操作的方法,从简单到进阶。
arp -n
# 或
ip neigh
重点看:
示例(异常):
192.168.1.1 aa:bb:cc:dd:ee:ff eth0
192.168.1.2 aa:bb:cc:dd:ee:ff eth0
192.168.1.3 aa:bb:cc:dd:ee:ff eth0
➡ 很可能是 ARP 欺骗。
ip neigh show 192.168.1.1
多次执行,如果 MAC 地址 不断变化 → 高度可疑。
tcpdump -i eth0 arp -n
关注:
示例异常:
ARP, Reply 192.168.1.1 is-at aa:bb:cc:dd:ee:ff
ARP, Reply 192.168.1.1 is-at 11:22:33:44:55:66
➡ 明显 ARP 欺骗
tcpdump -i eth0 arp -w arp.pcap
用 Wireshark 打开分析更直观。
yum install wireshark
wireshark
过滤条件:
arp
重点看:
yum install arpwatch -y
systemctl start arpwatch
systemctl enable arpwatch
tail -f /var/log/messages
# 或
journalctl -u arpwatch -f
异常日志示例:
arpwatch: flip flop 192.168.1.1 aa:bb:cc:dd:ee:ff -> 11:22:33:44:55:66
➡ 明确表示 ARP 欺骗或异常
arping -I eth0 192.168.1.1
正常情况下:
如果:
➡ 基本确定存在 ARP 欺骗
| 现象 | 是否异常 |
|---|---|
| 一个 MAC 对应多个 IP | ✅ 异常 |
| 网关 MAC 频繁变化 | ✅ 异常 |
| 无请求的 ARP Reply | ✅ 异常 |
| 大量 Gratuitous ARP | ✅ 异常 |
arp -s 192.168.1.1 00:11:22:33:44:55
⚠️ 临时生效,重启失效
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
✅ 最有效的方法(企业环境)
1. ip neigh
2. tcpdump arp
3. arpwatch
4. arping 网关
如果你愿意,可以告诉我:
我可以给你更精确的排查方案或写自动化检测脚本。