首页/网络/网络排障速查/DNS 端口连通性测试(UDP/TCP 53)
DNS 与解析排查46 条

DNS 端口连通性测试(UDP/TCP 53)

『解析全部超时』先确认 53 端口能不能出去:UDP/TCP 都测一遍,区分『网络不通』与『DNS 服务故障』。

网络排障速查网络更新于 2026-10-13

先证明 53 端口能出去

「解析全部超时」时,第一个要回答的问题不是「DNS 服务器坏了吗」,而是「53 端口能不能出去」。测试要分两条路径:UDP 53 是常规查询通道,TCP 53 用于应答过大时的回退,两者都要验。分清楚之后结论就很明确——UDP 与 TCP 都不通是网络或策略问题,只有 TCP 不通是防火墙只放行了 UDP,两者都通但解析失败才是 DNS 服务本身的问题。

基本信息

适用平台Linux(dig、nc、bash 内建 /dev/tcp)
协议依据RFC 1035:DNS 使用 53 端口,UDP 为主、TCP 用于大响应与区域传送
测试手段dig +time=2 +tries=1、dig +tcp、nc -zvu、bash 的 /dev/tcp 探测
常见策略企业网只允许内网 DNS 出 53,直连公共 DNS 被静默丢弃
判读顺序先测端口可达性,再测解析功能

典型使用场景

  • 解析整体失败:先区分端口不可达与 DNS 服务异常
  • UDP 正常但大响应失败:验证 TCP 53 是否被拦截
  • 新环境上线前验证:确认出向 53 策略符合预期
  • 排查容器环境解析:确认容器内到 DNS 服务器的 53 可达
  • 与安全团队核对策略:明确哪些网段允许直连外部 DNS

端口级测试

端口级测试
dig +time=2 +tries=1 @223.5.5.5 example.com        # UDP 查询(默认)
dig +tcp +time=2 +tries=1 @223.5.5.5 example.com   # 强制 TCP 53
# 测内网 DNS(更贴近真实使用路径)
dig +time=2 +tries=1 @10.0.0.53 example.com
# TCP 端口探测:bash 内建方式最可靠
timeout 3 bash -c 'cat < /dev/null > /dev/tcp/223.5.5.5/53' && echo TCP53-OK || echo TCP53-FAIL
# nc 的 UDP 结果参考价值有限,仅作辅助
timeout 3 nc -zvu 223.5.5.5 53

结果组合与结论

UDP 53TCP 53结论与方向
通通端口路径正常,问题在 DNS 服务或上游转发
通不通只放行了 UDP,大响应场景会失败,需放行 TCP 53
不通不通网络或策略整体阻断,先查安全策略与路由
不通通少见:可能 UDP 被单独丢弃,需查中间设备策略
超时但指定公共 DNS 通内网 DNS 有问题检查内网 DNS 服务状态与监听地址
企业网常见策略是只允许内网 DNS 出 53,直连公共 DNS 的流量被静默丢弃;此时 dig 指向公共 DNS 超时是策略使然,不代表故障。
对比出结论:同一台机器分别测内网 DNS 与公共 DNS,一侧通一侧不通,基本可以直接指向安全策略而不是服务故障。

易错点

  • 用 ping 判断 DNS 服务器通不通:ICMP 可达不能证明 53 端口开放,结论无效
  • 只测 UDP 不测 TCP:截断回退场景下 TCP 53 被拦,问题会以「偶发大响应失败」的形式反复出现
  • 依赖 nc 测 UDP:UDP 无连接,nc 无法确认对端是否响应,应以 dig 的超时行为为准
  • 在客户端侧反复排查:先确认是策略限制还是服务故障,否则会在无问题的方向上消耗大量时间

数据来源与参考

  • RFC 1035(DNS 使用 53 端口)
  • bash TCP/UDP 探测实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌