前言
很多运维在排查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那种握手与挥手。
- 流程:客户端发送DNS查询 → 服务器返回应答,单次事务结束。协议层面不会主动发送"关闭报文"。
- 会话状态维护:客户端/服务器依靠五元组+事务ID,在本地维护短暂的会话缓存。
- 释放规则:超时自动清除。如果一段时间没有报文交互,系统直接销毁这条临时会话记录。
特点:查询完就结束,无连接资源占用;缺点是大报文会触发TC截断标记,自动切换TCP DNS。
二、TCP-DNS会话释放:四次挥手 + EDNS保活机制
当DNS应答报文大于512字节,TC位置1,客户端切换TCP 53通信(RFC7766)。TCP-DNS存在真实TCP会话,会话释放分为
正常优雅关闭、
强制RST断开两种。
1. 正常优雅释放(四次挥手)
规范建议:
由客户端主动发起关闭,把TIME_WAIT留在客户端,避免DNS服务器堆积大量TIME_WAIT套接字,防止服务器资源耗尽。
- 客户端DNS查询完成,发送FIN
- 服务器回复ACK,继续处理剩余查询
- 服务器发送FIN
- 客户端回复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
流量识别要点
- UDP DNS:只有DNS Query + Response,没有FIN/RST挥手包,会话靠系统超时清理;
- TCP DNS正常释放:可以看到FIN、ACK成对四次挥手报文;
- TCP异常释放:出现TCP RST报文,会话直接终止;
- 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连接数。
五、优化与防护建议
- 业务优先UDP DNS;大解析报文自动切换TCP;
- 启用EDNS-TCP-Keepalive,合理协商空闲超时,平衡连接复用与资源占用;
- 防火墙针对TCP 53做并发连接限制,拦截恶意长连接;
- 监控DNS服务器TIME_WAIT、CLOSE_WAIT状态数量,及时发现连接释放异常;
- 抓包排查时区分:正常四次挥手、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攻击防御