> For the complete documentation index, see [llms.txt](https://pshizhsysu.gitbook.io/linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pshizhsysu.gitbook.io/linux/wang-luo-xiang-guan/resolvconf.md).

# resolv.conf

本文主要分析linux下的`/etc/resolv.conf`文件

## 内容示例

```
nameserver 8.8.8.8
nameserver 114.114.114
search baidu.com google.com
options ndots:5
```

## nameserver（or ns）

DNS域名服务器的地址。一个域名服务器对应一条`nameserver x.x.x.x`记录。目前最多只能有三个nameserver。当有多个nameserver时，按先后顺序进行查询。如果没有指明nameserver记录，则默认使用本机上的域名服务器。

## search

先解释两个概念：

* 绝对域名：以点号结尾的域名，比如 `bai.com.`
* 相对域名：不以点号结尾的域名

search记录只对相对域名起作用，且search会与 ndots:n 一起工作。

* 当用户传入的相对域名中点号`.`的个数小于n时，syscall会依次往传入的域名后追加search列表中的后缀，直到解析出IP地址；如果都没有解析IP成功，则最后将相对域名当成绝对域名去解析
* 当用户传入的相对域名中点号`.`的个数大于等于n时，则先用相对域名去解析IP，如果没有解析成功则依次添加后缀去解析

search最多能有六条记录，最多256个字符。

## domain

to be continued

## options

options后面可以跟随以下的参数，每个参数之间用空格隔开

### ndots:n

ndots的默认值为1，最大值为15

### attempts:n

resolver发送域名解析请次的次数。当超过这个次数时还没有解析成功时，则向调用程序返回错误。默认值为2，最大值为5。

### timeout:n

resolver向某个nameserver发送域名解析请求的超时时间，单位为秒。当超时后，则向下一个nameserver发送解析请求。默认值为5，最大值为30

## Reference

\[1] <https://pracucci.com/kubernetes-dns-resolution-ndots-options-and-why-it-may-affect-application-performances.html>
