您的位置: 新闻资讯 > 行业动态 > 正文

DNS会话连接释放详解|UDP与TCP-DNS断开机制、Wireshark抓包分析与运维排坑(图文)


来源:mozhe 2026-10-20


 

前言

很多运维在排查DNS解析缓慢、DNS服务器TIME_WAIT连接堆积、连接复用异常问题时,经常忽略一个关键点:DNS会话连接释放。
DNS分为UDP 53和TCP 53两种通信模式,二者会话释放逻辑完全不一样。UDP无连接,靠超时释放;TCP-DNS是标准TCP长/短连接,遵循四次挥手,还支持EDNS保活协商。大量DNS连接不规范释放,会导致DNS服务器端口资源耗尽、解析超时,甚至被利用做DDoS攻击。

一、UDP DNS:没有真正会话,依靠超时释放

标准普通DNS查询默认使用UDP 53,UDP本身无连接,不存在TCP那种握手与挥手。
  1. 流程:客户端发送DNS查询 → 服务器返回应答,单次事务结束。协议层面不会主动发送"关闭报文"。
  2. 会话状态维护:客户端/服务器依靠五元组+事务ID,在本地维护短暂的会话缓存。
  3. 释放规则:超时自动清除。如果一段时间没有报文交互,系统直接销毁这条临时会话记录。
特点:查询完就结束,无连接资源占用;缺点是大报文会触发TC截断标记,自动切换TCP DNS。

二、TCP-DNS会话释放:四次挥手 + EDNS保活机制

当DNS应答报文大于512字节,TC位置1,客户端切换TCP 53通信(RFC7766)。TCP-DNS存在真实TCP会话,会话释放分为正常优雅关闭、强制RST断开两种。

1. 正常优雅释放(四次挥手)

规范建议:由客户端主动发起关闭,把TIME_WAIT留在客户端,避免DNS服务器堆积大量TIME_WAIT套接字,防止服务器资源耗尽。
  1. 客户端DNS查询完成,发送FIN
  2. 服务器回复ACK,继续处理剩余查询
  3. 服务器发送FIN
  4. 客户端回复ACK,TCP会话正式释放
如果服务器主动关闭连接,服务器侧产生大量TIME_WAIT,高并发DNS场景极易引发端口耗尽故障。

2. EDNS TCP Keepalive(RFC7828)

EDNS0扩展edns-tcp-keepalive,可以协商TCP DNS空闲超时时间,服务器通知客户端空闲多久后关闭连接,实现TCP连接复用,减少频繁握手释放带来的性能损耗。服务器过载时还可以通知客户端立即关闭连接,减轻压力。

3. 异常强制释放(TCP RST)

出现下面场景,直接RST强制断开会话,跳过四次挥手:
  • 收到不匹配事务ID的DNS应答;
  • 连接长时间空闲、服务器资源不足;
  • 网络断连、防火墙会话超时清理;
  • 检测到异常攻击流量,安全设备直接重置TCP会话。

三、Wireshark抓包识别DNS会话释放(直接复制过滤语句)


 
dns || tcp.port ==53

流量识别要点

  1. UDP DNS:只有DNS Query + Response,没有FIN/RST挥手包,会话靠系统超时清理;
  2. TCP DNS正常释放:可以看到FIN、ACK成对四次挥手报文;
  3. TCP异常释放:出现TCP RST报文,会话直接终止;
  4. EDNS保活:DNS报文中携带edns-tcp-keepalive选项,包含超时时间。

四、运维常见故障与坑点

坑1:DNS服务器大量TIME_WAIT
原因:服务端主动关闭TCP-DNS会话。
优化方案:遵循RFC规范,让客户端发起关闭TCP连接,把TIME_WAIT转移至客户端。
坑2:DNS解析偶发超时,抓包发现TCP会话被防火墙提前切断
原因:防火墙会话老化时间太短,TCP-DNS空闲连接被防火墙提前释放,后续复用连接直接失败。
解决方案:调大防火墙TCP 53端口会话超时,或者合理配置EDNS保活超时。
坑3:攻击者不释放TCP DNS会话,大量长连接挂死服务器
攻击方式:建立大量TCP 53连接,保持空闲不关闭,耗尽服务器文件描述符。
防护:DNS服务器配置空闲连接超时,自动关闭长时间无查询的TCP会话;防火墙限制单IP最大并发TCP DNS连接数。

五、优化与防护建议

  1. 业务优先UDP DNS;大解析报文自动切换TCP;
  2. 启用EDNS-TCP-Keepalive,合理协商空闲超时,平衡连接复用与资源占用;
  3. 防火墙针对TCP 53做并发连接限制,拦截恶意长连接;
  4. 监控DNS服务器TIME_WAIT、CLOSE_WAIT状态数量,及时发现连接释放异常;
  5. 抓包排查时区分:正常四次挥手、RST异常断开、防火墙会话老化断开。

结尾总结

DNS会话释放分两套机制:UDP DNS无连接,靠超时释放;TCP-DNS基于TCP四次挥手,搭配EDNS保活优化连接复用。
运维排查DNS解析异常时,不要只看DNS应答内容,一定要观察会话如何建立与释放。大量RST、堆积TIME_WAIT、CLOSE_WAIT,往往就是连接释放异常的信号。
参考协议标准:RFC7766、RFC7828、RFC9210

 

关于墨者安全
墨者安全致力于安全防护、服务器高防、网络高防、ddos防护、cc防护、dns防护、防劫持、高防服务器、高防dns、网站防护等方面的服务,全网第一款指纹识别技术防火墙,自研的WAF指纹识别架构,提供任意CC和DDoS攻击防御
 

热门文章

X

7x24 小时

免费技术支持

15625276999


-->