Linux下是如何配置解析主机名的(包括DNS服务)

时间:2021-12-14 13:43:25

我们要访问DNS服务,必需知道DNS服务器的IP地址,Linux使用/etc/resolv.conf文件来存放DNS服务器的IP地址。下面我们来了解下/etc/resolv.conf文件

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

下面我们给出一个/etc/resolv.conf的示例:

domain  51osos.com
search www.51osos.com 51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69

最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。

nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。

domain:声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。

search:它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。
domain和search不能共存,如果同时存在,后面出现的将会被使用

sortlist:允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

一般情况下,使用DNS服务来访问Internet上的某台主机,但如果我们通过主机名来访问本地局域网上的机器,则可以通过本地的静态文件来获得该机器的IP地址了。

Linux将目标目标主机名及对应的IP地址存储在/etc/hosts配置文件中。当需要查询某个主机名对应的IP地址时,程序首先检查这个文件。如我的机器上的/etc/hosts文件的内容如下:

127.0.0.1   localhost
127.0.1.1 Erazer

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

关于IPV6,暂时不去了解,目前我还没用过,其中第一项指出本地回路之地127.0.0.1的名称是localhost,第二项则描述了我的笔记本电脑的本地IP地址127.0.1.1对应的主机名是Erazer,这样我就可以通过ping Erazer访问到我的主机了。

如果程序在/etc/hosts中未找到目标主机名对应的IP地址,它将动用前面说到的DNS解析服务,用户可以通过修改/etc/host.conf文件来自定义系统解析主机名的方法和顺序(一般是先访问本地文件/etc/hosts,再访问DNS服务),我的电脑上的该文件内容如下:

order hosts,bind
multi on

其中第一行表示优先使用/etc/hosts文件来解析主机名,失败后再使用DNS服务(bind)。第二行表示如果/etc/hosts文件中一个主机名对应多个IP地址,那么解析的结果就包含多个IP地址。/etc/host.conf通常仅包含这两行,但它支持更多选项,具体的使用可以参考其man手册。