
相信不少做运维或者在公司管网络的朋友都碰到过这种场景办公室某台电脑突然上不了网微信还能发网页就是打不开重启交换机也不管用。你跑过去一看IP能拿到路由器也通但就是时好时坏。最后实在没招了随手抓个包看了一眼——好家伙局域网里全是重复的ARP应答报文。这种问题直到2025年依然频繁出现原因很简单ARP攻击门槛低、隐蔽性强而很多人对它的记忆还停留在“老掉牙的攻击手法”。这篇就好好聊聊ARP攻击与防御我会从协议原理、数据包特征讲到三个关键防御步骤覆盖公司局域网和个人家用设备两个场景。适合谁看网络管理员、运维工程师以及家里路由器上总是被蹭网或者设备莫名掉线的普通用户。不是说教你当黑客而是把怎么防、怎么查、怎么应急这件事讲透。看完你至少能回答这些问题为什么ARP能骗人攻击者是怎么做到让整个网段都卡的我作为普通用户怎么用一条命令就能确认自己是不是被ARP欺骗了1. ARP 攻击到底是什么原理、细节包与攻击手法1.1 先把协议说透无状态、不认证的设计ARP全称是Address Resolution Protocol地址解析协议。它干的事情其实特别简单在同一个局域网内把IP地址翻译成MAC地址。你可以把它理解成小区门口的问路牌——我想找202室的人但我不知道202室长什么样子于是我在楼下喊了一声“202室在吗我是来找你的”然后202室的人自己探头说“我在这儿”。这就是ARP的工作方式。问题在于这个“问路牌”在设计之初并没有加入任何身份验证。任何一台主机都可以主动告诉别人“我是某个IP我在某个MAC地址上”收到这条消息的其他主机也不检查真假直接就把这个映射关系写进自己的ARP缓存表里。这不就相当于有人随便喊了一嗓子“我才是202室的主人”然后整栋楼都信了ARP的报文分两种基本类型ARP请求和ARP应答。请求报文的目标MAC地址是全FFFF.FFFF.FFFF也就是广播要发给同一个广播域里的所有设备应答报文则一般是单播直接回给请求者。此外还有一种叫免费ARPGratuitous ARP的报文发送方主动广播一个应答说自己占用某个IP通常用于IP地址冲突检测和网卡更换后的地址更新。这个机制本身是好的但攻击者也特别喜欢用它来投毒因为免费ARP连被动等请求都不需要直接主动广播就行。1.2 攻击的三种典型形态欺骗、洪泛、中间人理解了ARP协议的缺陷攻击手法就很好推了。结合我在实际网络里排查过的案例最常见的是下面这三种形态。第一种是ARP缓存欺骗也叫ARP缓存投毒。攻击者不断发送伪造的ARP应答包声称“网关IP对应的MAC地址是我”。网络里的电脑收到之后更新缓存于是原本要发往网关的数据全部错发给了攻击者的设备。攻击者在收到数据后可以再转发给真网关保证通信不断这就是后面的中间人攻击也可以直接不转发造成整台设备断网。第二种是ARP洪泛。攻击者大量发送构造的ARP报文把交换机CPU打满或者把交换机的MAC地址表塞爆。交换机一旦学不到正确的MAC地址就会跟集线器一样进行泛洪所有端口的数据互相都能收到。表现就是整个局域网的延迟暴增所有设备都像网速突然变慢了一样。这种攻击对性能的破坏有时候比单纯欺骗更让人抓狂因为你根本不知道是哪台设备在发包。第三种是双向欺骗。这个更狠攻击者不仅欺骗受害者还欺骗网关。它同时告诉受害主机“我是网关”告诉网关“我是受害者的IP”。这样一来受害主机和网关之间的所有通信都要经过攻击者的设备中转。攻击者不仅能观察流量还能直接修改内容如果你用了不加密的HTTP、FTP或者TELNET账号密码几乎等同于裸奔。即便你用的是HTTPS一旦出现证书异常用户又习惯性点了继续访问那也一样白搭。1.3 攻击面与后果断网只是开胃菜很多人以为ARP攻击的后果就是断网修好网络就完事了。实际影响面要广得多。对公司局域网来说ARP攻击能直接破坏整个广播域的正常通信。一个办公室几十台电脑全部卡顿、掉线生产业务停摆。更麻烦的是很多老旧设备不支持DAI和端口安全这些高级特性管理员只能一台台去排查耗时又耗力。对个人设备来说受害者的真实感更直接——网银登录页突然打不开游戏延迟忽高忽低路由器后台显示一堆不认识的设备。如果家里的WiFi密码被破解攻击者进入内网后同样可以发起ARP欺骗你访问网页时弹出的那些异常广告和钓鱼页面很可能就是中间人改过的内容。另一个常被忽略的后果是ARP攻击往往是更大攻击的前奏。攻击者通过ARP欺骗获得了内网流量之后先抓取账号密码和文件传输内容再横向移动去扫描其他主机。所以处理ARP攻击时不能只想着“把网络搞通”还要当成一次安全事件来对待评估数据泄露的范围。2. 防御第一步主动加固把攻击挡在门外2.1 先知道谁是你的网关收集真实 MAC 信息做防御之前最重要的一件事是搞清楚“正常状态”长什么样。如果你连网关的真实MAC都不知道那后面做静态绑定、做异常检测全都没有参照物。实操上的做法是在一个网络状况良好的时间段先把网关的MAC地址记录下来。Windows系统用ipconfig /all查看默认网关的IP再用arp -a查看对应的MAC地址。Linux和macOS用ip neigh show或者老的arp -n。如果是公司网络还可以登录交换机和核心路由器用show arp这类命令直接查询这个信息是最权威的。我建议把“IP-MAC-设备位置-记录时间”做成一张表这不是什么高深操作但在后面排查攻击时有奇效。你手上有了这份基线数据第二次再看到ARP表一眼就能看出有没有条目被改了。2.2 静态绑定Windows、Linux/国产系统里的固化方法知道了真实的网关MAC就可以做静态ARP绑定。作用就是告诉操作系统这个IP的MAC地址就是它不接受其他任何ARP应答的更新。这一步能直接免疫绝大多数ARP欺骗攻击。Windows下执行两个命令arp -d 192.168.1.1 arp -s 192.168.1.1 34-e6-d7-aa-bb-cc先删除旧条目再添加静态条目。注意arp -s需要管理员权限绑错MAC会导致无法上网绑之前一定确认清楚。而且要记住一点Windows的静态ARP条目在重启后会失效这就成了很多人的坑。解决方案是写一个启动脚本或者计划任务开机后自动执行绑定命令。脚本内容很简单就一行但你要保证每次开机都跑一次。Linux和各类国产桌面系统里的做法类似arp -s 192.168.1.1 34:e6:d7:aa:bb:cc但这种方式同样是临时的重启就丢了。要想长期生效可以把记录写入/etc/ethers然后在启动脚本里执行arp -f或者在网络配置里写静态ARP项。不同发行版的配置方式差别挺大Ubuntu可以参考netplan和systemd-networkd的配置方式银河麒麟这类国产桌面系统也可以用脚本方式固定。我更推荐在路由器、三层交换机这些网关设备上做静态ARP绑定一台设备配完整个网段都受益。虽然这种方式在大型网络里手动维护成本高但在小网络、家庭网络里非常实用。家庭用户的路由器后台一般都有“静态ARP绑定”或“IP与MAC绑定”选项填上后就可以防止别人伪造网关。2.3 交换机侧加固端口安全、DAI 与 DHCP Snooping如果你的网络环境里有可管理交换机那防御手段就能从单台设备升级到整网级别。这三种技术建议组合使用。端口安全Port Security的作用是限制一个物理端口上能够学习的MAC地址数量。比如设置某个端口最多只能学习3个MAC地址一旦攻击者试图在这台电脑的接口上不断伪造新的MAC地址交换机会直接丢弃报文或者把端口置为err-disable。这条可以防住ARP洪泛、MAC洪泛这类需要大量伪造源MAC的攻击。DAIDynamic ARP Inspection动态ARP检测是更直接防ARP欺骗的手段。它的核心思路是交换机对收到的ARP报文进行校验如果ARP报文里的IP-MAC映射关系不在合法绑定表里就丢弃。这个绑定表一般来自DHCP Snooping——也就是说只有DHCP服务器分配的IP-MAC组合才会被认为是合法的。配置上以常见的Cisco风格命令为例ip dhcp snooping vlan 10 ip arp inspection vlan 10 interface GigabitEthernet0/1 ip arp inspection trust上面把接到路由器、其他交换机的上行接口设为信任接口把接入终端的接口保持为非信任接口。DAI会为非信任接口收到的ARP报文建立检查点。需要说明的是不同厂商的命令和参数差异比较大如果你用的是华为、H3C或者锐捷设备要以对应产品的手册为准。还有个容易忽视的点如果内网大量设备使用静态IP而不是DHCP那DAI就看不到DHCP绑定记录需要额外手工配置IP-MAC绑定关系。这套组合做下来可以说把ARP攻击从源头就摁住了。但代价是网络复杂度上升适合有一定技术能力的企业网络普通家庭用户没有可管理交换机就老老实实做网关静态绑定加上后面的检测手段。3. 防御第二步快速发现攻击别等断网才反应3.1 手工体检ping、arp -a 和网关 MAC 对账很多人发现ARP攻击是因为网络已经断了。但被动等待断网才排查付出的代价往往更大。比较好的习惯是定期做一次几秒钟的手工体检尤其在公司网络里可以每周做一次。方法是先ping一下网关正常情况下延迟应该是几毫秒到几十毫秒丢包率接近零。如果ping网关有规律地丢包、延迟忽高忽低先不要急着怪电信运营商多半是二层出了问题。然后执行arp -a找到网关对应的条目和之前记录的基线MAC地址对账。只要MAC不一样基本就实锤被ARP欺骗了。这里有一个细节如果你已经被攻击ARP缓存里的网关MAC可能已经指向攻击者。所以在做对账的时候别只看一条记录最好多观察几次。有些攻击工具会持续发送伪造的免费ARP你隔几分钟再检查一次可能发现网关条目还是错的。如果攻击工具只是短暂投毒下一次ARP请求又会把它刷新成真实地址这种情况下就要靠抓包来确认了。3.2 Wireshark 抓包让垃圾 ARP 报文现形确认网段内有没有ARP攻击最直观的方法是抓包。打开Wireshark选择一个内网网卡过滤条件直接输入arp等待几十秒。正常网络里ARP报文是非常少的只有设备上线或者IP地址变化时才会冒出来几条。如果你看到屏幕上飞速滚动的全是ARP包那基本不用怀疑网络里一定有人在搞事。进一步用过滤条件做分析arp.opcode 1只看ARP请求arp.opcode 2只看ARP应答arp.src.proto_ipv4 192.168.1.100只看来自某个IP的ARP报文arp.src.hw_mac xx:xx:xx:xx:xx:xx只看来自某个MAC的ARP报文判断攻击的要点在于三点一是看数量每秒几十上百个ARP包绝对是异常二是看源MAC如果大量报文的源MAC是同一块网卡但它声称的源IP却在不断变化这是典型的扫描或洪泛三是看IP和MAC的映射关系同一时刻有多台设备声称自己拥有网关IP这就是欺骗。有个容易踩的坑得提醒一下Wireshark只能抓到本机所能看到的流量。如果你的电脑接到一台普通的傻瓜交换机上可能抓不到同一台交换机其他端口之间的攻击报文。想看到全局视角要么把分析电脑接到汇聚层交换机上把某个VLAN的流量镜像过来要么在网关设备上做流量镜像。否则你抓了半天什么都没抓到不代表内网是干净的。3.3 轻量监控与告警个人设备怎么自动盯手工体检和抓包适合应急场景但日常运维里不能每天都手动看人总会忘。专门上企业级安全平台当然好但不是所有人都有这个预算。我建议你哪怕用最轻量的方式也把监控做起来。一个很朴素的办法是写一个脚本定时执行arp -a检查网关MAC发现和预期不一致就记录并告警。Windows环境下用批处理和PowerShell都能实现。简单到可以这样$gateway 192.168.1.1 $expectedMac 34-e6-d7-aa-bb-cc $line (arp -a | Select-String $gateway).ToString() $currentMac ($line -split \s)[1] if ($currentMac -ne $expectedMac) { Write-Output $(Get-Date) ARP异常: $currentMac arp_alert.log }当然这只是个演示用的骨架实际用可以把判定结果通过邮件、微信机器人推消息等发出来。有朋友会问这不还是事后发现吗确实静态绑定已经挡住了大部分谎言脚本的作用是作为独立运行的第二道保险在静态绑定失效或者配置被改的时候还能帮忙盯哨。如果不想写脚本还有一条更省事的路在局域网里的关键设备上开一个轻量级入侵检测工具或者干脆利用路由器自带的日志功能。现在很多家用路由器后台会记录ARP表变动和DHCP日志虽然分析能力有限但总比两眼一抹黑强。4. 防御第三步事发之后的应急处置与追踪4.1 应急响应顺序先保业务再抓证据真的遇到ARP攻击很多人的第一反应是找工具反击或者把交换机重启一遍。我劝你冷静处置顺序比处置速度更重要。一上来就乱操作很容易把证据破坏甚至导致更大范围的业务中断。我的习惯是四步走。第一步确认影响面。先看是只有一台电脑上不了网还是整个VLAN都卡这决定了你优先处理的是终端还是汇聚设备。第二步最小化隔离。找到嫌疑最大的那台设备对应的交换机端口直接断开这个端口或者拔线。注意拔线之前先记住端口编号和对应位置后面还要靠这个定位。第三步保留现场数据。在断开的设备上或者抓包里保存ARP日志、Wireshark抓包文件和交换机日志这些是追查来源和复盘的关键证据。第四步恢复业务。如果一台设备隔离之后网络恢复正常那攻击面基本就确定了接下来处理这台设备本身。这套流程的核心是避免“把领导骂一顿、重启全网”的粗暴做法。你只有一步步来才能知道问题出在哪个环节。4.2 定位恶意主机从交换机 MAC 表入手如果攻击者隐藏在网络里定位它的物理位置就成了重头戏。最简单的办法是登录核心交换机查看MAC地址表show mac address-table这个表会列出当前交换机学习到的所有MAC地址以及对应的端口。假设你从抓包里已经拿到了攻击者网卡的MAC地址直接在MAC地址表里搜索这个地址交换机就会告诉你它连在哪个端口上。这个端口对应的信息线标签、面板接口往往就能锁定到某一台物理设备或者某个工位。如果攻击者修改了自己的MAC地址每次发包都换一个那定位就麻烦一点。这时候要结合DHCP服务器的租约记录查看某个时间段内哪些IP分配给了哪些设备的MAC地址从中找规律。还有一种思路是缩小范围在Wireshark的统计菜单里查看“协议分级统计”或者按MAC地址做统计把发送大量ARP包的地址挑出来再看它是否频繁变化。无线网络里的定位就更有意思些因为一台终端可能会在不同AP之间漫游。你可以登录无线控制器查看关联终端的MAC和信号强度锁定终端的物理区域。如果WiFi密码已经被攻击者获取对方可能只是蹭网用户隔着一两堵墙依然能发起攻击这时候把SSID密码改掉、开启MAC白名单往往立竿见影。4.3 事后收敛与复盘清单找到并隔离攻击源不等于事情结束了。自助者天助复盘这件事你得认真做一遍。我把常用检查项整理成一张清单每次处理完ARP事件后逐项打勾受害者电脑的ARP缓存是否已经刷新是否重新绑定正确网关网关设备上是否添加了静态ARP绑定防止再次被欺骗所有机器的操作系统、网卡驱动、补丁是否更新到最新攻击源设备是否做了全盘杀毒和木马清理确认不是被远控操纵的傀儡内网关键账号、明文传输的服务FTP、TELNET、HTTP后台是否强制改密并切换为加密协议涉及敏感数据的设备是否做了流量审计确认有没有发生数据外传交换机的端口安全、DAI、日志功能是否已开启这里面最容易被忽略的是“攻击源设备自身的安全状态”。很多ARP攻击并非攻击者特意找上门而是某台电脑中了一个下载器木马被远控当肉机使用根本没有人坐在那台电脑前操作。所以排查攻击源时不光是拔线就完事还要对这台设备做安全扫描和清理否则就算你网络加固得再好只要机房角落里那台没人理的旧电脑还插着网线早晚还会变成下一个发射点。5. 常见问题与排查技巧实录5.1 典型症状速查表这个表是我在实际排查里总结出来的列在前面可以帮你快速缩小范围。症状可能原因排查建议某台电脑频繁掉线ping网关丢包严重被ARP缓存欺骗arp -a对比网关MAC与基线是否一致整个网段变慢所有设备上网卡顿ARP洪泛或MAC洪泛Wireshark抓包统计ARP包数量路由器后台IP被“顶替”局域网内IP冲突或恶意占用查看DHCP租约记录临时断开设备排查HTTPS页面出现证书警告中间人攻击停止访问抓包确认是否有双向ARP欺骗莫名其妙的MAC地址在ARP表里频繁出现蹭网或扫描行为查看交换机MAC地址表确认端口位置5.2 我踩过的几个坑聊点实际教训。有一次我给一个朋友公司做局域网加固按照网上教程在服务器上做了网关静态绑定结果第二天整个公司都上不了网。排查了半天发现问题是出在我把网关MAC抄错了——那天刚好有人手动改过网关设备的备用网卡导致MAC和之前抓包得到的对不上。静态绑定这东西方向正确但MAC一定要从设备当前状态确认绑定错误比ARP欺骗还狠。还有一个坑是关于重启的。Windows的静态ARP条目在重启后会失效很多人不知道这一点以为绑完就一劳永逸了。过了几天又断网重新arp -a一看原来的静态条目已经消失又变回动态学习。所以Windows环境下的绑定一定配合开机脚本或计划任务固化别只执行一条命令就收工。抓包位置的问题我也栽过跟头。有次在某分公司排查网段卡顿我在办公区一台电脑上开了Wireshark等了十分钟没看到可疑包差点得出“网络没问题”的结论。后来登录接入交换机一看那台电脑所在的端口在另一个VLAN里而攻击发生在核心交换机的VLAN间路由口上我在办公区根本看不到。后来把抓包位置换到网关旁路五分钟就抓到了问题源头。抓包的物理位置直接决定了你能看到什么。5.3 长期运维建议与升级方向把应急做完日子还得继续过。说实话ARP攻击在2025年这个时间点已经不算什么前沿技术但它的生命力恰恰在于“简单、有效、难发现”。想要长期不中招我给你几个方向。第一个方向是VLAN隔离。把不同部门、不同安全级别的终端划分到不同的广播域里ARP攻击的破坏范围就被限制在单个VLAN内部。这也是ARP攻击天然的解药之一。第二个方向是DHCP静态分配和网关侧绑定。在企业网络里你不要只在终端上绑定网关还要在网关侧绑定终端的IP和MAC两边都锁死。做这一步之后攻击者即使伪造别人MAC也会因为交换机和网关不认账而失败。第三个方向是推荐有条件的企业上准入控制。无论是802.1X还是终端合规检查目的都是让不合规的设备连不上网从接入环节就把风险扼杀在摇篮里。家庭用户虽然没有企业级准入条件但至少要做到路由器后台开启设备白名单和AP隔离别让小设备随便接入内网。有朋友可能会问这些我会了之后有没有更省心的自动化方案如果你技术底子不错可以拿开源的安全设备和脚本串一个轻量检测系统定时抓包、分析ARP表、自动告警。但要注意安全不是买一套工具就能搞定的事工具要配合流程和经验才有效。最后再分享一点我个人的体会。处理ARP攻击这类底层协议层面的问题时最忌讳的就是急躁。我见过太多同行一遇到断网就重装系统、换路由器折腾一整天之后发现只是二层的一个小把戏。你只要按照“先固化网关绑定、再做监控对比、最后应急复盘”这条路一步步走下来绝大多数ARP攻击都能在几十分钟内解决。而且这套打法不只是ARP防得住很多和局域网二层相关的陷阱同样能防住。希望你在这篇之后再碰到公司群里有人说“又断网了”的时候心里不再慌而是大概知道该从哪下手了。