用途
网络运维(net-ops)用于跨平台网络故障排查,覆盖 Windows、macOS、Linux,可通过本地 shell 或远程 SSH 执行。它面向的典型场景是:用户报告某台可登录(本地或 SSH)的机器“网络坏了”,需要逐层定位故障范围,并与各操作系统的特定元凶做模式匹配。
主要能力
核心方法是分层诊断阶梯(Diagnostic Ladder),按顺序逐层排查,每层给出二值结论以排除上层所有可能:
- 链路层——接口已启用、IP 有效、网关存在
- IP 可达性——通过 ICMP ping 公网 IP
- 套接字可达性——对已知目标测试 TCP/443 与 UDP/53(原始套接字 DNS) 3.5 局域网服务——并行轨道:映射驱动器、SMB、mDNS/.local、单标签主机名(互联网正常 ≠ 局域网正常)
- DNS 基础设施——绕过工具:nslookup / dig @<server>
- 操作系统解析器路径——hook 层(现代系统上最有价值)
- 应用层——对真实主机名发起真实 HTTP 请求
技能强调一个通用洞察:绕过工具成功而系统解析器失败,是各平台共同的“冒烟枪”证据——说明 DNS 基础设施健康,但操作系统的名称解析路径被 hook 或配置错误。各系统的绕过工具与 OS 解析器工具不同,但判别逻辑相同:
- Windows:绕过用 nslookup,OS 解析器用 Resolve-DnsName、浏览器;若绕过成功而解析器失败,嫌疑为 NRPT、WFP、HOSTS、LSP、本地 127.0.0.1:53 代理
- macOS:绕过用 dig @1.1.1.1,OS 解析器用 dscacheutil -q host、浏览器;嫌疑为 /etc/resolver/*、scutil DNS、profiles、mDNSResponder、kext
- Linux:绕过用 dig @1.1.1.1,OS 解析器用 getent hosts、resolvectl query;嫌疑为 systemd-resolved、/etc/resolv.conf、NetworkManager、dnsmasq、NSS
技能还包含拦截层 DNS 客户端(如 NextDNS v3.x)的分析:这类客户端不绑定 53 端口、不运行回环代理,而是安装 WFP 回调驱动在内核将查询改写为 DoH,从而颠覆“读取网卡 DNS 以了解解析器”“用 Get-NetUDPEndpoint -LocalPort 53 找代理”“查询 127.0.0.1 测试本地解析器”这三种习惯。此时真正的地面事实是发起一次查询(如向 test.nextdns.io 随机子域请求并读取 clientName),而非配置转储。
技能还覆盖 VPN 与局域网共存的决策规则、拦截客户端的启动顺序故障(per-user 配置 + 启动时服务无配置,导致每次重启后被缓存污染,ipconfig /flushdns 临时修复)。
使用方式
工作流如下:
- 识别目标操作系统:本地用 uname -s 或检查 shell 环境;远程 SSH 用 scripts/ssh-bootstrap.sh <user>@<host> 自动检测。
- 运行对应系统的探测脚本:Windows 用 scripts/windows/probe.ps1(经 SSH 时用 -EncodedCommand),macOS 用 scripts/macos/probe.sh,Linux 用 scripts/linux/probe.sh。每个脚本按阶梯打印结构化的 [PASS]/[FAIL],扫描首个 FAIL 即为需深挖处。
- 深入失败层:多数有价值的失败在第 5 层。
- Windows:scripts/windows/nrpt-audit.ps1(NRPT 规则归因与注册表取证)
- Windows(LAN/SMB):scripts/windows/smb-audit.ps1(映射驱动器审计:解析机制、可达性、凭据目标、NRPT/泄漏保护、结论)
- Windows(NextDNS):scripts/windows/nextdns-audit.ps1(配置范围、boot→logon 暴露窗口、有效 profile、结论)
- macOS:scripts/macos/dns-audit.sh(scutil --dns、/etc/resolver/*、mDNSResponder 状态、profiles)
- Linux:scripts/linux/dns-audit.sh(systemd-resolved 状态、resolv.conf 链、NM 配置、NSS 顺序)
- 应用最小可逆修复:修复脚本默认 dry-run,并保护已知良好配置(如 Tailscale MagicDNS、MDM 托管条目)。仅在 dry-run 输出符合预期时才应用。
- Windows:scripts/windows/nrpt-clean.ps1(移除孤立 NRPT catch-all,保护 Tailscale)
- Windows:scripts/windows/nextdns-boot-fix.ps1(登录任务:确认 NextDNS 拦截后刷新一次)
- Windows:scripts/windows/nextdns-doh-setup.ps1(机器范围:将 OS 解析器指向 profile 固定的 DoH 模板,需管理员)
- macOS:scripts/macos/resolver-clean.sh(移除来自已断开 VPN 的孤立 /etc/resolver/*)
- Linux:scripts/linux/resolved-reset.sh(按链路重置 systemd-resolved 配置)
SSH 传输模式:Windows 目标因 PowerShell-over-SSH 转义问题,应始终经 UTF-16LE base64 通过 -EncodedCommand 传递脚本;Unix 目标(macOS、Linux)可用 heredoc 干净传递,如 ssh <target> 'bash -s' < scripts/linux/probe.sh。scripts/ssh-bootstrap.sh 会依据检测到的 OS 处理两种传输。
适用场景
技能给出了一批“冒烟枪”式症状到成因的快速对应,例如:
- Windows 上 nslookup 可用但浏览器失败 → 多为断开的 VPN 残留的孤立 NRPT catch-all
- Windows 上公网 DoH 解析器 IP 的 443 被阻断而其他 443 正常 → AV“加密 DNS 检测”
- Windows 上每次重启后 ipconfig /flushdns 能临时修好 DNS → 拦截客户端 per-user 配置与启动顺序的 boot→logon 空隙
- Windows 上 DoH 客户端“已启动”但无进程占用 :53 且 127.0.0.1 超时 → 现代客户端经 WFP 内核驱动拦截,不绑定 53,网卡 DNS 只是表象
- macOS 上 dig 可用但浏览器失败 → 断开的 VPN 残留的 /etc/resolver/*
- Linux 上 dig 可用但 getent hosts 失败 → systemd-resolved 配置错误
- Linux 上某些应用 DNS 可用而其他不可用 → /etc/nsswitch.conf 中 NSS 顺序排除了 resolve
- 所有系统睡眠/唤醒后 DNS 突然损坏 → VPN 客户端断开清理失败
- Windows 上映射驱动器断开、可按 IP ping 主机但不能按名 ping、VPN 活跃 → NRPT . catch-all 吞掉单标签名并抑制 LLMNR/NetBIOS 回退
- Windows 上 net view \<ip> 返回系统错误 5 而同一共享按主机名可用 → 凭据管理器条目按主机名而非 IP 键控
- 所有系统上局域网主机可按 IP 访问但路由器 DNS 的 UDP/53 超时而 TCP 成功 → VPN DNS 泄漏保护出站过滤
限制与安全注意
- 读后写:修改解析器配置前始终先转储当前状态,取证信息可能对解释问题至关重要。
- 未经同意不要禁用安全工具:AV/防火墙 hook 侵入但合理,优先暂停而非卸载。
- Tailscale 的名称解析配置看似垃圾但必不可少:批量删除前须按受保护名称服务器模式(各系统上 100.100.100.100)过滤。
- 解析器配置跨重启持久:移除规则是永久性的(直到 VPN 重新创建),删除前确认来源/注释。
- macOS profile DNS 覆盖可能由 MDM 托管:移除可能违反企业策略并可能被自动重新应用,需与 IT 协调。
- nrpt-clean.ps1 绝不能指向活跃 VPN 的 catch-all,仅用于孤立项;删除想要的 VPN 规则会破坏其 DNS 路由且客户端会重建。
- 修复脚本默认 dry-run,仅在 dry-run 输出符合预期时应用。
参考资料与脚本
参考资料:references/diagnostic-ladder.md(完整阶梯方法论及各系统各层命令)、references/common-culprits.md(Windows/macOS/Linux 检测与修复目录)、references/case-studies.md(实例与新增模板)。
脚本清单见使用方式部分;其中 smb-audit.ps1 支持 -DriveLetter Z -FallbackIp 'NAS=192.168.1.50'、-Json 参数;nextdns-audit.ps1 支持 -SkipNetwork、-Json;nextdns-boot-fix.ps1 支持 -Apply、-Remove;nextdns-doh-setup.ps1 支持 -Apply、-Rollback、-VerifyOnly(需管理员)。
产品定价、平台支持范围、安装的命令行等其他信息暂未提供。