很多用户碰到VPN连接成功之后,不仅预设的内网资源无法正常访问,连普通公网网页也完全打不开,第一反应往往是修改本地终端的客户端配置,实际上超过半数的这类故障根源都出在网络端而非终端设置,这篇攻略就聚焦VPN连接后无法上网的网络端排查维度,一步步梳理可落地的验证和解决方法,帮用户避开大量无效的终端调试操作。
第一步:确认上层出口网络的NAT转发规则兼容性
很多家用光猫、企业级防火墙默认开启的对称NAT规则,会和VPN隧道的封装协议产生冲突,尤其是IPsec协议的VPN,部分运营商的公网NAT网关会直接丢弃带ESP封装的数据包,不会做正常的地址转换,最终导致隧道看似连接成功,实际没有任何有效流量可以正常转发。
排查的时候可以先断开VPN,用终端访问公开的IP查询站点,确认当前获取的公网IP和光猫WAN口标注的公网IP是否一致,如果不一致说明当前网络处于运营商的二级NAT内网环境,这时候可以先联系运营商客服要求解除端口限制,或者临时更换VPN的封装协议为TCP模式再重试。
这里要注意常见误区,很多用户以为只要自己家光猫拨了公网IP就不会有NAT兼容问题,实际上不少企业办公网的出口防火墙开启了VPN透传拦截规则,哪怕是公网直连环境也会直接阻断隧道的封装报文,这一步测试的时候可以先把VPN切换到非标准端口,再尝试连接后访问普通公网站点。
第二步:检查网络端的DNS转发配置冲突
VPN连接成功后无法打开普通网页,很大概率是网络端的DNS优先级覆盖出现了问题,很多VPN服务端默认会推送专属的DNS服务器地址,如果当前本地网络的运营商DNS和推送的DNS之间路由不通,就会出现所有域名都无法解析的故障,用户看起来就像完全断网。
排查的时候不需要急着修改本地DNS,先在VPN连接状态下,ping公网的已知公共DNS的IP地址,如果能ping通说明底层网络连通性没问题,只是域名解析环节出了故障,这时候可以登录你当前接入的路由器后台,查看是否开启了强制DNS劫持的相关规则,如果有这类规则先临时关闭再重试。
部分运营商的家用宽带默认绑定了专属的DNS服务器白名单,非指定的DNS请求都会被直接丢弃,这种场景下哪怕VPN服务端推送了第三方DNS,网络端也会直接拦截解析请求,最终表现就是VPN连接后完全打不开网页,这时候可以在VPN服务端配置里开启“不推送自定义DNS”的选项,沿用当前本地网络的运营商DNS即可。
第三步:验证VPN隧道的路由分流规则有效性
很多用户分不清全局模式和分流模式的区别,VPN服务端默认下发的全局路由规则,会要求所有流量都走VPN隧道转发,如果当前VPN出口的公网链路本身就无法连通部分公网站点,就会出现VPN连接后完全断网的情况。
排查的时候可以先登录VPN服务端的管理后台,查看下发的路由表条目,确认是否错误配置了默认路由的指向,把所有公网流量都导向了根本不存在的内网网关地址,这类配置错误在自行部署的开源VPN服务端场景里出现概率极高。
如果是企业场景下的远程办公VPN,很多运维会错误把公网主流站点的地址段也加入了强制走隧道的分流规则,一旦VPN服务端的出口带宽出现拥塞,就会导致远程用户连接VPN之后连普通公网都打不开,这时候可以临时添加一条针对常用公网服务的路由绕过VPN隧道,验证是否是分流规则配置错误导致的故障。
第四步:排查网络端的防火墙会话限制阈值
不少中低端家用路由器、小型企业防火墙有最大并发会话数的限制,VPN隧道建立之后会额外占用多条会话条目,如果之前终端的后台程序已经占满了防火墙的会话配额,新的转发请求就会被直接丢弃,表现为VPN连接成功后所有新发起的网络请求都无响应。
排查的时候可以先断开VPN,把路由器设备断电重启,清空所有历史会话条目之后再重新连接VPN,观察网络访问是否恢复正常,如果重启后故障消失,就说明当前接入的网络设备的会话承载能力不足,无法同时支撑原有业务流量加VPN隧道的转发需求。
需要注意的是,VPN连接后无法上网的网络端排查,要严格遵循从底层转发到上层应用的顺序逐步验证,不要一上来就修改终端的大量配置,先确认网络侧的每一个环节都没有冲突之后,再去核对终端的VPN客户端参数,就能快速定位绝大多数这类故障,避免不必要的调试成本。

