/etc/resolv.conf 是 linux dns 客户端核心配置文件,由 glibc resolver 读取,定义 nameserver(最多3个)、search/domain 域补全规则及 options 行参数,影响所有域名解析应用;手动修改易被网络管理工具覆盖,推荐通过 networkmanager 或 systemd-resolved 等工具管理。

/etc/resolv.conf 是 Linux 系统中 DNS 客户端的核心配置文件,由 C 标准库中的 resolver(域名解析器)读取,用于将域名转换为 IP 地址。它不启动服务,也不运行进程,只被调用时生效。任何依赖域名访问网络的应用(如 curl、ping、wget、systemd-resolved 下游程序等)都会受其影响。
nameserver:指定 DNS 服务器地址
这是唯一必需的配置项,格式为 nameserver x.x.x.x,支持 IPv4 和 IPv6 地址。可写多行,但最多只生效前三个 —— glibc 解析器硬限制为 MAXNS = 3(见 /usr/include/resolv.h)。解析顺序严格按文件中出现的先后:先向第一个 nameserver 发起查询;超时或返回 SERVFAIL/REFUSED 后,才尝试下一个。
- 推荐配置 2–3 个稳定、低延迟的 DNS,例如:
nameserver 223.5.5.5nameserver 114.114.114.114nameserver 8.8.8.8 - 避免写入不可达或高延迟的 DNS,否则会拖慢整体解析耗时(默认单次超时 5 秒,重试 2 次)
- 若系统启用 systemd-resolved,
/etc/resolv.conf往往是软链接(指向/run/systemd/resolve/stub-resolv.conf),直接编辑无效
search 与 domain:控制短域名补全行为
当程序使用未带点(.)的主机名(如 redis 或 mysql)发起解析时,resolver 会按规则自动补全后缀,再尝试查询。这个行为由 search 或 domain 控制,二者互斥,后出现者生效。
本书图文并茂,详细讲解了使用LAMP(PHP)脚本语言开发动态Web程序的方法,如架设WAMP平台,安装与配置开源Moodle平台,PHP程序设计技术,开发用户注册与验证模块,架设LAMP平台。 本书适合计算机及其相关专业本、专科学生作为学习LAMP(PHP)程序设计或动态Web编程的教材使用,也适合对动态Web编程感兴趣的读者自觉使用,对LAMP(PHP)程序设计人员也具有一定的参考价值。
-
search example.com test.internal:对redis尝试依次查redis.example.com→redis.test.internal→redis.(即 FQDN 形式) -
domain corp.local:等效于search corp.local,仅支持一个域 - 补全是否触发,还受
options ndots:n影响:只有域名中“点”的数量少于 n 时才补全。默认ndots:1,所以redis补全,redis.db不补全(除非设为ndots:2)
options:调整解析器行为参数
通过 options 行可覆盖 resolver 默认策略,常用子项包括:
-
timeout:2:单次 DNS 请求等待响应的秒数,整数,上限封顶为 30 -
attempts:2:对每个 nameserver 最多重试次数(不含首次),默认 2,即最多发 3 次请求 -
rotate:启用轮询模式,每次解析随机选择 nameserver,而非固定顺序,有助于负载分散 -
no-check-names:跳过对主机名中下划线、非 ASCII 字符等的合法性检查(某些内部服务命名需开启)
注意事项与常见陷阱
手动修改 /etc/resolv.conf 容易被覆盖,尤其在使用 NetworkManager、systemd-networkd 或 DHCP 的环境中。更稳妥的做法是:
- NetworkManager 用户:用
nmcli connection modify "连接名" ipv4.dns "8.8.8.8 114.114.114.114"+ipv4.ignore-auto-dns yes - systemd-resolved 用户:停用服务并重建静态文件,或改用
resolvectl dns管理 - 容器或 Kubernetes Pod 中的 resolv.conf 通常由 kubelet 注入,受
--resolv-conf和dnsConfig字段控制 - 文件中以
#或;开头的为注释;每行只能有一个关键字;空格/Tab 分隔值;禁止跨行









