Linux 下 /etc/resolv.conf 域名解析文件详解

因为前几天在处理 vultr 的《使用 CentOS 在安装软件时找不到镜像 Couldn’t resolve host》问题时接触到了 resolv.conf,就特地学习了一下这个文件的一些东西,今天在这边分享出来。 (以下内容全部整理自网络)

Wikipedia主页:https://en.wikipedia.org/wiki/Resolv.conf

一、DNS 基础

DNS工作流程大概是这样的:
1. 访问网络上的一个域名;
2. 系统发现是域名,查看resolv.conf文件的域名服务器地址,发一个DNS数据包给这个域名服务器;
3. 域名服务器解析这个域名,回复域名所对应的IP地址;
4. 系统在发连接包给那个那个域名所对应的地址。

作为一般系统DNS工作流程是这样的:
1. 如果没有resolv.conf文件,表示本机的域名服务是由/etc/host提供的;
2. 如果有resolv.conf文件且为空,表示本机是DNS域名服务器;
3. 如果有resolv.conf文件且不为空,表示访问其它域名服务器。

二、resolv.conf 参数

resolv.conf 一般存在 /etc/ 目录下,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf 的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排序

四个关键字详细说明:
nameserver:表明DNS服务器的IP地址。可以有很多行的 nameserver,每一个带一个IP地址。在查询时就按nameserver 在本文件中的顺序进行,且只有当第一个 nameserver 没有反应时才查询下面的 nameserver。
domain:声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行 DNS 查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点(.)前面的内容。
search:它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由 search 声明的域中分别查找。domain 和 search 不能共存;如果同时存在,后面出现的将会被使用。
sortlist:允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

示例:

domain xuy.me
search www.xuy.me www.xuy.me
nameserver 8.8.8.8
nameserver 45.130.67.76

最主要是 nameserver 关键字,如果没指定 nameserver 就找不到DNS服务器,也就是会导致无法连接到对应的服务器,其它关键字是可选的。Red Hat 中没有提供缺省的 /etc/resolv.conf 文件,它的内容是根据在安装时给出的选项动态创建的。

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *