西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页 → 安全中心 → 网络安全 → ARP欺骗是怎么发生的:一次广播如何改写了网关的MAC表

ARP欺骗是怎么发生的:一次广播如何改写了网关的MAC表

相关软件相关文章发表评论 来源:本站整理时间:2026/11/3 18:26:43字体大小:A-A+

作者:xiix点击:0次评论:0次标签: ARP欺骗 ARP缓存表 局域网安全 服务器排障 网关MAC地址

  • 类型:服务器区大小:17.2M语言:中文 评分:10.0
  • 标签:
立即下载

先说结论:如果你的服务器出现 SSH 时好时坏、ping 得通但网页打不开、网关的 MAC 地址隔一会儿就变一次这类怪现象,先别急着查防火墙和系统日志,去看一眼 ARP 缓存表。因为同一网段里只要有一台机器不停发 ARP 广播,它就能把别人的 MAC 表项改掉,让流量先经过它再转发出去这就是 ARP 欺骗。ARP 协议从设计之初就没有任何认证机制,任何主机都可以免费"更新"别人的表项,所以这事儿不是谁被黑了,而是协议本身留的口子。

如果你正在处理 ARP 欺骗、网关 MAC 频繁变化这类具体问题,或者需要先找一台线路稳定的机器把测试环境搭起来,可以先看看这家的报价和技术说明:linkcli(海外高防服务器 抗DDoS云主机)

一、ARP 到底在干什么:把 IP 翻译成 MAC

局域网里传数据帧靠的是 MAC 地址,但配置和访问服务器用的是 IP,两者之间需要一个翻译层,这就是 ARP(地址解析协议)。比如你要访问 192.168.1.20,机器先查本地 ARP 缓存表,缓存里没有就会在网段内广播一句"谁是 192.168.1.20",对方回一句"我在,我的 MAC 是 aa:bb:cc:dd:ee:ff",然后本机把这条映射写进缓存,之后的包就直接封装目的 MAC 发出去,不再广播。

这个"先问再记"的机制有两个特点决定了后面所有麻烦:一是表项有生命周期,一般几十秒到几分钟就会过期,过期后要重新问;二是写入表项时不做任何身份校验,谁应答都能被写进去。ARP 缓存表也因此成了可被篡改的对象。

局域网内ARP请求广播与应答的拓扑示意

二、一次广播,是怎么改写了别人的表

把攻击流程拆开看其实很朴素。攻击者想冒充网关,先在自己机器上开启 IP 转发,然后向网段广播一条"我是网关,我的 MAC 是 xx:xx:xx"的应答报文。网段里的机器正在解析到别的 IP 时,收到了这条更高优先级的应答,就用攻击者的 MAC 覆盖了原本网关的表项。这个覆盖不需要任何权限,不需要漏洞,攻击者甚至不需要主动扫描,只要等着就行。

典型表现是:受害主机把去往外网的包发给了攻击者,攻击者转发出去的同时做抓包,用户的登录口令、后台表单、数据库连接串全都一览无余。从外面看网络完全正常,只是访问速度慢了一点点、偶尔丢几个包,这种"低烈度"的中间人比暴力破解难发现得多。

交换机端口与网线特写,ARP广播在物理链路上传播

三、除了冒充网关,还有两种常见形态

一是 ARP 缓存投毒 flooding,也就是不停地刷 ARP 广播,把网关的表项冲掉,让全网机器都去问"网关到底是谁",带宽被广播包吃满,表现出来就是 ping 丢包率飙升、网页加载卡成幻灯片,运维往往误判为带宽不够或线路问题。二是 ARP 欺骗配合 DNS 劫持:把网关和 DNS 服务器的表项一起改掉,用户输入网址时被带到自己的页面,配合钓鱼模板完成账号窃取。

还有一种容易被误判的情况:同网段内有大量云主机或容器在做实例迁移、DHCP 地址变更、bond 聚合切换,每次切换都会触发一轮 Gratuitous ARP(免费 ARP),用来告诉全网"这个 IP 现在归我"。多数时候这是正常行为,但如果密集发生,就会让某些老旧内核的机器 ARP 缓存反复失效,表现成连接间歇性中断。

一台服务器向整个网段广播ARP请求的抽象示意

四、我在服务器上怎么抓现行

第一步看缓存表:ip neigh show 或 arp -n。重点看网关那一条,如果它的 MAC 是本机之外的陌生地址,多半有人冒充。正常情况下同一网段的网关 MAC 应该长期稳定,除非有设备迁移或聚合切换。

第二步抓包看有没有异常应答:tcpdump -i eth0 -nn 'arp' 。如果发现同一 IP 反复收到来自不同 MAC 的应答,那就是典型的欺骗特征。第三步做对比:用 arping -I eth0 -c 3 192.168.1.1 主动问一次网关,几个来回后对比返回的 MAC 和缓存表里的 MAC 是否一致;不一致基本可以确定有人在中间动手脚。

第四步是核对网卡层面的异常:ip -s link show eth0 里如果广播包的 RX 计数远高于正常量,说明网段里存在大量 gratuitous 广播,很可能就是投毒流量。用 ss -s 顺手看一下连接状态,如果 SYN floods 类的异常握手很多,也要考虑 ARP 伪造配合 SYN flood 的组合攻击。

运维人员在机房终端前排查网络问题的现场

五、怎么防:静态绑定加检测,缺一不可

最直接的办法是把关键对端写死。ip neigh replace 192.168.1.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0,或者在交换机上做端口安全(port security)和静态 ARP 表项,让攻击者即使发了广播也改不动。这类绑定在同网段的裸金属和私有云环境里很实用。

其次是内核侧的忽略策略。设置 arp_ignore=1、arp_announce=2 可以让主机只接受自己接口上的 ARP 应答,并且优先用自己网段地址发布,避免被冒名改写;云环境还可以考虑 arp_filter=1 做反向路径校验。这些参数改完要用 sysctl -p 生效,并写进配置文件,否则重启就没了。

最后是监控。ARP 表项变化纳入监控告警,网关 MAC 一变就报警;交换机上开启 DHCP snooping 和动态 ARP 检测,服务器侧用 arping 定期做网关存活自检。真到了已经被劫持的环境,更换底层网络、清理 ARP 表、给关键服务套上 TLS,只当最后手段因为只要链路还在对方手里,明文流量就一直在漏。

回过头看,ARP 欺骗之所以让人头疼,不在于它有多高明,而在于它完全合规、没有任何报错。上面这几条命令都很轻量,出问题时一条条跑一遍,往往十分钟就能定位到是"真有人骗我"还是"机器自己在换 IP"。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶顶
    • 1 难过难过
    • 5 囧囧
    • 3 围观围观
    • 2 无聊无聊

    发表评论

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲