代理连接成功但无法上网怎么办?按故障层排查
简答:代理显示“已连接”只代表客户端完成了某个连接或启用了本地入口,不等于浏览器和应用的请求已经成功经过代理。最快做法是先关闭代理确认基础网络,再核对地址、端口、协议和认证,随后检查系统代理或 TUN 是否真正接管流量,最后用日志、DNS 和其他节点定位。
定义:“代理连接成功但无法上网”是指客户端显示已连接或节点可用,但浏览器、应用或特定网站的实际请求仍然超时、被拒绝或无法解析域名。
先做这 3 步:不要先改 DNS 或 MTU
先记录当前客户端的代理地址、端口、模式、TUN/DNS 开关和规则设置;如果客户端支持导出配置或复制订阅,先完成备份。每次只改一个项目,确认结果后再继续,避免多个改动叠加导致无法回滚。
- 关闭代理测试基础网络:退出客户端或关闭系统代理,打开普通网页。如果关闭代理后仍无法访问,优先排查 Wi-Fi、网线、路由器、系统网络或企业网关,不要先判断是节点故障。
- 确认代理入口:核对代理类型是 HTTP、HTTPS、SOCKS5 还是客户端本地混合端口,地址和端口必须与客户端当前监听设置一致;需要认证时,同时检查用户名和密码。
- 只切换一次全局模式:如果客户端有“规则、全局、直连”等模式,临时切换到全局测试。全局能访问而规则模式不能访问,通常应继续检查规则、策略组或 DIRECT 分流,而不是反复更换 DNS。
在 Mihomo 中,TUN 用于接管系统流量,代理端口则要求浏览器或系统明确指向对应端口;两者不是同一层入口。官方文档说明,TUN 会涉及系统路由、DNS 劫持和按应用路由,因此启用 TUN 后仍需验证路由和 DNS 是否实际生效。参考:Mihomo 入站配置、Mihomo TUN 配置。
按现象判断:连接被拒绝、超时和 DNS 失败不是一回事
| 现象或日志 | 优先怀疑 | 先做什么 |
|---|---|---|
| connection refused | 本地端口未监听、端口填错、客户端进程异常 | 核对本地端口和协议,重启客户端后重新选择端口 |
| timeout | 节点路径、网络出口、防火墙或 MTU 相关问题 | 先换一个节点或网络,再看日志是否仍超时;不要立即修改多个网络参数 |
| DNS failed、无法解析域名 | 系统 DNS、客户端 DNS、Fake-IP 或 Private DNS 冲突 | 用域名解析命令对比默认 DNS 与指定 DNS 的结果 |
| 部分网站打不开 | 规则命中、目标域名解析、IPv6 或应用独立代理设置 | 临时全局测试,再分别检查规则、IPv6 和应用代理 |
| 浏览器可以,某个应用不行 | 应用没有使用系统代理,或使用了独立代理/QUIC/DNS | 查看该应用的代理设置和客户端连接记录 |
| 关闭代理后也不能上网 | 本地网络、系统代理残留、VPN 或安全软件冲突 | 恢复系统代理默认值,退出其他 VPN 和网络过滤软件 |
Windows 可用 nslookup example.com 检查域名解析;Microsoft 文档说明,nslookup 可使用默认 DNS,也可以指定 DNS 服务器进行对比。若命令本身超时或返回 “No response from server”,先处理 DNS 或本地网络。参考:Microsoft nslookup 文档。
命令行测试也要注意代理变量。curl 会读取 http_proxy、https_proxy、ALL_PROXY 等环境变量,环境变量残留可能让命令行和浏览器表现不同。参考:curl 官方命令行文档。
Windows、macOS、Android 和 iPhone 怎么检查
| 系统 | 检查入口 | 恢复或验证方式 |
|---|---|---|
| Windows 10/11 | 系统设置中的代理、浏览器代理、客户端 TUN/系统代理 | 关闭客户端后确认系统代理是否仍被启用;在命令提示符执行 netsh winhttp show proxy 查看 WinHTTP 状态,需要恢复默认时使用 netsh winhttp reset proxy |
| macOS | 系统设置→网络→当前网络→详细信息→代理 | 确认 HTTP、HTTPS、SOCKS 代理是否与客户端一致,也检查自动代理发现和 PAC;测试完成后恢复原开关 |
| Android | 设置→网络和互联网→互联网→当前 Wi-Fi→编辑→高级选项→代理 | 确认 Wi-Fi 代理是否误设为手动;另外检查“私人 DNS”,因为它只处理 DNS 请求,不能替代完整代理 |
| iPhone | 设置→Wi-Fi→当前网络右侧信息按钮→HTTP 代理、DNS 等 | 确认 Wi-Fi 的 HTTP 代理没有残留;如果使用客户端建立系统级隧道,应同时查看客户端自身状态,而不能只看 Wi-Fi 代理 |
Windows 的 netsh winhttp reset proxy 会把 WinHTTP 代理重置为 DIRECT,但它不一定等同于浏览器或客户端自己的代理设置;执行前应确认设备没有受企业代理策略管理。参考:Microsoft Netsh WinHTTP 命令。
macOS 的代理入口和 HTTP、HTTPS、SOCKS、PAC 配置位置见 Apple 官方说明:更改 Mac 代理设置。Android 不同厂商菜单名称可能不同,Google 官方路径为网络和互联网、当前 Wi-Fi、编辑网络和高级选项;私人 DNS 只保护 DNS 查询与响应,不能证明网页请求已经经过代理。参考:Google Android 高级网络设置。iPhone 的 Wi-Fi 详情页可以配置 DNS 和 HTTP 代理,参考:Apple iPhone Wi-Fi 设置。
Mihomo、Clash 类客户端:按“请求有没有进来”判断
- 看连接记录:打开客户端的 Connections 或日志页面,刷新一个网页。如果完全没有对应请求,问题在浏览器代理、系统代理、TUN 或应用没有走系统代理;如果有请求但显示 DIRECT,继续检查规则;如果显示 reject、timeout 或 refused,再进入节点和网络层。
- 验证本地端口:客户端设置中的 mixed-port、port、socks-port 或 HTTP 端口必须与系统代理填写值一致。端口监听不代表上游节点可用,只能证明本机有入口。
- 规则模式改全局:全局模式能访问时,重点检查域名规则、策略组和 DIRECT;全局模式也不能访问,则优先检查节点、认证、网络和 DNS。
- 检查 TUN 与 DNS 的组合:TUN 可能改变系统路由并接管 DNS;Windows 的严格路由还可能添加防止 DNS 泄漏的防火墙规则。若开启 TUN 后所有应用异常,先关闭 TUN、保留普通系统代理测试,确认是 TUN 层后再逐项恢复。参考:Mihomo TUN 官方说明。
- 不要直接套用陌生配置:DNS 的 enhanced-mode、fake-ip、nameserver、proxy-server-nameserver 等字段会改变解析链路。只改一个字段,并保留原配置;官方 DNS 文档说明,关闭 DNS 模块时会使用系统 DNS,而 Fake-IP 等模式会影响地址返回方式。参考:Mihomo DNS 配置。
如果只有某个应用打不开,先确认该应用是否支持系统代理;部分应用可能使用自己的 DNS、QUIC 或独立代理设置。不要把一次浏览器访问成功当成所有应用都已恢复。
验证恢复、回滚与安全注意事项
- 关闭代理访问一个普通网站,确认基础网络正常。
- 重新启用代理,只使用一个节点和一种接管方式:普通系统代理或 TUN,不要同时叠加多个 VPN、代理客户端。
- 分别测试浏览器、命令行和出现问题的应用;记录是全部失败、部分失败还是只有域名解析失败。
- 确认客户端连接记录出现目标请求,并且没有持续出现 timeout、refused、reject 或 DNS failed。
- 若修改 DNS、MTU、TUN 或防火墙规则后问题扩大,立即关闭刚改的选项并恢复备份;不要为了测试长期关闭防火墙或安装来源不明的证书。
如果仍无法定位,整理客户端名称与版本、操作系统、代理类型、错误日志、是否全局模式可用、关闭代理后的结果以及是否更换网络后改善,再向软件或网络服务提供方咨询。不要在公开日志中暴露订阅地址、用户名、密码或完整节点信息。
常见问题
为什么客户端显示已连接,网页还是打不开?
“已连接”可能只表示客户端连接到了本地端口或上游会话,不能证明浏览器请求已被接管,也不能证明 DNS、规则和目标连接都成功。先看 Connections 或日志中是否出现实际请求,再按 refused、timeout、DNS failed 分流。
关闭代理后也无法上网,应该换节点吗?
不应先换节点。关闭代理后仍无法上网,说明基础网络、系统代理残留、其他 VPN、安全软件或网络网关更值得优先检查。恢复直连后确认普通网络正常,再重新启用代理。
全局模式可以上网,规则模式不行怎么办?
这通常把排查重点指向规则、策略组或 DIRECT 分流。先记录全局模式下能访问的域名,再查看规则命中结果;确认规则修复后切回规则模式,不必先改 MTU。
要不要直接打开 TUN 或修改 DNS?
不建议把它们作为第一步。先用普通系统代理验证基础连通性;只有当应用不遵循系统代理、需要接管更多流量或日志明确指向 DNS/TUN 时,再单独启用一个选项并保留回滚方法。
为什么只有一个应用无法上网?
该应用可能没有使用系统代理,或启用了独立 DNS、QUIC、代理和证书策略。先检查应用自身网络设置,再查看客户端是否记录到该应用的请求;如果完全没有记录,问题通常发生在客户端接管之前。
常见问题
代理显示已连接但完全无法上网,最快先试什么?
先关闭代理确认基础网络正常,再核对代理地址、端口、协议和认证;之后检查系统代理或 TUN 是否真正接管请求。
全局模式能用,规则模式不能用,说明节点坏了吗?
不一定。这个现象更优先指向规则、策略组或 DIRECT 分流;查看连接记录和命中规则后再处理。
Windows 上怎么清理残留的 WinHTTP 代理?
在命令提示符执行 netsh winhttp show proxy 查看状态;确认不受企业策略管理后,可执行 netsh winhttp reset proxy 恢复为 DIRECT。
DNS、TUN 和 MTU 应该先改哪个?
都不应作为第一步。先用普通系统代理验证,再依据日志和 DNS 测试结果单独修改一个项目,并保留原配置以便回滚。
为什么只有一个应用打不开?
该应用可能不使用系统代理,或启用了独立 DNS、QUIC 或应用内代理。检查应用自身设置,并确认客户端连接记录中是否出现该应用的请求。