资讯动态

局域网频繁断网排查:ARP欺骗与网络剪刀手攻防加固

发布时间:2026/10/23 22:50:40 来源:尧图企业网站定制
简介网络剪刀手NetCut是一份围绕局域网设备连接控制与ARP协议原理的科普型资料面向网络管理员、共享网络用户及网络安全初学者用于了解如何识别同一局域网内的设备、临时限制终端联网并认识相关操作的安全边界与合规要求。压缩包共2个文件以1个txt文本说明和1个html网页介绍为主整体约3KB内容轻量便于快速浏览与留存查阅已有211人学习。资料从NetCut的工作机制切入说明其通过伪造ARP响应重定向流量、实现瞬时断网与自动恢复并梳理设备识别、连接断开、保护模式、网络诊断等功能同时讨论带宽占用、公共Wi-Fi隐私、课堂秩序等应用场景及滥用风险。读者可据此建立对ARP协议和局域网管理工具的基本认知理解网络干预的伦理与法律边界适合作为入门科普和操作前的风险提示参考。1. 局域网里网突然断了先认清楚网络剪刀手在剪什么前几年在一个封闭办公区做网络排查行政反馈整排工位半小时内轮流掉线拔一下网线再插上就好过一会又不行。我上去先抓了五分钟包屏幕上密密麻麻全是 ARP 应答同一个 MAC 地址反复宣称自己是网关。问题不在宽带也不在路由器而是有人在同一个广播域里用类似网络剪刀手的工具把别人的出口剪掉了。这类工具的原理并不玄学本质就是伪造 ARP 应答让目标主机把网关的 MAC 记成攻击机的 MAC流量走到一半就断。这篇内容按攻防复现的路子写先拆断网链路是怎么被切断的再给能照着跑的隔离环境验证步骤然后重点讲现场怎么判断、怎么取证、接入层怎么加固。新手能照着命令查熟手能看到每一步背后的判断依据和边界。2. 断网链路拆解ARP 应答为什么能一击致命2.1 从网卡灯还亮着、页面就是转圈说起判断一次断网属于哪一层我的习惯是先看现象组合。网卡灯亮、交换机口没 down、本机ping同网段的其他主机能通但ping网关不通浏览器转圈、DNS 解析超时、curl卡在连接建立阶段——这四个现象叠在一起基本可以把问题锁在二层到三层的交界处也就是 ARP 这一层。原因在于以太网转发靠的是 MAC不是 IP。主机要往外网发包第一步是查自己的 ARP 缓存网关 IP 对应哪个 MAC。缓存里有就直接把帧的目的 MAC 填成网关 MAC 发出去缓存里没有就广播一个 ARP 请求问谁是网关谁先应答就信谁。这里的关键在于 ARP 天生无状态、无认证主机收到一个 ARP 应答哪怕自己压根没发过对应的请求多数实现也会直接更新缓存。这就是所有 ARP 类攻击的共同地基。断网型的剪刀手利用的正是这一点。攻击机周期性向目标发送 ARP 应答内容是网关 IP 对应我这台机器的 MAC。目标的缓存被改写后所有出网流量都发到攻击机的网卡上。攻击机如果不做转发流量到这里就断了——表现出来就是网还在、就是上不去。如果攻击机顺手开了转发那就从断网升级成中间人风险高一个量级。2.2 攻击能成立的三个必要条件我把这类攻击能不能成立拆成三个条件判断现场时逐条对照基本不会跑偏。第一个条件是同广播域。攻击机和目标必须处在同一个二层网络里中间不能隔三层设备。同一台接入交换机下的不同端口、同一个无线 SSID 下的不同客户端都属于同一个广播域。跨网段、跨 VLAN 的场景单纯的 ARP 伪造打不过去得先有别的入口。第二个条件是目标缓存可被覆盖。绝大多数操作系统对未经请求的 ARP 应答是接受的差别只在更新策略有的只更新已存在的表项有的会新建表项。这个差别决定了攻击是改一条已有记录还是塞一条新记录但对结果影响不大。第三个条件是网络里没有 ARP 校验机制。接入交换机如果开了动态 ARP 检测DAI会拿 ARP 包里的源 IP 和 MAC 去比对 DHCP Snooping 绑定表对不上就丢弃并记日志。没开这个或者上联口没设成信任口伪造包就能长驱直入。我在做加固评估时这三条里只要有任意一条不成立优先级的判断就完全不一样。2.3 隔离实验环境里验证一次把过程拆成可观测的步骤要理解这套链路光看原理不够得在隔离环境里跑一遍看清楚每一步的可观测点。我给自己的规矩是只在完全隔离的虚拟网段里做网卡指向虚拟网络宿主机不接生产网。环境准备很简单两台虚拟机接同一个 host-only 网段一台当靶机一台当攻击机网关地址用虚拟网段里的保留地址。先确认靶机能正常访问网关再确认攻击机能ping通靶机。这三步没做扎实后面所有现象都是假的。验证脚本用 scapy 写重点在参数含义不在跑通# 仅在自有或已授权的隔离实验网中使用 # 目的验证接入层 ARP 防护DAI / 端口安全是否真的生效 from scapy.all import ARP, Ether, sendp import time IFACE eth0 # 实验网卡必须指向隔离网段别指向物理网卡 GATEWAY 192.168.56.1 # 实验网段的网关地址 TARGET 192.168.56.101 # 实验靶机地址 FAKE_MAC 02:00:00:00:00:01 # 本地管理位为 1 的测试 MAC避免撞上真实设备 pkt Ether(dstff:ff:ff:ff:ff:ff) / ARP( op2, # 2 表示 ARP reply主动宣告不经过 request psrcGATEWAY, # 冒充的源 IP网关 hwsrcFAKE_MAC, # 冒充的源 MAC测试用假 MAC pdstTARGET, # 只针对靶机把影响面压到最小 hwdstff:ff:ff:ff:ff:ff # 广播投递绕过靶机已有的缓存项 ) end time.time() 20 # 持续时间够看清交换机和靶机的反应即可 while time.time() end: sendp(pkt, ifaceIFACE, verboseFalse) time.sleep(2) # 2 秒一次维持缓存不老化几个参数的取舍值得说清楚。op2是主动应答不是请求这是整个验证的核心——不发请求直接塞应答正好对应真实场景里的行为。hwdst用广播地址而不是靶机 MAC是为了让包一定能被网卡收下不依赖靶机已有的缓存表项。FAKE_MAC特意选了本地管理位为 1 的地址段好处是万一实验网里混进了真实设备也不会和厂商标识冲突。DURATION只给 20 秒是因为验证目的只是看交换机日志和靶机 ARP 表的变化不需要长时间挂着。跑的同时在靶机上盯住这条命令# 每 12 秒采样一次网关的 ARP 记录观察 MAC 是否发生变化 for i in $(seq 1 10); do date %T; arp -n 192.168.56.1; sleep 12; done防护生效时这条记录全程不变交换机的 DAI 日志里会出现源 IP/MAC 不匹配的丢弃记录。防护没生效时采样结果里会看到网关 MAC 被换成了那个测试 MAC同时靶机的ping开始大面积超时。两种结果对应两种完全不同的结论这就是我说的看清楚可观测点。2.4 从攻击视角反推哪些环节留下了痕迹理解完链路反过来想如果我是防守方哪些环节必然留痕。我把可观测点列成四类。一是靶机 ARP 缓存的异常变化。正常网络里网关的 IP-MAC 映射可能几个月都不变一次被改写时往往在几十秒内反复抖动。二是交换机上的大量 ARP 应答。正常终端之间很少互发 ARP 应答一个端口在短时间内刷出成百上千个 ARP reply是很强的信号。三是 MAC 地址冲突告警。有些交换机会检测同一 MAC 出现在多个端口或者同一 IP 对应多个 MAC。四是终端侧的网络质量指标。断网型攻击下TCP 三次握手会反复重传DNS 查询超时的比例会突然拉高这些在终端的连接统计里都能看出来。这四类痕迹里第一类和第二类最好抓也最不容易误判。第三类依赖设备能力老交换机可能没有。第四类适合做辅助证据单独拿出来说服力不够。我在实际排查里一般先用前两类定位再用第四类做交叉验证。3. 现场排查三条命令锁定是不是被人剪了线3.1 先分层物理、IP、DNS 各查一遍遇到上不了网的报障我不会一上来就怀疑攻击。先按层排除看网卡状态和速率协商ethtool eth0确认链路是 1000M 全双工而不是莫名其妙掉到 10M 半双工看 IP 配置ip addr确认地址、掩码、网关都在再看路由ip route确认默认路由指向网关而不是被人改过。这三步五分钟内能做完能挡掉大量低级故障。接着做分层连通性测试。ping同网段另一台主机通不通ping网关通不通ping一个公网 IP 地址不带域名通不通nslookup一个域名解析得出来吗。我习惯把这四个结果按顺序记下来哪一步断掉指向的原因就很清楚了。同网段通、网关不通指向二层 ARP网关通、公网 IP 不通指向网关侧或上层公网 IP 通、域名解析失败指向 DNS。这里有个容易被忽略的细节ARP 缓存被污染时ping网关的表现往往不是立刻全丢而是前几个包通、后面全超时或者通一个丢三个。因为缓存里可能还残存着正确的表项或者攻击包的发送间隔刚好卡在缓存老化附近。看到这种不稳定的丢包模式我会立刻往 ARP 方向想。3.2 ARP 表比对网关的 MAC 是不是换人了定位到二层之后第一步动作是比对网关的 MAC。这里必须有一个基准值——要么是你在故障前记下的要么是去网关设备上直接查到的。没有基准值看到一个 MAC 地址也无从判断对错这是很多人排查卡住的地方。查本机缓存用arp -n或ip neigh show。关键是看那条网关记录的状态字段和 MAC 值。状态是REACHABLE说明最近确认过STALE说明可能老化FAILED说明解析失败。如果同一个网关 IP 在几分钟内对应过两个不同的 MAC基本可以判定缓存被人改写过。# 连续采样网关记录输出时间戳和当前 MAC便于事后对时间线 for i in $(seq 1 20); do printf %s $(date %T) ip neigh show 192.168.56.1 sleep 10 done这个采样脚本的价值在于连续两个字。单次看一条记录只能看到结果连续采样能看到变化过程。我在一次现场里就是靠这个抓到了 MAC 在 30 秒内来回切换三次的规律进而算出攻击包的发送间隔反过来验证了判断。交换机侧也可以查。接入交换机一般有 MAC 地址表show mac address-table一类的命令能看到某个 MAC 挂在哪个端口。如果网关 MAC 出现在一个明显不该出现的用户端口上那就是很直接的证据。这个操作需要设备权限现场不一定有但值得提前和网络管理员对齐。3.3 抓包看特征谁在频繁发 ARP 应答有镜像口的情况下抓包是最直接的证据来源。没有镜像口也可以在怀疑被攻击的主机上直接抓因为攻击包是发给它的本机网卡一定能收到。# 只抓 ARP 应答方向带链路层信息限 200 个包避免刷屏 tcpdump -i eth0 -n -e arp and arp[6:2] 2 -c 200过滤表达式里的arp[6:2] 2是取 ARP 头的操作码字段值为 2 表示应答。加上-e是为了打印源和目的 MAC这一步很关键——只看 IP 看不出问题看清谁在宣称自己是网关才是关键。正常的 ARP 应答源 MAC 就是网关设备的 MAC伪造的应答源 MAC 会是一个陌生的地址。抓到包之后看三个特征。第一个是发送源 MAC 是否等于网关真实 MAC。第二个是发送频率正常终端的 ARP 应答是事件驱动的一天也没几个伪造行为往往是秒级的周期性发送。第三个是应答里的源 IP 和源 MAC 的对应关系是不是和已知的绑定表一致。还有一个更省事的办法是长期开着 ARP 监控。Linux 上有 arpwatch 一类的工具检测到 IP-MAC 映射变化会记录并告警日志里带着时间戳和两个 MAC 值。这类工具不需要人盯着适合放在关键网段长期跑。我在几个长期维护的办公网里都部署了价值不在于抓现行而在于出事时能翻出第一次异常发生在几点几分这个时间点对定位是哪台机器出问题极其有用。3.4 把证据固定成一条时间线抓到异常之后我一般会花十分钟把证据整理成一条时间线几点几分第一次出现异常 ARP、持续多久、涉及哪些 IP 和 MAC、同期终端侧的丢包和重传情况。这条时间线的用处有两个一是给非技术人员解释时能说清楚二是和自己的判断互相印证。整理的时候注意区分现象和推断。ARP 缓存的 MAC 发生了变化这是现象有人用网络剪刀手一类的工具在做 ARP 伪造这是推断。推断要有依据比如发送频率、广播域范围、是否伴随流量中断这些都能支撑结论。混着写事后复盘时自己都分不清哪些是事实。4. 防御加固从接入交换机到终端的三层拦法4.1 接入层把伪造包挡在端口上接入层是最有效的拦截点因为攻击包必须从某个物理端口或无线 AP 进来。这里有三项配置值得优先做。第一项是 DHCP Snooping。它建立起一张IP-MAC-端口-VLAN的绑定表记录哪个 IP 是从哪个端口通过 DHCP 拿到的。这张表本身不拦包但它是后面 DAI 的基础。上联口要设成信任口用户口设成非信任口否则合法 DHCP 应答也会被丢。第二项是动态 ARP 检测DAI。它拿每个 ARP 包的源 IP 和源 MAC 去比对绑定表不匹配就丢弃并记日志。开了这个之后上面那种伪造应答在交换机入口就被拦掉了靶机的缓存根本不会被改写。需要注意的是静态配置 IP 的终端不在绑定表里要么给它们建静态绑定要么单独放行不然会误伤。第三项是端口安全。限制每个接入端口允许学习的 MAC 数量比如一个工位口只允许一个 MAC超了就告警或者直接 err-disable。这一项对付一台机器接多个 MAC 到处扫的场景特别有效。! 通用接入交换机配置示意命令名以实际设备为准 dhcp-snooping enable arp-inspection enable interface uplink-0/1 dhcp-snooping trust arp-inspection trust ! 上联口必须信任否则网关的 ARP 也会被丢 interface user-0/10 port-security enable port-security max-mac 1 ! 工位口通常只接一台终端 arp-inspection untrust ! 用户口默认不信任这三项配置的落地顺序有讲究先开 DHCP Snooping 观察一段时间确认绑定表覆盖了绝大多数终端再开 DAI。反过来先开 DAI绑定表是空的会把所有人的 ARP 都当异常丢掉整个网段直接瘫痪。这是我见过的最典型的翻车方式之一。4.2 终端侧静态绑定和加密通道接入层配置不一定能立刻推动终端侧的自救手段就更实用。最直接的是静态 ARP 绑定。把网关的 IP-MAC 映射写成永久表项系统就不会再接受针对这条记录的更新。Windows 上用netsh interface ipv4 add neighbors一类的命令Linux 上用ip neigh add ... nud permanentmacOS 上用arp -s。写死之后伪造的应答改不动这条记录断网攻击对你的效果会大幅下降。代价是网关换设备或换 MAC 的时候要手动改所以适合网关稳定的场景不适合经常做设备替换的环境。第二是开防火墙的出站规则。部分终端安全产品会做 ARP 欺骗检测发现有异常应答就告警。这类功能的效果参差不齐别指望它兜底但作为早期预警还是有用的。第三是加密通道。断网型攻击只是让你上不去网中间人型攻击才会读你的内容。所有关键业务走 HTTPS、SSH 这类加密通道能把中间人带来的信息泄露风险压到很低。这一点我在给非技术同事做培训时反复强调因为它的成本最低、收益最稳。4.3 无线场景同一 SSID 下的二层仍然是通的无线环境容易被误判。很多人觉得连了 Wi-Fi、加了密码同一网络里的人就互相隔离了。实际情况是WPA2/WPA3 加密的是空口这一段链路同一个 SSID 下的客户端之间二层依然是互通的ARP 伪造照样能做。真正起作用的是 AP 上的客户端隔离功能也叫 AP isolation、client isolation开了之后客户端之间的二层流量直接被 AP 拦掉。所以无线侧的加固顺序应该是先确认 AP 开了客户端隔离再考虑接入认证的强度。前者直接解决同网段互攻的问题后者解决的是谁能连进来的问题两个维度不能互相替代。我在评审无线方案时会把客户端隔离是否开启作为第一个问题问因为这一项的投入产出比最高。4.4 一份可以照着排优先级的加固清单加固项很多落地时得排优先级。我一般按覆盖面 × 实施成本 × 误伤风险三个维度来排下面这张表是我实际用过的排序优先级加固项覆盖面实施成本主要风险P0无线开启客户端隔离全部无线终端低影响同网段互访类业务P0接入层开 DHCP Snooping全部有线终端中静态 IP 终端不在表内P1接入层开 DAI全部有线终端中配置顺序错了会全网瘫P1关键服务器静态 ARP 绑定服务器段低网关变更需同步维护P2端口安全限制 MAC 数工位接入口低带虚拟机的工位会误伤P2部署 ARP 监控与告警全网中需要长期维护日志排序逻辑很简单先做覆盖所有人、成本低、风险可控的项再做覆盖面小但价值高的项。P0 里的两项如果只能做一件我选无线客户端隔离因为无线环境的人员流动最大、最难靠物理管控。5. 复现与排查中的五个坑现象、原因和补救5.1 实验网一开整层楼跟着掉线现象在工位上做验证脚本刚跑起来周围同事陆续报障说自己上不了网。原因虚拟机的网卡桥接到了物理网卡虚拟网段和办公网混在同一个广播域里。脚本里那个冒充网关的应答实际上也发到了真实网络里把同事的 ARP 缓存一起改了。解决做这类验证网卡必须指向 host-only 或内部网络绝不桥接物理网卡。跑之前用ip addr和ip route确认本机所在网段确认网关地址不是生产网关。我现在养成一个习惯脚本第一行先打印IFACE对应的网段和自己预期的对不上就直接退出不给手滑留机会。5.2 靶机 ARP 表改了但网还是通的现象采样显示网关 MAC 已经被替换成测试 MAC但靶机ping外网依然正常看起来攻击没生效。原因攻击机和靶机之间还有其他路径或者靶机的缓存里同时存在多条记录系统按最长前缀或最新表项选了一条正确的。也可能是验证脚本只发了应答但没持续缓存很快被正常的免费 ARP 覆盖回去了。解决先确认广播域里是否只有这两台机器把其他虚拟网卡、虚拟网桥全部断开。再把发送间隔缩短到缓存老化时间的一半以内保证覆盖是持续的。最后在靶机上连续采样而不是单次查看确认 MAC 变化是稳定持续的而不是闪了一下就恢复。5.3 抓包抓不到任何异常 ARP现象明明终端在上不了网tcpdump抓了半天一个可疑的 ARP 应答都没有。原因抓包位置不对。交换机不会把别人的单播流量泛洪到你的端口如果攻击包是单播发给受害者的你在第三台机器上根本看不到。另一种情况是攻击用了其他手段比如伪造 DHCP 或者直接发 ICMP 重定向压根不走 ARP。解决把抓包点挪到受害主机本机上或者申请一个镜像口。同时把过滤条件放宽先看全部 ARP再看 ICMP最后看 DHCP一层层排除。别一上来就用窄过滤条件容易把真正的线索过滤掉。这个坑我踩过一次白白多查了两个小时。5.4 静态绑定做完照样掉网现象网关的 IP-MAC 已经写成永久表项理论上不会被改写但终端依然周期性断网。原因静态绑定只保护了网关这一条记录。如果攻击方伪造的是同网段其他关键设备比如 DNS 服务器、内网应用服务器的 ARP或者伪造的是受害者自己的 IP 造成地址冲突静态绑定挡不住。还有一种可能是攻击方走的是 DHCP 伪造直接给你发一个错误的网关地址。解决静态绑定要覆盖所有关键基础设施不只是网关。同时检查本机的 IP 配置是不是 DHCP 获取的如果是确认 DHCP 应答来源是否可信。排查时把哪一条 ARP 记录在变列全不要只盯网关一条。5.5 用了监控工具告警一堆但全是误报现象部署 ARP 监控之后每天几十条告警看下来全是正常的设备更换和虚拟化迁移真正的问题被淹没。原因监控工具的判定逻辑是IP-MAC 映射变化就告警但虚拟化环境、双网卡绑定、负载均衡设备天然就会让映射频繁变化。没有做白名单误报率必然高。解决先跑一周的观察模式把所有正常的映射变化整理成白名单再开告警。白名单要按设备 端口的粒度做不能只按 MAC 做否则设备换端口又会误报。另外把告警分级同一条记录在 60 秒内变化超过三次才算高危一天变化一次的直接降级成日志。这套规则调完之后误报能压到很低告警才有参考价值。6. 把结论落成一张自查表下次断网先看这五行真到了现场脑子里装的原理再多也不如一张能照着填的表。我在几次排查之后固定下来一套流程每次遇到局域网内集体或轮流断网按这五行往下走绝大多数情况十五分钟内能定性。顺序检查项判断依据结论指向1同网段互通、网关不通ping结果组合二层 ARP 可疑2网关 IP 对应几个 MACip neigh连续采样大于 1 个即异常3ARP 应答的发送频率tcpdump抓 200 包秒级周期即伪造4交换机有无 DAI 丢弃日志设备日志检索有日志说明防护已生效5终端是否静态绑定网关查本机邻居表未绑定则优先补上这张表里第 2 行最容易被跳过也最不该跳过。单次看 ARP 表只能看到一个快照看不出变化这件事而 ARP 伪造的全部特征恰恰藏在变化里。我现在到任何一台机器上排查第一件事都是跑一段连续采样把输出存成文件后面所有判断都基于这份采样而不是基于某一次arp -a的输出。还有一个细节值得单独说验证防护是否真的生效不要靠感觉网变稳了。正确做法是在隔离环境里把第 2 章那段脚本再跑一遍看交换机的丢弃计数有没有涨、靶机的 ARP 表有没有变。防护配置写完不做验证等于没配——我曾经因为上联口忘了设信任导致整栋楼的 ARP 都被 DAI 丢掉事后复盘才发现配置项只写了一半。从那以后我每次改完接入层防护都强制走一遍改配置 → 隔离环境验证 → 观察日志 → 再上生产这四步一步都不省。这份资源的价值不在于点一下就能断谁的网而在于它把 ARP 欺骗这条链路做成了可以随手复现的东西。拿它当验证环境去测自己的接入交换机到底有没有拦住伪造应答比看十篇文档都管用。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑