首页
/
排错调优
/

连上了 VPN 却打不开网页:按层排查的清单

排错调优

连上了 VPN 却打不开网页:按层排查的清单

VPN 连上却打不开网页,问题通常出在隧道、路由、DNS、MTU、服务端转发五层之一。本文给出每一层的验证命令和判断依据,按顺序走一遍即可定位。

连上了 VPN 却打不开网页:按层排查的清单 封面

VPN 客户端显示“已连接”,网页却一直转圈,这类问题很少是单一原因。更有效的做法是从下往上分层验证:先确认隧道真的通,再看流量有没有走进隧道,然后是名称解析、包大小,最后才是服务端的转发。每一层都有一条命令能给出明确结论。

第一层:隧道本身有没有建立

“已连接”只代表客户端进程在运行,不代表握手完成。WireGuard 用 wg show 查看 latest handshake,没有这一行或时间很久以前,就说明握手没成功;OpenVPN 看日志里是否出现 Initialization Sequence Completed。握手失败的常见原因是服务端端口被防火墙拦住、两端密钥不匹配,或者本机时间偏差过大。

判断问题出在哪一层
判断问题出在哪一层

怎么判断是握手问题还是后面的问题

能 ping 通隧道对端地址(例如服务端的内网地址)就说明隧道已通,后面都是路由或转发问题;连隧道对端都 ping 不通,就停在这一层继续查。

第二层:流量有没有走进隧道

在 Linux 上执行 ip route get 8.8.8.8,输出里的 dev 应当是隧道网卡;Windows 上用 route print 看 0.0.0.0 的默认路由。如果配置的是分流,目标地址不在 AllowedIPs 或推送路由范围内,流量会走原来的网卡,表现为“连上了但没有任何变化”。

默认路由被其他软件抢走怎么办

同时运行多个 VPN 或代理软件时,后启动的会改写路由表。关掉其他网络类软件后重连,用 route print 对照前后的变化即可确认。

第三层:域名解析是否正常

先用 IP 直接访问,例如 ping 8.8.8.8。IP 通而域名不通,基本就是 DNS 问题:隧道配置里的 DNS 服务器在服务端不可达,或系统仍在使用本地网络下发的 DNS。Linux 用 resolvectl status 查看当前链路的 DNS,Windows 用 ipconfig /all。

从下往上的五层排查顺序
从下往上的五层排查顺序

第四层:MTU 与大包丢失

症状是小页面能打开、大页面和 HTTPS 握手卡住。隧道封装会占用头部空间,隧道网卡的 MTU 小于物理网卡。可以用带不分片标志的 ping 探测:Linux 用 ping -M do -s 1372 8.8.8.8,Windows 用 ping -f -l 1372 8.8.8.8,逐步减小数值直到能通。

怎么算出应该设置的 MTU

探测到的最大不分片负载加 28(20 字节 IP 头加 8 字节 ICMP 头)就是这条路径的 MTU。隧道 MTU 要再减去封装开销:WireGuard 在 IPv4 上占 60 字节、IPv6 上占 80 字节,默认值 1420 就是按 1500 减 80 预留的。例如探测到负载 1372,路径 MTU 为 1400,保守起见把隧道 MTU 设为 1320。

第五层:服务端是否开启转发与地址转换

如果是自建服务端,需要确认 net.ipv4.ip_forward 为 1,并且有把隧道网段转换成出口地址的规则,可用 iptables -t nat -L POSTROUTING -n 检查。缺少这一条时,客户端的包能到服务端,回包却回不来。

症状与所在层对照

症状可能所在层验证方法
没有 latest handshake隧道wg show,查看服务端端口与密钥
连上后 IP 没变化路由ip route get 或 route print
ping IP 通,域名不通DNSresolvectl status、ipconfig /all
小页面能开,大页面卡住MTU不分片 ping 逐步缩小
隧道内通,外网不通服务端转发ip_forward 与 NAT 规则
VPN
排错
路由
DNS
MTU

相关文章

链路笔记

链路笔记:分享网络与隐私工程的实践笔记,涵盖协议原理、加密与隐私、连接排错与性能调优。

© 2026 链路笔记