首页/网络/网络排障速查/resolv.conf 配置与解析超时行为
DNS 与解析排查46 条

resolv.conf 配置与解析超时行为

Linux 解析行为由 /etc/resolv.conf(或 NetworkManager/systemd-resolved 生成)控制:nameserver 上限 3 台、顺序尝试、options 控制超时与补全域。

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

resolv.conf 是什么

Linux 上的域名解析行为由解析配置文件决定:它声明用哪些服务器、服务器怎么轮询或顺序使用、单个查询等多久、重试几次、短名字要补哪些后缀。麻烦之处在于这个文件经常不是最终真相——网络管理工具与本地解析服务会接管它并随时重写,手工编辑很可能在下次连接状态变化时被覆盖。所以排查时既要看文件内容,也要看是谁在管这个文件。

基本信息

文件位置系统解析配置文件,被网络管理工具或本地解析服务接管时通常是符号链接
服务器数量通用库最多只读三台服务器,多余的配置不会生效
超时与重试单台服务器等待时间与重试次数都有配置项,默认值偏保守
短名补全后缀搜索列表影响短名字的解析范围,也影响解析压力
解析顺序名字服务切换配置决定先查本地主机文件还是先查域名
管理方网络管理工具与本地解析服务各自的配置优先,手工编辑会被覆盖

关键配置项

配置项作用实践建议
服务器声明指定解析服务器,按顺序使用(最多三台生效)只保留可达且可信的服务器,删除失效项
单台等待时间每台服务器等待秒数,默认 5 秒内网服务器响应快时适当调小,避免整体卡顿
重试次数查询失败后的重试次数,默认 2 次与等待时间相乘才是最坏情况耗时
轮询开关多台服务器轮流使用而非只压第一台多台对等时开启可分摊压力
后缀搜索列表短名字自动补全的域名后缀配置过长会放大查询量,保持精简
名字服务顺序决定先查本地文件还是先走域名查询临时覆盖条目多时应清理,避免掩盖真实解析

查看与核对

查看与核对
cat /etc/resolv.conf                    # 看当前生效的服务器与选项
ls -l /etc/resolv.conf                  # 确认是否为符号链接,判断是否被工具接管
nmcli dev show | grep -i dns            # 网络管理工具环境下看下发的实际值
resolvectl status 2>/dev/null | head -20 # 本地解析服务环境下看逐接口配置
grep -E '^hosts:' /etc/nsswitch.conf    # 核对名字服务顺序
# 逐台服务器测响应:
for s in $(awk '/^nameserver/{print $2}' /etc/resolv.conf); do echo "== $s"; dig +time=3 +tries=1 @$s +noall +stats example.com | grep 'Query time'; done
改配置前先确认谁在管:网络管理工具与本地解析服务都有各自的设置入口,改对地方才不会在下次重启后被覆盖。
首台服务器不可达时,查询会按单台等待时间乘重试次数耗完再切下一台,表现为『所有解析都很慢』,排查时先逐台测响应。
把公网服务器直接写进内网机器的配置,会导致内网域名解析失败并造成解析流量外泄,内网环境应使用内网解析服务器。

易错点

  • 配置了四台以上服务器,实际只有前三台生效,故障时排查方向被无效配置带偏
  • 直接编辑被接管的配置文件,重启或网络变化后被覆盖,表现为『改了没用』
  • 只调小等待时间不加服务器可用性检查,首台长期不可达时整体解析依然缓慢
  • 忽略名字服务顺序,本地覆盖条目把真实解析问题掩盖起来
  • 把后缀搜索列表配得很长,短名字查询量成倍增加并拖慢应用

数据来源与参考

  • glibc resolver(5) 手册
  • NetworkManager 文档:DNS 配置方式

相关工具

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