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改配置前先确认谁在管:网络管理工具与本地解析服务都有各自的设置入口,改对地方才不会在下次重启后被覆盖。
首台服务器不可达时,查询会按单台等待时间乘重试次数耗完再切下一台,表现为『所有解析都很慢』,排查时先逐台测响应。
把公网服务器直接写进内网机器的配置,会导致内网域名解析失败并造成解析流量外泄,内网环境应使用内网解析服务器。