/etc/resolv.conf 文件详解

介绍:

  /etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

 关键参数:

  - nameserver 配置DNS服务器地址(顺序来查询,且只有当第一个nameserver没有反应时才查询下面的nameserver

    - domain 声明主机的域名,当查询不完全的域名时主机名将被使用(相当于search的默认值)

    - search 它的多个参数指明域名查询顺序。当查询不完全的域名时会使用到(domainsearch不能共存)

    - 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配置

# Generated by NetworkManager
nameserver 192.168.248.2

ping blog.csdn.com

[root@node2 ~]# ping blog.csdn.com
PING blog.csdn.com.com (45.11.57.36) 56(84) bytes of data.
64 bytes from comcomproxy1.com.com (45.11.57.36): icmp_seq=1 ttl=44 time=291 ms
64 bytes from comcomproxy1.com.com (45.11.57.36): icmp_seq=2 ttl=44 time=270 ms

2、配置domain域

ping blog 

[root@node2 ~]# ping blog
ping: blog: 未知的名称或服务

调整/etc/resolv.conf配置文件,添加domain

[root@node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.248.2
domain csdn.net

再次ping blog, ping不完整域名会自动补全

[root@node2 ~]# ping blog
PING blog.csdn.net (182.92.187.217) 56(84) bytes of data.
64 bytes from 182.92.187.217 (182.92.187.217): icmp_seq=1 ttl=89 time=20.4 ms

3、配置search域

调整/etc/resolv.conf配置文件,添加search,会顺序补全,直到有响应

[root@node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.248.2
search abc.com csdn.net
[root@node2 ~]# ping blog
PING blog.csdn.net (182.92.187.217) 56(84) bytes of data.
64 bytes from 182.92.187.217 (182.92.187.217): icmp_seq=1 ttl=89 time=20.2 ms
64 bytes from 182.92.187.217 (182.92.187.217): icmp_seq=2 ttl=89 time=20.1 ms

 4、使用host命令验证search域

可以使用host命令验证search域补全顺序

注意:如果host命令不存在的话,使用如下命令进行安装

yum -y install bind-utils

bind-utils提供DNS查询工具,比如dig、host、nslookup

再次调整/etc/resolv.conf配置文件的search域,再次host -a blog发现serach域都补全还是解析不了的话会继续解析blog

 5、使用host验证ndots默认值为1

验证发现待解析域名包含.大于等于1时就会先解析域名,只有域名解析不成功时才会继续匹配serach域或domain域。

[root@node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.248.2
search abc.com abcd.com 

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配置文件里面加入了下面这行

192.168.249.149  www.baidu.com

/etc/resolv.conf配置如下

# Generated by NetworkManager
nameserver 192.168.248.2

ping www.baidu.com结果如下图,可以得出当服务器既配置了hosts,又配置了DNS的时候,会先执行hosts配置,这是由/etc/nsswitch.conf配置文件控制的,解析顺序可以通过修改/etc/nsswitch.conf配置文件进行调整,具体使用/etc/nsswitch.conf本文不做介绍。

posted @ 2017-01-11 14:23  人艰不拆_zmc  阅读(8885)  评论(0编辑  收藏  举报