跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Linux系统配置静态ARP绑定 防止局域网ARP欺骗

arp -s 绑定重启失效是因为仅写入内核ARP缓存,未持久化;生产中需通过/etc/network/interfaces(Debian/Ubuntu)或nmcli post-up-command(RHEL/CentOS)实现开机自动绑定,并配合交换机端口安全等措施。 为什么
arp -s
绑定后重启就失效? 因为
arp -s
是临时命令,只写入内核 ARP 缓存,系统重启或网络服务重载后清空。实际生产中必须落盘持久化,否则防不了持续的 ARP 欺骗。 常见错误是只跑一遍
arp -s 192.168.1.1 00:11:22:33:44:55
就以为搞定了,结果几小时后攻击恢复——缓存过期或 DHCP 更新触发了 ARP 表刷新。 绑定前确认目标 IP 确实在线且 MAC 正确:
ping -c1 192.168.1.1 && arp -n | grep 192.168.1.1
静态条目需带
pub
参数才可响应其他主机的 ARP 请求(仅限网关等需要代理应答的场景) 普通终端机一般用
arp -s
+
arp -D
(禁用动态学习)组合,但后者在较新内核中已被弃用,改用 sysctl 控制 如何让静态 ARP 在 Ubuntu/Debian 开机生效? 推荐写进
/etc/network/interfaces
(ifupdown 方式),比 systemd service 更底层、更可靠。NetworkManager 或 netplan 用户需另寻路径(见下节)。 在对应接口段末尾添加
post-up
指令: CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载
auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 post-up arp -s 192.168.1.1 00:11:22:33:44:55 post-up arp -s 192.168.1.254 aa:bb:cc:dd:ee:ff
多条绑定用多个
post-up
,不要合并成一行(shell 解析可能出错) 确保
ifupdown
已安装:
apt install ifupdown
,否则
ifup
命令不存在 测试是否生效:
sudo ifdown eth0 && sudo ifup eth0
,再执行
arp -n
查看 PERM 标记 CentOS/RHEL 8+ 或使用 NetworkManager 的机器怎么处理? NetworkManager 默认忽略
/etc/sysconfig/network-scripts/ifcfg-*
中的
arp
相关指令,也不能直接改内核参数来锁死 ARP 表。稳妥做法是用
nmcli
配置连接级脚本:
nmcli connection modify "System eth0" +ipv4.route-metric 100 nmcli connection modify "System eth0" ipv4.ignore-auto-routes yes nmcli connection modify "System eth0" +ipv4.post-up-command "arp -s 192.168.1.1 00:11:22:33:44:55" nmcli connection down "System eth0" && nmcli connection up "System eth0"
post-up-command
是 NM 1.22+ 支持的特性,旧版本需用
dispatcher
脚本 务必加
ignore-auto-routes
,否则 DHCP 获取的网关可能覆盖静态 ARP 条目 NetworkManager 不会自动执行
arp -D
,如需禁用动态学习,得额外设
sysctl -w net.ipv4.conf.eth0.arp_accept=0
绑定后仍被欺骗?检查这几个关键点 静态 ARP 只防“你主动发包时找错网关”,不防“别人冒充你”。ARP 欺骗检测和防御是两件事。以下情况会导致绑定形同虚设: 目标 IP 对应的 MAC 实际已变更(比如网关设备重换、虚拟机迁移),但本地没更新绑定 —— 静态 ARP 不会自适应 交换机端口安全未开启,攻击者仍可泛洪发送伪造 ARP,导致其他主机缓存污染(你的机器安全了,别人还在中毒) 未关闭本机的
arp_ignore
和
arp_announce
,当收到非本机 IP 的 ARP 请求时,仍可能响应,暴露自身存在 容器或 Docker 网络中,
arp -s
只作用于宿主机 namespace,容器内部需单独绑定或改用 CNI 插件策略 真正健壮的防护要结合交换机端口绑定、DHCP Snooping、以及定期校验
arp -n
输出与可信清单的一致性——静态 ARP 只是其中一环,而且是最容易配错的一环。

相关文章