linux防arp欺骗的核心是阻断非法ip-mac映射传播,须在数据链路层用arptables干预,并辅以静态绑定和主动监控。一、静态绑定网关及关键设备mac;二、用arptables过滤非法arp包;三、定期校验+异常告警;四、禁用冗余arp请求、划分子网、云服务器多ip单独绑定。

Linux 防 ARP 欺骗的核心,是阻断非法 IP-MAC 映射关系的传播,不让伪造的 ARP 响应生效。单靠网络层防火墙(如 iptables)无效,必须在数据链路层干预 —— 关键工具是 arptables,配合静态绑定和主动监控才真正可靠。
一、静态绑定网关与关键设备 MAC(最直接有效)
这是防御基础,让本机拒绝任何关于网关或其他可信设备的 MAC 变更。
- 先确认真实网关 IP 和 MAC:
ip route | grep default获取网关 IP;arping -c 2 网关IP查看 Reply 中的 MAC 地址(例如00:1c:42:xx:xx:xx) - 临时绑定(重启失效):
arp -s 网关IP 网关MAC - 永久生效(推荐):
Ubuntu/Debian:写入/etc/ethers(格式:网关IP 网关MAC),再执行arp -f;
CentOS/RHEL:在/etc/rc.local末尾添加arp -s 网关IP 网关MAC,并确保文件可执行
二、用 arptables 过滤非法 ARP 包(精准拦截)
arptables 工作在内核链路层,能识别并丢弃不符合预设规则的 ARP 请求/响应。
- 安装(CentOS):
yum install arptables -y;Ubuntu:apt install arptables -y - 清空旧规则:
arptables -F - 只允许网关发出的 ARP 响应:
arptables -A INPUT --src-ip 网关IP --arp-op Request -j ACCEPTarptables -A INPUT --src-ip 网关IP --arp-op Reply -j ACCEPTarptables -A INPUT --arp-op Reply -j DROP(拒绝所有其他 ARP 响应) - 保存规则:
CentOS:arptables-save > /etc/sysconfig/arptables;
Ubuntu:arptables-save > /etc/arptables.rules,并配置开机加载
三、定期校验 + 异常告警(增强健壮性)
静态绑定和 arptables 是被动防御,加一层主动检查可快速发现绕过行为。
- 用
arpwatch监控 ARP 表变动:
安装后启动服务(systemctl start arpwatch),它会在 ARP 条目变更时发邮件或写日志 - 写一个简单校验脚本(每5分钟运行):
对比arp -n输出与预设白名单(如网关、DB服务器、DNS服务器);
若发现 MAC 不匹配,自动执行arp -d 网关IP清除缓存,并记录到 syslog - 结合 cron 设置定时任务:
*/5 * * * * /usr/local/bin/check-arp.sh >> /var/log/arp-check.log 2>&1
四、补充建议(提升整体防线)
单一措施总有局限,组合使用效果更稳。
- 禁用不必要的本地 ARP 请求:对仅通信固定设备的接口,可设
sysctl -w net.ipv4.conf.eth0.arp_ignore=1(只响应目标为本机的 ARP) - 避免使用默认网段:若业务允许,将服务器分配到独立子网,缩小 ARP 广播域
- 云服务器特别注意:香港或跨境线路(如 CN2 GIA)常见多 IP 绑定,需为每个业务 IP 单独绑定对应网关 MAC,不能共用同一规则











