一、DNS功能

DNS用于进行域名解析,说白了就是给出一个主机名,你给我找出该主机名对应的ip地址。例如:给你www.baidu.com主机名,你给 我查出对应的ip地址:163.177.151.109。一些主机名还会有别名,如www.baidu.com就有别名www.a.shifen.com,甚至不止一个别名,或一个别名有2个ip地址。在linux机子上,运行nslookup(name service lookup)就是进行域名解析。如下面:

nslookup www.baidu.com

Server:         172.17.0.1

Address:        172.17.0.1#53

 

Non-authoritative answer:

www.baidu.com   canonical name = www.a.shifen.com.

Name:   www.a.shifen.com

Address: 111.13.100.91

Name:   www.a.shifen.com

Address: 111.13.100.92

二、DNS的原理

服务器的ip地址(请求进行域名解析的地方);2、向dns服务器请求进行域名解析(dns

实质工作),3、缓存已经解析过的主机名与ip地址对应关系(这样已缓存的就不需要再向

dns服务器请求解析了)。

一个dns的解析过程如下:

1、 应用程序请求一个主机名解析,如:应用程序跟dns说,我需要知道www.baidu.com

ip地址,你给我查一下;

2、 Dns先在本地缓存中查询,若查到,返回ip地址给应用,流程结束。若没查到, 进行

下一步;

3、 Dns把需要查询的主机名打包进dns数据包,然后把dns数据包发送到dns服务;

4、 DNS服务器返回查询的主机名的dns数据包;

5、 Dns解析数据包,把主机名对应的ip地址返回给应用程序;

 下图为DNS运行流程:

DNS简介_linux、DNS


资源记录

区域解析库:由众多RR组成:

资源记录:Resource Record, RR

记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

v SOA:Start Of Authority,起始授权记录;一个区域解析库有

且仅能有一个SOA记录,必须位于解析库的第一条记录

v A:internet Address,作用,FQDN --> IP

v AAAA: FQDN --> IPv6

v PTR: PoinTeR,IP --> FQDN

v NS: Name Server,专用于标明当前区域的DNS服务器

v CNAME:Canonical Name,别名记录

v MX: Mail eXchanger,邮件交换器

三、DNS的程序

BIND的安装与服务管理

  yum -y install bind 就可以完成安装。安装后/etc/init.d/下启动脚本为named,服务名称也为named

 

 BIND的配置文件说明

  主配置文件:/etc/named.conf,里面至少有三个区域,根、localhost、127.0.0.1

  区域数据库文件:/var/named/

  运行用户和组:都是named

  主配置文件named.conf

  options全局选项

  zone "zone name" 定义区域 

 logging定义日志系统

   区域数据库文件的一些写法(假如这里的区域名称是a.com,主机名dns.a.com):

   a.com. IN  NS  dns.a.com.

   @  IN  NS  dns

     IN  NS  dns

   这三种写法是一样的

   例如上面第二条dns后面不加. 会自动在后面补上区域自身名字,等于dns.a.com

   如果要写全,必须把最后一个.写上,例www.a.com.

     

  SOA记录(第一条记录):

   name:  只能是区域名称,例:a.com.  通常可以用@简写

   value: 必须是主DNS服务器的FQDN

   SOA必须是区域数据库文件的第一条记录

   例:

   @(引用区域名称) 600  IN(关键字)  SOA (类型) ns.a.com. (主DNS名字)  dnsadmin.a.com. (邮箱地址,其中不用用@,用.代替) (

   serial number ; 序列号,这里;为注释,十进制数字,不能超过10位,通常使用日期,例如2014031001

   refresh time ;刷新时间,每隔多久到主服务器检查一次

   retry time ;重试时间,应该小于refresh time

   expire time ;过期时间

   negative answer ttl ;否定答案的ttl,客户端缓存的时间,设定过长会导致无法立即生效,设定过短导致客户端频繁请求

   )

四、测试命令

dig [-t type] name [@SERVER] [query options]

dig只用于测试dns系统,不会查询hosts文件进行解析

v 查询选项:

+[no]trace:跟踪解析过程 : dig +trace magedu.com

+[no]recurse:进行递归解析

测试反向解析:

dig -x IP = dig –t ptr reverseip.in-addr.arpa

模拟区域传送:

dig -t axfr ZONE_NAME @SERVER

dig -t axfr magedu.com @10.10.10.11

dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1

dig -t NS . @114.114.114.114

dig  -t NS . @a.root-servers.net

28

测试命令

v host [-t type] name [SERVER]

host –t NS magedu.com  172.16.0.1

host –t soa magedu.com

host –t mx magedu.com

host –t axfr magedu.com

host  1.2.3.4

v nslookup命令: nslookup [-option] [name | -] [server]