53、443、853 三个端口到底谁是谁,服务器安全组怎么开、客户端要不要管,连不上时按什么顺序查。
自建加密 DNS 服务端,安全组/防火墙只需放行入方向:TCP 853(DoT,RFC 7858 专用端口)、TCP 443(DoH,RFC 8484 复用 HTTPS 端口);若仍提供明文递归再放行 UDP/TCP 53。端口号由 IANA 端口注册表统一登记。客户端默认允许全部出站,一般无需配置;企业网若限制出站,放行到服务器的 853/TCP 与 443/TCP 即可。连不上时按「端口连通性 → 证书 → 主机名」顺序排查。
先把端口用途搞清楚,再谈放行
| 端口 | 传输层 | 用途 | 对应协议 |
|---|---|---|---|
53 | UDP / TCP | 传统明文 DNS 查询,未加密、可被窃听篡改 | 明文 DNS(基线) |
853 | TCP | DNS over TLS 专用端口,IANA 登记分配 | DoT(RFC 7858) |
443 | TCP | HTTPS 标准端口;DoH 把 DNS 报文封装进 HTTPS 直接复用 | DoH(RFC 8484) |
注意:DoQ 用 UDP 853(可 UDP 443),本页聚焦最常见的 DoH/DoT。Cloudflare 在其 1.1.1.1 DoT 文档中也沿用 853/TCP 这一端口约定。
以阿里云安全组为例的入方向规则清单
自建 DoT/DoH 服务端有两道防火墙:一是云厂商的「安全组」(云平台层),二是服务器本机的 firewalld / ufw / iptables。两层都要放行,缺一不可。
853,授权对象 0.0.0.0/0(或限定信任的客户端网段)。443,授权对象 0.0.0.0/0。53。仅当你仍想保留普通明文解析时开放;若只做加密 DNS,53 可以不开。以 firewalld 为例:firewall-cmd --permanent --add-port=853/tcp、--add-port=443/tcp,再 firewall-cmd --reload。ufw 则用 ufw allow 853/tcp、ufw allow 443/tcp。很多「安全组开了还是连不上」的问题,根子就在本机防火墙没同步。
DoT 程序在 853/TCP 上监听,并加载一张受信任 CA(如 Let's Encrypt)签发、主机名与客户端配置一致的证书;DoH 程序通常由 Web 服务器(如 nginx/caddy)在 443 上反向代理到 /dns-query 路径。证书与主机名不匹配时,客户端会按 RFC 7858 直接拒绝连接。
家用一般不用动,企业网才需要配
普通家庭网络对出站流量基本不做限制,客户端配好 DoT/DoH 地址就能直接用,无需在本机防火墙里额外放行。
只有在企业网、学校网这类做了出站管控的环境里,才需要联系网管放行到加密 DNS 服务器的出站规则:到 DoT 服务器的 TCP 853、到 DoH 服务器的 TCP 443。如果网管只放行了 53/UDP,那你的加密 DNS 会「被降级」回明文,等于没加密。
按顺序一步步来,多数问题在前两步就能定位
nc -zv 服务器 853(或 telnet 服务器 853)。不通=安全组/本机防火墙没放行 853/TCP,回到上一节补规则。ss -lntp | grep 853,看 DoT 进程是否绑在 0.0.0.0:853。只绑了 127.0.0.1 则外部连不上。openssl s_client -connect 服务器:853 -servername 主机名 看证书链是否由受信任 CA 签发、是否过期、主机名是否匹配。自签名证书会被客户端拒绝。nc -zv 服务器 853 测试端口连通性,再查证书是否由受信任 CA 签发、主机名是否匹配。