Linux DNS

Linux DNS组成

Linux DNS可以分为几个部分:传统DNS, mDNS, DNS缓存

Linux DNS_第1张图片

传统DNS

这就是我们通常理解的DNS,通过UDP 53端口向某个DNS服务器发送DNS查询请求,在DNS响应中返回与查询主机对应的IP地址

mDNS

它的作用是,使得程序在没有传统DNS服务器的局域网中也能够有效解析域名,这样就可以在局域网通过主机名访问主机。

DNS缓存

Linux默认是没有DNS缓存的。要使用DNS缓存,通常有两种方式:
一种是安装服务程序NSCD(name service cache daemon) 
一种是用Bind来架设Caching Name Service来实现
NSCD
     apt-get install nscd
     启动nscd服务: service nscd start (会清空缓存)
     停止nscd服务:service nscd stop

DNS解析顺序

默认情况下

  • 查询/etc/hosts文件
  • 组播dns查询
  • 传统dns查询
  • 多播dns查询
这个顺序是可以改变的



相关配置文件

/etc/resolv.conf

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

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.1.12.33       
nameserver 10.1.12.34 
search dhcp.abc.local  

注意,我们一般不用关心这个文件,应该是由resolver自动配置的。
resolv.conf的关键字主要有四个:nameserver,  domain, search, sortlist
最主要的是nameserver,其它关键字都是可选的。关键字说明如下:
nameserver              表明用于DNS服务器的IP地址
domain                      声明主机的域名
search          它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。
                domain和search不能共存;如果同时存在,后面出现的将会被使用
sortlist        允许将得到的域名结果进行特定排序

/etc/hosts

该文件可以说是一个静态主机名查询静态表。该文件可以配置IP及其对应的主机名。通常情况下,该文件首先记录了本机的IP和主机名。

robin@robin-VirtualBox:~/Desktop/share/pcapParser$ cat /etc/hosts
127.0.0.1     localhost
127.0.1.1     robin-VirtualBox

默认情况下,进行DNS解析时,首先查询该文件,如果找到对应记录就不会发送dns请求。不过,这个顺序是可以改变的,看nsswitch.conf


/etc/nsswitch.conf

名字服务切换,NSS(Name Service Switch)配置文件。配置一些服务的搜索顺序。
其中以hosts开头的行,默认配置一般是这样的, 它指明了DNS查询的顺序:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

* files 表示解析位于 /etc/hosts文件中的静态主机名。
* mdns4_minimal 试图用组播DNS ( Multicast DNS)来解析名字。
* [NOTFOUND=return] 意思是mdns4_minimal没有找到就不再继续了.
* dns 代表传统的单播DNS (unicast DNS)查询 .
* mdns4 代表一个多播DNS查询
当查询以.local结尾的主机名时,就会出现mDNS查询请求。


你可能感兴趣的:(Linux DNS)