## 诊断流程样例:Surge DNS 与代理连通预检 ### 输入 - 用户现象:连接公司内网时 Surge 代理不可用 - 当前环境:macOS + Surge - 探测 URL:`https://www.apple.com` 或公司允许访问的内网站点 ### Step 1. 检查 Surge 本地代理是否存在 ```bash pgrep -fl Surge lsof -nP -iTCP:6152 -sTCP:LISTEN lsof -nP -iTCP:6153 -sTCP:LISTEN ``` 通过信号:Surge 进程存在,`127.0.0.1:6152` 和 `127.0.0.1:6153` 正在监听。 失败信号:进程不存在或端口未监听,此时优先重启 Surge 或恢复本地代理端口配置。 ### Step 2. 检查 macOS 系统代理是否接入 Surge ```bash networksetup -getwebproxy Wi-Fi networksetup -getsocksfirewallproxy Wi-Fi ``` 通过信号:Web Proxy 指向 `127.0.0.1:6152`,SOCKS Proxy 指向 `127.0.0.1:6153`。 失败信号:系统代理为空,说明普通应用没有经过 Surge,需要打开 Surge 的“系统代理”。 ### Step 3. 检查 DNS/DoH 状态 | 检查项 | 期望状态 | 失败含义 | |---|---|---| | DNS 模式 | 使用系统 DNS 服务器 | 公司内网 DNS 策略可能被绕开 | | 加密 DNS URL | 为空 | DoH 可能导致内网不支持或解析失败 | | 应用状态 | 已应用/已落盘 | UI 显示正确但配置未生效 | ### Step 4. 代理连通性探测 ```bash curl -I --proxy http://127.0.0.1:6152 https://www.apple.com --max-time 10 curl -I --socks5 127.0.0.1:6153 https://www.apple.com --max-time 10 ``` 通过信号:HTTP 和 SOCKS 探测返回 `HTTP/2 200` 或其他 2xx/3xx。 失败信号:超时、连接拒绝、DNS 解析失败或证书错误;根据错误回到端口、系统代理、DNS 或网络证书层定位。 ### Step 5. 解释最终状态 - 若 DoH 关闭、系统代理打开、curl 成功,但 Surge 配置是 `FINAL,DIRECT`:结论是“Surge 已接管流量但直连”,适合解决公司内网不支持 DoH 的问题。 - 若需要真正走远程代理节点:还需要切换到包含远程节点和非 DIRECT 规则的 Surge 配置。