DNS是一种基于分布式的数据库系统,并采用客户/服务器模式进行主机名称与IP地址之间的转换DNS作为Internet的服务,实现映射IP与域名的解析

DNS解析类型:

正向解(Forward Resolve) 功能 :Domain Name IPAddress,使得网络程序能够通过主机域名访问到目的服务器主机

反向解(Reverseresolve) 功能 :IP AddressDomainName ,询连接工作站是属于哪一个网络域

查询类型:

递归查询客户送出查询请求后,DNS服务器必须告诉客户机正确的数据(IP地址)或通知客户机找不到其所需数据。如果DNS服务器内没有所需要的数据,则DNS服务器会代替客户机向其他的DNS服务器查询。客户机只需接触一次DNS服务器系统,就可得到所需的节点地址

迭代查询客户送出查询请求后,若该DNS服务器中不包含所需数据,它会告诉客户机另外一台DNS服务器的IP地址,使客户机自动转向另外一台DNS服务器查询,依次类推,直到查到数据,否则由最后一台DNS服务器通知客户机查询失败

DNS工作原理:

客户机要首先从DNS服务器获www.cnnic.net.cn对应的IP地址,才能和远地服务器建立连接。

DNS域名空间的域名是由分布在不同地方的域名服务器来管理的,域名解析是由用户指定的域名服务

来完成的

DNS域名服务采用的是客户/服务器(client/server)工作模式。客户方的解析过程函数

resolver),嵌套在其它应用的客户程序之内的。

本地域名服务器。本地域名服务器始终运行它的域名服务器进程(named),该进程收到客户请求时,就开始进行域名解析

DNS解析过程:

(1)DNS客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
(2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。
(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
(4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器的地址。
(5)重复第四步,直到找到正确的记录。
(6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。



资源记录类型:

A主机记录,建立域名与IP地址之间的映射

CNAME:别名记录,为其它资源记录指定名称的替补

SOA:初始授权记录

NS:名称服务器记录,指定授权的名称服务器

PTR:指针记录,用来实现反向查询

MX:邮件交换记录,指定用来交换或者转发邮件信息的服务器

HINFO:主机信息记录,指明CPUOS

注:dns的每次查询都是经过查询本地的解析库来完成,每一个解析库文件中所保存的都是资源记录,或宏定义,任何解析库的第一个文件必须是SOA

安装DNS服务器首先要安装bind #yum install bind  #rpm –qc bind :查看生成列表,在 /etc/named.conf 下是主配置文件,其中还包含了其他许多xinetd配置文件

DNS解析_DNS解析

任何一个dns服务器要想实现解析,第一它要负责这个区域的区域文件

dig –t  NS表示要请求解析的类型,NS表示要请求一个NS记录

# dig –t NSroot-server.net  查根域的

# dig –t NSroot-server.net @a.root-server.net 表示查找 @a.root-server.ne这个域的NS记录有哪些,

# dig –t NS .@root-server.net  shuom

dig –t  NS.  后跟点,是表示直接找根

dig命令:

      dig -t 资源记录类型名称 @server-ip:通过哪台服务器来找;

每个主机中由/etc/resolv.conf指向主机nameserver IP

      dig -x IP @server-ip

      dig +trace

      dig -t axfr zone 验证完全区域传送指定一个区域,

# dig –t NS.  直接找根

dig –x  IP @server-ip(加资源记录名称):查询反向解析

# dig –x 1.1.1.1

dig +trace 跟踪解析过程

# dig –t NS . +trace


定义本地负责的一个DNS区域的解析:

第一、首先要去修改主配置文件 /etc/named.conf:注释掉options段中如下选项,也可以修改


      //listen-on port 53 { 127.0.0.1; }; --à默认是监视本机

      //listen-on-v6 port 53 { ::1; };  -à默认监听本机的53号端口

      //allow-query     { localhost; };   --à只允许本机查询;默认是监听所以地址上的,支持所以地址查询

当这些注释掉以后启动起来,此时启动named服务:但是缓存DNS服务器;他给用户的客户端数量是有限的,默认是1000  ;如果期望他是个主DNS服务器的话这时候只需要进行一下步骤

文件中options:用来定义全局配置文件

  directory:用来定义工作目录的,就是区域文件放在什么地方;所起指的相对路劲都是相对他而言的

  allow-query用来定义允许谁来查询的localhost:只允许本地查询

任何一个配置问价必须要告诉他跟在什么地方,



第二步、去编辑配置文件 # vim /etc/named.rfc1912.zons  :在文件尾部新增一个zone


  type  指定区域服务类型: master表示是主DNS服务器,

  file 指定区域文件名,一般是区域名称加 .zone 定义;

格式:

zone “magedu.com”IN {     magedu.com是区域名

       typemaster;           ----> master 表示主DNS服务器

               file magedu.com.zone”;   ------>file:后跟区域文件,一般是区域名称加.zone magedu.com.zone”指的是相对路劲

};


检测主配置文件语法错误:named-checkconf


然后创建magedu.com.zone的文件

切换到 # /cd /var/named

在这里手动创建个

查看# /vim /magedu.com.zone : 这个文件都是资源记录,第一个资源记录必须是SOA

还可以定义宏,最长的宏是TTL:全局定义,

使用: $TTL  600  :说明这是一个宏,600秒:说明这个区域每一个设备文件如果没有定义TTL值都是600

#hostname 查看本地主机名

@   ttl  IN  SOA  DNS服务器FQDN  管理员邮箱  (  

                          2013081201     ---à序列号

                          2H             ---à刷新时间, refresh time, 通知(notify): 只通知给本区域解析库文件中定义NS记录的所有主机

                          5M             ---à重试时长retry time

                          7D             ---à过期时长

                          1d             ---à否定回答的TTL

例:

编辑文件切换到/var/named下编辑文件# vim magedu.com.zone

$TTL 600

@    IN  SOA  dns.magedu.com. admin.magedu.com. (  -à指定主服务器

              2013081301

              2H           -----à表示刷新时间

              10M         -----à重试时间,10M表示10分钟重试一次

              7D           -----à过期时间,7D表示一周过期

              6H)         -----à否定回答的时间,6H表示否定回答6个时

             IN   NS  dns  ------à后面可以不用写,它会自动找到定义在/etc/named.rfc1912.zone中与之对应的区域的名称,并会自动补全到后面,如果后面不不全一定不能加点。写全时                                        一定要加点。如果这一条名称跟第一条一样,前面可以省略@

     IN  MX  10  mail

dns  IN  A       172.16.100.1

mail IN  A        172.16.100.2

www  IN  A       172.16.100.6

www  IN  A       172.16.100.7  ----à一个主机名可以有两个地址

pop  IN  A       172.16.100.7

ftp  IN CNAME    www

检测区域文件语法错误:named-checkzone

以上只是个数据库,地址可以不存在,不管有没有这台主机,都可以完成解析

写完以后,使用 # ls –l 查看文件magedu.com.zone的权限属主属组确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named

如果不是rootnamed,就要先改权限: # chmod 640 magedu.com.zone 然后改属主属组# chmodroot:named magedu.com.zone

然后检查主配置文件是否有语法错误: # named-checkconf

再来检查magedu.con.zone的区域对应的文件有无语法错误:

           # named-checkzone “magedu.com”/var/namd/magedu.com.zone

如果写的没问题使用# service named restart 如果每次写的文件都要重启,服务正在被互联网上使用,你重启正在被请求就会被断掉,一般服务不使用restart

而是用# service named reload

让服务不用重启还能重读配置文件使

# dig –t A www.magedu.com @172.16.100.1查看本机能不能完成解析,查看A记录

# host –t A www.magedu.com 172.16.100.1 也可以查看

#dig –t NSmagedu.vom @172.16.100.1 这个前面不能加www  :查看NS记录

#dig –t MXmagedu.vom @172.16.100.1 查看MX记录

# dig –t CNAME ftp查看ftp的正式名称是什么

#dig –t CNAME ftp.magedu.com @172.16.100.1 查看magedu.com的全名是什么

#dig –t SOAmagedu.com @172.16.100.1

dig也可以完成区域传送: #dig –t axfr  magedu.com @172.16.100.1 SOANSMXA CNAME 全都显示出来axfr 显示完全域名


上面每次都要指向本机@172.16.100.1态麻烦,可以编辑# vim/etc/resolv.conf直接指向本机,

# ss–tuan 查看utp协议监听进程dns named即会监听tcp53号端口,又会监听utp53

也可以使用 # netstat – tunl  也可以查看

建立反向区域解析库:

反向区域的区域名称:网络地址反过来.in-addr.arpa

       例:100.16.172.in-addr.arpa

第一步编辑 #vim /etc/nemed.rfc1912.zone 在最后面加上

zone “100.16.172.in-addr.arpa”IN {  

      type master

      file “172.16.100.zone”;

};  

然后检查主配置文件的语法错误# named-checkconf

接着建立区域设备文件;可也直接把正向的复制过来改动就可以:CNAME不需要反向

# cpmagdu.com.zone 172.16.100.zone

然后编辑# vim 172.16.100.zone  反向区域文件不需要MX记录的

$TTL 600

@   IN  SOA  dns.magedu.com. admin.magedu.com. (      

              2013081301

                           2H      

                           10M  

                            7D    

                            6H

IN   NS dns dns.magedu.com.  --à后面必须补全,


1.100.16.172.in.addr.arpa.  IN  NSdns.magedu.com.  --à1 后面可以不写,会自动补全

1     IN PTR     dns.magedu.com

2    IN  PTR     mail.magedu.com

6    IN PTR      www.magedu.com

8    IN  PTR     www.magedu.com

8    IN PTR      pop.magedu.com

在反向解析库中这些名字必须写全

然后改权限:属主root,属组named权限640 使用# ls –l查看

检查:# named-checkzone “100.16.172.in-addr.arpa”/var/name/172.16.100.zone

然后重新载入 # service named reload

载入后想查看服务器怎么样# rndc status

# rndcstats

# rndcreload

# rndcreconfig

rndcRemote Name Domain Contoller :远程名称域,或名称服务,进程或控制器;这是个专门控制DNS服务器的工具;它能够让dns服务器听到,也能让dns重新装载主配置文件,重新装载区域文件,显示各个区域的状态信息等,甚至还可以让dns服务器清空缓存,

反向测试:# dig –x 172.16.100.1

对方向区域做完全传送:#dig –t axfr 100.16.172..in-addr.arpa

创建一个辅助dns服务器:

从服务器不是区的从,是域的从,它主要是建立在域的级别上

如果有多台dns服务器,那么必须为每个dns服务器建立ns记录,否则主DNS将不向发送通知

区域定义:编辑 # vim /etc/named.rfc1912.zones


      zone "区域名称" IN {

             type slave;  

             file"slaves/ZONE_NAME.zone";

masters {    ----àmasters后指向主服务器是谁,括号里写上IP,括号内可以有多个,每一个后面都要以分好结尾,就算有一个也要跟分号,

                    MASTER_DNS_IP;

                    MASTER_DNS2_IP;  

             };

      }

例:编辑 # vim /etc/named.rfc1912.zones

zone “magedu.com”IN {

        type slave;

file “slaves/magedu.con.zone”

        masters { 172.16.100.1; };

};  

创建完后检查语法: #named-checkconf

然后回到主服务器。还没定义这个服务器。先要给他一个ns记录

编辑他的区域文件 # /vim magedu.com.zone

加一个ns记录: IN  NS  ns2

指定ns2是那台主机: ns2  In  A 172.16.100.17

注:每一个dns必须有一个ns记录。而且这个ns记录对应的主机名一定得有个A记录,而且这个A记录一定是那台服务器的地址;有一点差错主从服务器都会有故障,

检查: # named-checkzone “magedu.con”magedu.com.zone

在主服务器上先装载下: # rndc reload

然后检测: # dig –t NS magedu.com

启动:# service named start

查看日志:dns相关的日志都在、var/log/messages

  # tail /var/log/messages

确保从服务器有权限: # dig –t axfr magedu.com @172.16.100.1