「VPN 连上了没生效」是新手最常见的一类困惑:客户端明明显示已连接,网页还是打不开,或者打开后看到的还是本地地址。判断方法其实很朴素——看流量到底从哪个地址出去。这篇教程按出口 IP、DNS 解析、分应用验证三步走一遍,每一步都给出具体操作和判断标准,看完你可以自己判断问题卡在哪一层。
连上≠生效:先看清流量走没走
客户端里的「已连接」,说明的是客户端和服务端之间的加密通道建好了,也就是隧道通了。它并不保证你系统里的每个程序都从这条隧道出去。这两件事经常被混为一谈,于是就有了「显示已连接但没生效」的困惑。
加速客户端接管流量的方式主要有三种,各自的覆盖范围不一样:
- 系统代理:只影响主动读取系统代理设置的程序。浏览器通常读,命令行工具和不少桌面软件不读。
- TUN / 虚拟网卡:改系统路由表,在网卡层接管流量,覆盖面最广,大多数程序都会被带上。
- 分应用代理:只接管你勾选过的程序,名单外的应用照旧直连。
所以「连上但没生效」,多数时候不是线路坏了,而是接管范围没覆盖到你要用的那个程序。先把这一点想清楚,后面的排查就是逐个确认。
用系统代理模式时,终端里的 curl、部分桌面软件不读系统代理,它们的流量仍然是直连。这不是故障,是这种模式本身的覆盖范围决定的。
第一步:查出口 IP 有没有变
出口 IP 就是外部网站看到的「你」。对比连接前后的出口 IP,是最直接、也最难出错的判断方式。
- 先断开加速,打开任意 IP 查询页面,记下当前的出口 IP 和归属地。
- 连接加速,刷新同一个页面,再记一次。
- 两次地址不同,且第二次的归属地是你选的那个地区,说明流量已经走了隧道。
- 两次完全一样,说明你正在用的这个程序根本没走隧道,继续往下看。
不想开网页,也可以用系统自带的命令行查询:
# macOS / Linux
curl -s https://api.ipify.org
# Windows PowerShell(Windows 10 / 11 自带 curl.exe)
curl.exe -s https://api.ipify.org
# 想看运营商和城市,换成这个
curl -s https://ipinfo.io/json
命令行查出来的结果和浏览器不一致,是很常见的现象:浏览器读系统代理,终端不读。这个差异本身就有用,它能帮你判断客户端当前工作在哪种接管模式。
出口 IP 完全没变,通常出在这几个地方:
- 客户端当前是系统代理模式,而你正在用的程序不读系统代理。
- 分流规则把当前域名判成了直连。
- 系统里还开着另一个代理工具,两个客户端互相抢接管,后启动的那个说了算。
- 浏览器装了代理类扩展,扩展里的设置覆盖了系统代理。
第二步:查 DNS 有没有泄漏
DNS 负责把域名翻译成 IP 地址。如果隧道接管了网页流量,但域名解析仍然发给本地运营商,就会出现「能连上、但打开的站点不对,或者干脆打不开」,这就是常说的 DNS 泄漏。
两种查法,任选一种:
- 打开任一 DNS 泄漏检测页面,看它列出的解析服务器归属地。连接后如果列表里全是本地运营商,说明解析请求没走隧道。
- 命令行:macOS / Linux 执行
dig +short whoami.akamai.net,返回的是递归解析器看到的出口地址,用它判断解析请求从哪里发出;Windows 可以用nslookup做对照。
分流模式下,国内域名走本地 DNS 是设计的一部分,不算泄漏。判断是否泄漏,只看你访问的境外域名是不是也从境外出口解析。
如果确认解析确实走了本地,按顺序处理:
- 在客户端里打开 DNS 接管,有的客户端叫「DNS 保护」或「加密 DNS」。
- 浏览器如果开了「安全 DNS / DoH」,先关掉,或者把它设置成与客户端一致,它可能绕过客户端的 DNS 接管。
- 改完重连一次,再跑一遍上面的检查,看解析出口是否已经变化。
第三步:按应用分别验证
同一个地址在不同程序里结果不一样,这是排查中信息量最大的一步。
浏览器
用无痕窗口打开目标站点。无痕能开、普通窗口不能开,多半是某个扩展在改请求,逐个停用就能定位到具体是哪一个。
终端
命令行不读系统代理。想让它走隧道,要么把客户端切到 TUN 模式,要么临时设一次环境变量,端口以客户端里显示的为准:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
curl -s https://api.ipify.org
设完再查一次出口 IP,地址变了,说明终端也进了隧道。
桌面应用与移动端
- 桌面软件大多有自己的代理设置,默认是「不使用代理」,需要手动改成跟随系统,或填本地地址加端口。
- 移动端的分应用代理只对勾选过的应用生效,名单外的应用走直连,表现就是「连上了但某个 App 打不开」。
- iOS 上低电量模式和后台刷新策略会掐断长时间的后台连接,挂后台很久再打开,先看一眼客户端的连接状态。
「已连接但没生效」的常见情况与对策
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 出口 IP 完全没变 | 客户端在系统代理模式,当前程序不读系统代理 | 切到 TUN / 虚拟网卡模式,或在程序里手动填代理 |
| 只有某一个应用打不开 | 分应用代理名单里没有它 | 把它加进名单,或改成全局接管 |
| 网页能打开,但内容不对 | 域名被分流规则判成了直连 | 检查规则,把该域名放进代理列表 |
| 解析结果指向本地 | DNS 没走隧道,或浏览器安全 DNS 绕过 | 开启 DNS 接管,关掉浏览器的 DoH |
| 连接后更慢、部分站点超时 | 同时开着两个代理工具,互相抢接管 | 只留一个,另一个连后台进程一起退出 |
| 用一会儿就断,要手动重连 | 系统休眠、省电策略切断隧道 | 关掉对应省电限制,打开客户端的自动重连 |
同一台设备上只保留一个代理工具。两个客户端同时运行时,后启动的那个会抢走接管,表现就是「刚连上还好,过一会儿又不行了」。
- ❌ 客户端显示「已连接」就当成功,不看出口地址。
- ❌ 把国内域名走本地 DNS 当成泄漏,反复改设置。
- ❌ 排查时同时开着两个代理工具,变量太多。
- ❌ 只在浏览器里验证,忘了终端和桌面软件不读系统代理。
- ✅ 每次换线路后,重新查一次出口 IP 和 DNS 出口。
- ✅ 先只开一个代理工具,按「出口 IP → DNS → 分应用」的顺序走一遍。
三分钟自检流程
把上面三步串成一条固定流程,以后每次换线路、换设备都照这个顺序走一遍:
- 断开连接,查一次出口 IP 和归属地,记下来。
- 连接加速,刷新页面,确认出口 IP 已变、归属地是所选地区。
- 打开 DNS 泄漏检测页面,确认解析出口也在境外,顺手关掉浏览器的安全 DNS。
- 用无痕窗口和终端各访问一次同一个目标站点,结果一致,说明系统级接管正常。
- 检查分应用名单和分流规则,确认目标应用和目标域名都在接管范围内。
- 三项全过就算真的生效;只有某一项不过,按上一节的对照表处理。
出口 IP 变了、DNS 出口在境外、目标应用能打开——三条同时满足,就可以确认这次连接真的生效了。
换线路之前,先确认这两件事
三项自检里如果只有「打不开」过不去,很多人第一反应是换线路。换之前先确认两件事,能省下不少来回。
套餐与流量状态
月付套餐的流量按开通日每月重置;如果这个月的流量用完了,表现往往就是「连得上、打不开」。流量包是按量买的,用完为止、永久不过期,可以随时补。
线路类型的差别
- IEPL 专线:走独立通道,晚高峰更稳,适合对稳定性要求高的场景。
- 中转:入口在国内,多一跳,调度更灵活。
- 直连:直接从本地连到海外节点,受国际带宽波动影响更明显。
换一条同地区的线路,再跑一遍出口 IP 检查:地址变了、站点能开,说明是原来那条线路的问题;地址还是不变,问题就还在本机设置上。
结论:判断「连上了有没有生效」只看三件事——出口 IP 变了、DNS 出口在境外、目标应用真的能打开。三条都过,就不必再改设置;某一条不过,基本都是接管模式、分流规则或第二个代理工具造成的,和线路本身关系不大。