首页/网络/网络排障速查/EDNS 与 +bufsize:UDP 响应大小控制
DNS 与解析排查46 条

EDNS 与 +bufsize:UDP 响应大小控制

传统 DNS UDP 上限 512 字节,EDNS(0) 允许更大响应(常用 1232~4096);中间设备丢弃大 UDP 包是『有些域名查不到/间歇失败』的隐藏原因。

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

EDNS 与 bufsize 是什么

传统 DNS 规定 UDP 响应不超过 512 字节,超出只能置 TC 标志让客户端改用 TCP 重查。EDNS(0)(RFC 6891)允许双方在 OPT 段协商更大的 UDP 载荷,常用的安全上限是 1232 字节,可以避免在路径 MTU 较小的链路上被分片丢弃。『小域名正常、记录多的域名间歇失败』往往就是大 UDP 响应被中间设备拦掉。

基本信息

适用平台所有 DNS 客户端与服务器;dig 提供 +bufsize 与 +noedns
传统上限512 字节,超出置 TC 标志改用 TCP
推荐值1232 字节,规避路径 MTU 导致的分片问题
关键标志OPT 段(EDNS 协商)、tc 标志(响应被截断)

典型使用场景

  • 部分域名解析失败而其他正常:用不同 bufsize 对比确认是否为大包被拦
  • DNSSEC 环境解析异常:签名字段显著增大响应体积,更容易触发分片问题
  • TXT 记录较多的域名:记录集合越大,超过 512 字节的概率越高
  • 老旧设备兼容性验证:用 +noedns 做对照,确认设备是否对 EDNS 处理异常

缓冲区与 EDNS 测试

缓冲区与 EDNS 测试
# 强制小缓冲:出现 tc 标志说明响应已超限
dig +bufsize=512 example.com
# 常用安全值,避免路径分片
dig +bufsize=1232 example.com
# 关闭 EDNS 做对照,观察中间设备行为差异
dig +noedns example.com
# 直接观察 OPT 段是否存在
dig +bufsize=1232 example.com | grep -A2 OPT

关键元素判读

元素含义异常指向
OPT 段EDNS 协商信息:版本、UDP 大小、DO 位缺失说明对端未启用 EDNS,可能回退到 512
tc 标志响应被截断,需要 TCP 重查频繁出现说明链路限制了 UDP 大包
1232主流推荐的 UDP 载荷上限设得更大在部分链路上更易被丢弃
DO 位请求 DNSSEC 相关记录DNSSEC 排查时需要显式关注
判断大包是否被拦的对照法:对同一域名分别用 +bufsize=512 与默认值查询。512 成功而默认失败,基本可以确认中间设备丢弃了较大的 UDP 响应。
把 bufsize 一味设大(如 4096)并不更稳:响应更容易超过路径 MTU 而被分片或丢弃,实践中 1232 是兼顾兼容性与体积的通用折中值。

易错点

  • 忽略 tc 标志直接读答案:截断响应只包含部分记录,结论不完整
  • 把 bufsize 设得过大:在部分链路上更易被分片丢弃,反而更不稳定
  • 看到解析失败就怀疑权威服务器:应先做 bufsize 对照,确认是否为大包被拦
  • 只在一台客户端上验证:不同网络路径的 MTU 不同,结论不能推广到全部客户端
  • 把 EDNS 相关失败当成 DNSSEC 问题:两者虽相关,但定位手段不同,需分别取证

数据来源与参考

  • RFC 6891:EDNS(0)
  • DNS Flag Day 2020 建议(1232 字节)

相关工具

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