必须持久化、精确到网卡并配合内核防护,否则重启失效或被DHCP覆盖;推荐nmcli post-up-command(NM≥1.22)绑定,辅以ip neigh show验证及arp_ignore等内核参数加固。

要在 Linux 上真正防住局域网 ARP 欺诈攻击,静态 ARP 绑定不能只执行一次 arp -s 就完事。必须做到三点:条目持久化、绑定精确到网卡、配合内核防护机制。否则重启后失效,或 DHCP 更新时被覆盖,甚至仍可能被伪造请求绕过。
用 nmcli 实现网卡级持久绑定(推荐)
适用于使用 NetworkManager 管理网络的现代发行版(如 RHEL 8+/Ubuntu 20.04+),要求 NM 版本 ≥ 1.22:
- 确认版本:
nmcli --version,低于 1.22 建议升级或改用 systemd 方案 - 为指定连接添加静态条目(每条单独命令):
nmcli connection modify "System eth0" +ipv4.post-up-command "arp -s 192.168.1.1 00:11:22:33:44:55"nmcli connection modify "System eth0" +ipv4.post-up-command "arp -s 192.168.1.254 aa:bb:cc:dd:ee:ff" - MAC 地址必须用冒号分隔(
aa:bb:cc:dd:ee:ff),不能用短横线 - 禁用自动路由干扰:
nmcli connection modify "System eth0" ipv4.ignore-auto-routes yes并设低优先级:nmcli connection modify "System eth0" ipv4.route-metric 100
手动验证是否真正锁定
别只看 arp -n 输出,它不显示绑定设备。关键检查点:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 运行
ip neigh show dev eth0,确认目标 IP 条目含 PERMANENT 且dev eth0字段准确 - 主动探测:
arping -c 2 -I eth0 192.168.1.1,返回 MAC 必须与你绑定的一致 - 模拟攻击测试:在另一台机器上运行
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100后,再查arp -n | grep 192.168.1.1—— MAC 不应改变
同步开启内核级防护(必不可少)
仅靠静态绑定无法拦截未请求的伪造响应。必须设置以下参数并写入 /etc/sysctl.conf 持久化:
-
net.ipv4.conf.eth0.arp_ignore = 1:只响应发给本机 IP 的 ARP 请求 -
net.ipv4.conf.eth0.arp_announce = 2:优先用最佳本地地址应答,避免多地址混淆 -
net.ipv4.conf.eth0.rp_filter = 1:启用反向路径过滤,丢弃源地址不可达的入包 - 生效命令:
sudo sysctl -p;若需全局生效,可将eth0替换为all,但建议按接口精细控制
备选方案:systemd 服务方式(兼容旧系统或自定义需求)
当 NetworkManager 不可用或需更高可控性时:
- 新建脚本
/usr/local/bin/static-arp.sh,内容为:#!/bin/baship neigh replace 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanent - 创建 service 文件
/etc/systemd/system/static-arp.service,确保在network-online.target之后启动 - 启用:
sudo systemctl daemon-reload && sudo systemctl enable --now static-arp.service

















