运维实战 · 加密 DNS 端口与防火墙

DoH / DoT 端口与防火墙
放行清单

53、443、853 三个端口到底谁是谁,服务器安全组怎么开、客户端要不要管,连不上时按什么顺序查。

TL;DR · 放行速记

自建加密 DNS 服务端,安全组/防火墙只需放行入方向:TCP 853(DoT,RFC 7858 专用端口)、TCP 443(DoH,RFC 8484 复用 HTTPS 端口);若仍提供明文递归再放行 UDP/TCP 53。端口号由 IANA 端口注册表统一登记。客户端默认允许全部出站,一般无需配置;企业网若限制出站,放行到服务器的 853/TCP 与 443/TCP 即可。连不上时按「端口连通性 → 证书 → 主机名」顺序排查。

Port Reference

三个端口分别是谁

先把端口用途搞清楚,再谈放行

端口传输层用途对应协议
53UDP / TCP传统明文 DNS 查询,未加密、可被窃听篡改明文 DNS(基线)
853TCPDNS over TLS 专用端口,IANA 登记分配DoT(RFC 7858)
443TCPHTTPS 标准端口;DoH 把 DNS 报文封装进 HTTPS 直接复用DoH(RFC 8484)

注意:DoQ 用 UDP 853(可 UDP 443),本页聚焦最常见的 DoH/DoT。Cloudflare 在其 1.1.1.1 DoT 文档中也沿用 853/TCP 这一端口约定。

Server Side

服务端监听与安全组放行

以阿里云安全组为例的入方向规则清单

自建 DoT/DoH 服务端有两道防火墙:一是云厂商的「安全组」(云平台层),二是服务器本机的 firewalld / ufw / iptables。两层都要放行,缺一不可。

安全组入方向规则(阿里云 / 腾讯云等同理)

  • DoT:协议 TCP,端口 853,授权对象 0.0.0.0/0(或限定信任的客户端网段)。
  • DoH:协议 TCP,端口 443,授权对象 0.0.0.0/0。
  • 明文递归(可选):协议 UDP+TCP,端口 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 直接拒绝连接。

Client Side

客户端出站要不要管

家用一般不用动,企业网才需要配

普通家庭网络对出站流量基本不做限制,客户端配好 DoT/DoH 地址就能直接用,无需在本机防火墙里额外放行。

只有在企业网、学校网这类做了出站管控的环境里,才需要联系网管放行到加密 DNS 服务器的出站规则:到 DoT 服务器的 TCP 853、到 DoH 服务器的 TCP 443。如果网管只放行了 53/UDP,那你的加密 DNS 会「被降级」回明文,等于没加密。

Troubleshooting

「连不上加密 DNS」排查流程

按顺序一步步来,多数问题在前两步就能定位

1
先测端口连通性。在客户端执行 nc -zv 服务器 853(或 telnet 服务器 853)。不通=安全组/本机防火墙没放行 853/TCP,回到上一节补规则。
2
确认服务端真的在监听。在服务器本机执行 ss -lntp | grep 853,看 DoT 进程是否绑在 0.0.0.0:853。只绑了 127.0.0.1 则外部连不上。
3
检查证书。用 openssl s_client -connect 服务器:853 -servername 主机名 看证书链是否由受信任 CA 签发、是否过期、主机名是否匹配。自签名证书会被客户端拒绝。
4
核对客户端填的主机名。安卓私人 DNS 填的是主机名而非 IP,必须与证书 CN/SAN 一致;填错会直接显示「无法连接」而非降级。
5
确认运营商/中间设备没封 853。若 853 被针对性封锁,DoT 会一直超时;此时改用 DoH(443/TCP)绕开,因为 443 几乎不可能被整体封掉。
FAQ

常见问题

自建 DoT 服务端,安全组到底要放行哪个端口?+
放行入方向 TCP 853。DoT 走 TCP,RFC 7858 指定 853 专用端口。若同时提供 DoH,再放行入方向 TCP 443;若还想保留普通明文递归查询,放行 UDP/TCP 53。
为什么我配置了 DoT 还是连不上?+
最常见原因是服务器安全组/防火墙没放行 853/TCP 入方向,或本机 firewalld/ufw 没开。先用 nc -zv 服务器 853 测试端口连通性,再查证书是否由受信任 CA 签发、主机名是否匹配。
客户端这边需要在防火墙里放行什么?+
客户端通常默认允许所有出站,无需特别配置。若企业网做了出站限制,需要放行到 DoT 服务器的 TCP 853、到 DoH 服务器的 TCP 443;UDP 53 出站则对应明文 DNS。
DoH 的 443 和普通网站的 443 是同一个端口吗?+
是同一个 TCP 443。DoH 把 DNS 报文封装进 HTTPS 请求,因此直接复用网站的 443 端口与 TLS 基础设施,不需要额外开新端口。
References

参考来源