linux绑定静态arp需四步:用ip neigh replace ip lladdr mac dev 接口 nud permanent即时生效;通过if-up.d脚本或nmcli持久化;启用arp_ignore=1、arp_announce=2、rp_filter=1内核防护;最后用arping和arpspoof实测验证。

Linux 中绑定静态 ARP 记录,核心是让系统只认你指定的 IP-MAC 对,不接受任何动态更新。光执行一条命令不够,得兼顾即时生效、重启保留、设备限定和内核防护四个关键点。
用 ip neigh 添加永久条目(推荐)
比传统的 arp -s 更可靠,能明确指定网卡和状态:
- 命令格式:
sudo ip neigh replace <ip> lladdr <mac> dev nud permanent</mac></ip> - 例如绑定网关:
sudo ip neigh replace 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e dev eth0 nud permanent - 执行后立即生效,
ip neigh show dev eth0中对应条目会显示 PERMANENT - 注意:MAC 地址必须准确,输错会导致目标不可达;接口名(如 eth0、ens33)不能省略或写错
确保重启后依然有效
临时命令在重启、网络服务重载后就失效,必须做持久化:
- 方法一(通用):写入
/etc/network/if-up.d/arp-static脚本,在网卡上线时自动执行。内容示例:#!/bin/sh<br>ip neigh replace 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e dev eth0 nud permanent
保存后加执行权限:sudo chmod +x /etc/network/if-up.d/arp-static - 方法二(NetworkManager 环境):用
nmcli绑定到连接,支持 post-up-command:nmcli connection modify "Wired connection 1" +ipv4.post-up-command "ip neigh replace 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e dev eth0 nud permanent"
再重载连接:nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
配合内核参数堵住其他攻击路径
只绑 ARP 条目,不关内核防护,攻击者仍可能绕过。以下三项建议启用:
-
net.ipv4.conf.all.arp_ignore = 1:只响应目标为本机 IP 的 ARP 请求 -
net.ipv4.conf.all.arp_announce = 2:优先使用与目标 IP 同网段的本地地址应答 -
net.ipv4.conf.all.rp_filter = 1:开启反向路径过滤,丢弃源地址不合理的包 - 临时生效:
sudo sysctl -w net.ipv4.conf.all.arp_ignore=1
永久生效:写入/etc/sysctl.conf并运行sudo sysctl -p
验证是否真正防住欺骗
别只看 ip neigh show 有 PERMANENT 就放心,要实测抗干扰能力:
- 用
arping -c 2 -I eth0 192.168.1.1查返回的 MAC 是否和你绑定的一致 - 在另一台机器上运行
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100模拟攻击,再查ip neigh show 192.168.1.1—— MAC 地址不应变化 - 如果绑定后 ping 不通,先检查接口名、MAC 是否正确,再确认内核参数未冲突











