自建 DNS 最常被问的问题:"我安卓手机私人 DNS 填了你的地址,为什么连不上?" 这篇文章按排查顺序,把可能的原因一个个过一遍。
第一步:确认设置入口
安卓(9+)路径:设置 → 网络和互联网 → 高级 → 私人 DNS → 选择"指定私人 DNS 提供商",填入你的 DoT 域名(比如 dns.example.com)。注意填的是域名,不是 IP,也不用填端口(固定走 853)。
第二步:服务器端检查清单
1. 853 端口是否监听 → netstat -tlnp | grep 853
2. 安全组/防火墙是否放行 → 阿里云安全组要单独放行 853/tcp
3. 证书域名是否匹配 → DoT 证书的 CN/SAN 必须等于你填的域名
4. 服务器时钟是否准确 → 时间错了证书验证直接失败(chrony 装上)
5. 解析是否已生效 → itdog 等在线工具 ping 一下域名证书是重灾区:很多人用自签证书,或者证书是别的域名的,手机端严格校验证书,直接拒绝连接。用 openssl s_client 加 -connect 你的域名:853 -servername 你的域名 可以验证。
第三步:客户端缓存
域名解析有 TTL,改了解析后手机端可能还缓存着旧 IP。重启手机或开关飞行模式是最快的清缓存方式。
第四步:网络环境因素
有些网络环境下 853 端口会被封锁(跨境、酒店 Wi-Fi、校园网)。判断方法:手机热点 + 另一台设备测试,或者换网络环境试试。如果你的服务器在国外而人在国内,853 跨境握手被干扰是很常见的——这种场景要么换国内服务器,要么临时用 VPN 过渡(不推荐长期)。
最后
连不上时按"端口 → 证书 → 时间 → 解析 → 缓存"五步走,90% 的问题都能定位。别一上来就怀疑 AGH 配置,大部分时候是网络和证书的问题。