DNS port 是什么?DNS 使用哪个端口?
简答:DNS port 通常指 DNS 服务通信使用的端口:传统 DNS 默认使用 UDP 53,必要时回退到 TCP 53;DNS over TLS 使用 TCP 853,DNS over HTTPS 通常通过 HTTPS 443,局域网多播 DNS 使用 UDP 5353。配置防火墙时,普通 DNS 服务通常要同时考虑 UDP 53 和 TCP 53,但客户端发起查询时使用的源端口往往是随机高位端口。
定义:DNS port 是 DNS 客户端、DNS 服务器或相关解析协议收发 DNS 查询与响应时使用的传输层端口号。
先看端口对照表:你需要放行哪个 DNS port?
如果你只是配置普通 DNS,先记住最短结论:UDP 53 是常规查询的首选,TCP 53 是重要的备用和传输通道。使用加密 DNS 时,端口会随协议变化。
| 协议或场景 | 常见端口 | 传输方式 | 主要用途 |
|---|---|---|---|
| 传统单播 DNS | 53 | UDP | 大多数普通域名查询 |
| 传统单播 DNS | 53 | TCP | 响应过大、截断后重试、区域传输等场景 |
| DNS over TLS(DoT) | 853 | TCP | 通过 TLS 加密 DNS 查询 |
| DNS over HTTPS(DoH) | 443 | HTTPS/TLS | 把 DNS 查询放进 HTTPS 请求中 |
| Multicast DNS(mDNS) | 5353 | UDP | 局域网设备发现和 .local 名称解析 |
传统 DNS 的 UDP 53 和 TCP 53 依据 Microsoft 对 DNS 网络端口的说明;DoT 的默认 TCP 853 见 RFC 7858;DoH 基于 HTTPS,默认 HTTPS 端口通常为 443,协议定义见 RFC 8484;mDNS 使用 UDP 5353,见 RFC 6762。
DNS 查询时,服务器端口和客户端源端口不是一回事
最容易混淆的是“DNS 使用 53 端口”和“电脑本地也必须固定使用 53 端口”。两者并不相同。
- 客户端先生成一个 DNS 查询,并从本机的临时高位源端口发出。
- 查询的目标通常是 DNS 服务器的 53 端口,例如 UDP 目标端口 53。
- DNS 服务器从源端口 53 返回响应。
- 客户端根据此前建立的通信信息,把响应交给发起查询的程序。
Microsoft 文档列出的常见 Windows DNS 通信方式是:查询从随机高位源端口发往目标端口 53,响应则从 DNS 服务器的 53 端口返回客户端的高位目标端口。不同操作系统、客户端和网络设备的临时端口范围可能不同,因此不应把客户端源端口硬编码成 53。
| 位置 | 典型端口 | 含义 |
|---|---|---|
| DNS 服务器监听端口 | 53 | 等待传统 DNS 查询 |
| 客户端查询源端口 | 随机高位端口 | 由系统或解析器临时分配 |
| 客户端查询目标端口 | 53 | DNS 服务器接收查询的位置 |
| DNS 服务器响应源端口 | 53 | 传统 DNS 服务器返回响应的位置 |
为什么普通 DNS 不只需要 UDP 53?
UDP 没有建立连接的额外过程,报文开销较小,因此适合大多数普通 DNS 查询。但 DNS 响应可能因为记录数量、DNSSEC 或其他扩展信息而变大。当 UDP 响应无法完整装下时,响应可能带有截断标记,客户端需要改用 TCP 53 重新查询。
TCP 53 还用于 DNS 服务器之间的区域传输等需要可靠传输的场景。Microsoft 的 DNS 端口说明同时列出了 UDP 53 和 TCP 53;其服务端口文档也将 DNS 服务对应到 UDP 53 和 TCP 53。因此,防火墙只放行 UDP 53,可能导致部分域名或特定 DNS 操作失败。
实用结论:如果你管理的是 DNS 服务器、路由器出口策略或企业防火墙,通常应分别检查出站和入站的 UDP 53、TCP 53,而不是只检查 UDP 53。
DoT 853、DoH 443 和普通 DNS 53 有什么区别?
| 比较项 | 传统 DNS | DoT | DoH |
|---|---|---|---|
| 常见端口 | UDP/TCP 53 | TCP 853 | HTTPS 443 |
| 是否加密传输 | 默认不加密 | 通过 TLS 加密 | 通过 HTTPS/TLS 加密 |
| 配置重点 | DNS 地址和 53 端口 | 服务器地址、TLS 主机名和 853 | DoH URL、HTTPS 连接和 443 |
| 排查重点 | UDP/TCP 53 是否被拦截 | TCP 853 和证书握手是否正常 | HTTPS 443、URL 和 TLS 是否正常 |
DoT 是在 TCP 853 上建立 TLS 连接,RFC 7858 明确规定默认使用 TCP 853,且该端口不应传输明文 DNS。DoH 则把 DNS 查询和响应映射到 HTTP 交换中,使用 HTTPS 的安全传输能力;因此看到 443 并不代表它一定是普通网页访问,也可能承载 DoH。
需要注意的是,加密传输和 DNSSEC 解决的问题不同:DoT、DoH 主要保护客户端与解析服务之间的传输过程,DNSSEC 主要用于验证 DNS 数据的来源和完整性,不能简单把两者视为同一种功能。
mDNS 为什么使用 UDP 5353?
mDNS 是 Multicast DNS 的缩写,主要服务于局域网内的设备发现,例如查找带有 .local 名称的设备或配合局域网服务发现。它不是普通互联网单播 DNS 的另一个写法,而是使用链路本地多播地址和 UDP 5353 的独立机制。
RFC 6762 指定 mDNS 使用 UDP 5353,并规定相关查询和响应发送到 mDNS 多播地址。普通 DNS 服务器通常监听单播 53 端口,不能因为 53 可用就自动替代局域网 mDNS。
如果局域网打印机、共享设备或本地服务发现失败,可以检查网络是否允许局域网多播以及 UDP 5353;但不要为了修复普通域名解析,随意把所有公网 DNS 请求改发到 5353。
防火墙配置 DNS port 的最短操作流程
下面的流程适用于你正在配置个人电脑、路由器、服务器或企业网络出口的情况。菜单名称会因系统和防火墙产品版本不同而变化,以下是通用判断路径。
- 先确认使用的协议:普通 DNS 检查 UDP 53 和 TCP 53;DoT 检查 TCP 853;DoH 检查 HTTPS 443;局域网 mDNS 检查 UDP 5353。
- 确认方向:客户端通常需要允许向 DNS 服务器发起出站连接;DNS 服务器还需要允许对应端口的入站请求。不要只看端口号而忽略入站、出站和接口范围。
- 确认目标地址:把规则限定到实际使用的 DNS 服务器或可信网络范围,避免为了测试而长期放开所有来源。
- 先测试 UDP,再测试 TCP:普通查询通常先走 UDP 53;如果 UDP 查询失败或响应被截断,再检查 TCP 53。
- 记录失败位置:如果 UDP 53 超时,重点看出站规则、路由器和 DNS 地址;如果 UDP 成功但 TCP 53 失败,重点看 TCP 防火墙规则或服务器监听状态。
如果网络环境强制使用加密 DNS,则不要把“53 端口可用”当成 DoT 或 DoH 可用的证明;它们需要分别验证 853 或 443 以及对应的 TLS/HTTPS 配置。
用 nslookup、dig 和系统命令验证 DNS 通信
验证时建议先做名称解析,再按协议检查端口。命令只负责观察当前结果,不代表某个 DNS 服务永久可用。
Windows:使用 nslookup 检查解析
在命令提示符或 PowerShell 中运行:
nslookup example.com
观察是否返回 DNS 服务器地址和解析结果。如果需要指定 DNS 服务器,可运行:
nslookup example.com 1.1.1.1
如果解析超时,继续检查 DNS 地址、网络出口以及 UDP 53;不要仅凭浏览器打不开网页就断定是 DNS 53,因为网页本身还涉及 TCP 或 TLS 连接。
Linux 或 macOS:使用 dig 区分 UDP 和 TCP
默认查询通常使用 UDP:
dig @1.1.1.1 example.com
强制使用 TCP 53:
dig +tcp @1.1.1.1 example.com
如果默认查询成功而 +tcp 失败,说明需要进一步检查 TCP 53 的路径、防火墙和 DNS 服务器监听情况。
Windows:测试 TCP 端口
PowerShell 可以测试 TCP 连接:
Test-NetConnection 1.1.1.1 -Port 53
该命令主要验证 TCP 53,不等于验证 UDP 53。UDP 是否可用,仍应结合 nslookup、抓包工具或防火墙日志判断。
Linux:查看本机套接字
如果你管理 DNS 服务,可使用:
ss -lntup | grep ':53'
它用于查看本机是否有进程监听与 53 相关的 TCP 或 UDP 套接字。若没有输出,不代表远端 DNS 不可用,只说明当前机器可能没有本地 DNS 服务监听 53。
DNS port 常见误区与安全边界
- 误区一:DNS 53 等于网站 53。 DNS 53 是名称解析通信端口,不是网页服务端口。HTTP 常见端口是 80,HTTPS 常见端口是 443;解析域名和访问网站是两个不同步骤。
- 误区二:只开放 UDP 53 就足够。普通查询常用 UDP,但响应过大、区域传输或回退场景可能需要 TCP 53。
- 误区三:客户端必须固定使用源端口 53。多数客户端使用临时高位源端口,目标 DNS 服务器才通常是 53。
- 误区四:DoH 一定能从端口号看出来。DoH 使用 HTTPS 443,与普通网页共享常见端口,仅看 443 不能确认具体应用。
- 误区五:DNS 端口改了就能解决所有连接问题。域名解析成功后,还要继续建立到目标服务的连接;延迟、丢包、MTU、路由和客户端策略都可能造成后续连接失败。
安全上,DNS 服务器不应无条件向互联网开放递归服务。配置规则时应限制来源、接口和用途,并通过日志确认实际流量;这里只讨论端口和排查方法,不替代具体防火墙产品的安全策略。
常见问题
DNS port 默认是多少?
传统 DNS 默认使用 53 端口,并同时涉及 UDP 53 和 TCP 53。普通查询通常优先使用 UDP,遇到响应过大或需要可靠传输的场景可能使用 TCP。
防火墙只放行 UDP 53 可以吗?
不建议把它作为完整配置。普通 DNS 常用 UDP 53,但 TCP 53 可能用于截断响应后的重试、较大响应以及区域传输。管理 DNS 服务或出口防火墙时,应按实际方向分别检查 UDP 53 和 TCP 53。
DoT 和 DoH 分别使用哪个端口?
DoT 默认使用 TCP 853;DoH 通过 HTTPS 传输,通常使用 HTTPS 的 443 端口。具体是否启用,还要看客户端和 DNS 服务的配置。
5353 是普通 DNS 端口吗?
不是。UDP 5353 通常用于 Multicast DNS,也就是 mDNS,主要面向局域网设备发现和 .local 名称解析;普通单播 DNS 通常使用 53。
为什么 nslookup 能解析,但网页仍然打不开?
nslookup 主要证明某个域名解析请求得到响应,不等于后续网页连接成功。网页访问还涉及目标 IP 的路由、TCP 或 QUIC、TLS、代理、MTU 和丢包等因素,建议把 DNS 解析和后续连接分开测试。
如何确认 TCP 53 是否可用?
Linux 或 macOS 可以用 <code>dig +tcp @DNS服务器 域名</code>;Windows PowerShell 可以用 <code>Test-NetConnection DNS服务器 -Port 53</code>。后者主要测试 TCP,不代表 UDP 53 一定可用。