最近遇到一个让我有点头大的问题:我自己的博客在外网打开一切正常,用手机 5G 也没问题,但是家里或公司局域网下,死活打不开,浏览器要么转圈,要么直接报“连接被重置”。
当时我第一反应是 DNS 问题,毕竟公网能打开而局域网不行,多半是本地缓存或者解析走了奇怪的路径。结果我 flushdns、换 8.8.8.8、清除浏览器缓存,全都没用。我甚至还重启了光猫+路由器,还是一样。
这时候我想到了是不是宝塔的防火墙规则在作怪。于是我登录服务器后台(我用的是腾讯云轻量),打开了宝塔面板,果然防火墙规则里只放行了 443 和 888(我 Nginx 设置的端口),但没有把 IPv6 的访问也放行。
你别说,我把 IPv6 相关端口补上以后,局域网立刻能访问了。之前路由器开启了内网 IPv6 自动配置,结果 DNS 解析其实已经走了 AAAA 记录,但服务器防火墙没放,导致访问失败。
顺带说一句,如果你的网站用了 Cloudflare 代理,而你服务器端口不是标准 443,也可能会导致局域网访问失败——我自己试过一次,Cloudflare 的 HTTPS 请求过来因为 SNI 错误直接被 Nginx 拒绝了。
还有一点别忽略了:局域网下很多时候用的是 IPv6 访问,尤其是 Windows 默认双栈 DNS 优先 AAAA。所以如果你的网站没开 IPv6,就别解析 AAAA;如果开了,就别忘了服务器上 Nginx 配置加上:
listen [::]:443 ssl http2;
总结下来吧,我这次踩坑的核心教训就是 ——“局域网无法访问”不一定是你的网络出问题了,很可能是你 DNS 指到了 IPv6,而你服务端根本没准备好接 IPv6 请求。
所以如果你也遇到类似问题,不妨试试我这套排查路线:看 DNS → 看是否代理了 CDN → 检查 Nginx 和防火墙 → 对照一下 IPv6 的实际连接状态。
排查问题的过程,其实就是一步步拆盲盒,别急着重装系统或砸路由器,多半是你哪一步配置没细看。
原来IPv6会导致这种问题啊,学到了!