介绍:
/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
关键参数:
- nameserver 配置DNS服务器地址(顺序来查询,且只有当第一个nameserver没有反应时才查询下面的nameserver)
- domain 声明主机的域名,当查询不完全的域名时主机名将被使用(相当于search的默认值)
- search 它的多个参数指明域名查询顺序。当查询不完全的域名时会使用到(domain和search不能共存)。
- sortlist 允许将得到域名结果进行特定的排序,一个是在 resolv.conf 中配置的,一个是在 server 端配置的,主要功能就是当响应的 answer 部分含有多个地址时,优先返回那个。
可选参数(options):
--ndots:n 默认值1,假设ndots值为5,表示:如果查询的域名包含的点“.”不到5个,那么进行DNS查找,将使用非完全限定名称,如果你查询的域名包含点数大于等于5,那么DNS查询,默认会使用绝对域名进行查询,在/etc/resolv.conf文件中配置为options ndots:5。
其他可选参数见: https://man7.org/linux/man-pages/man5/resolv.conf.5.html
示例:
1、正常域名解析
默认/etc/resolv.conf配置
ping blog.csdn.com
2、配置domain域
ping blog
调整/etc/resolv.conf配置文件,添加domain
再次ping blog, ping不完整域名会自动补全
3、配置search域
调整/etc/resolv.conf配置文件,添加search,会顺序补全,直到有响应
4、使用host命令验证search域
可以使用host命令验证search域补全顺序
注意:如果host命令不存在的话,使用如下命令进行安装
bind-utils提供DNS查询工具,比如dig、host、nslookup
再次调整/etc/resolv.conf配置文件的search域,再次host -a blog发现serach域都补全还是解析不了的话会继续解析blog
5、使用host验证ndots默认值为1
验证发现待解析域名包含.大于等于1时就会先解析域名,只有域名解析不成功时才会继续匹配serach域或domain域。
6、使用host验证全域名
全域名指的是域名最后一位为.,例如www.baidu.com. ,另外解释下FQDN的概念,FQDN(Fully Qualified Domain Name)含义是完整的域名,同时带有主机名和域名的名称。例如, 一台机器主机名(hostname)是www, 域后缀(domain)是baidu.com, 那么该主机的FQDN应该是www.baidu.com。
如果域名结尾为.,那么只会解析完全限制域名,即时解析失败也不会匹配serach域或domain域。
7、当服务器既配置了hosts域名映射,又配置了DNS Server的时候,会先执行哪个
假设在/etc/hosts配置文件里面加入了下面这行
/etc/resolv.conf配置如下
ping www.baidu.com结果如下图,可以得出当服务器既配置了hosts,又配置了DNS的时候,会先执行hosts配置,这是由/etc/nsswitch.conf配置文件控制的,解析顺序可以通过修改/etc/nsswitch.conf配置文件进行调整,具体使用/etc/nsswitch.conf本文不做介绍。