DNS解析完整版教程

作者: 不详 2013/8/24 23:14:15

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

反向解析(Reverseresolve) 功能 :由 IP Address查询出 DomainName ,用于查询连接工作站是属于哪一个网络域

查询类型:

递归查询:客户送出查询请求后,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:主机信息记录,指明CPU与OS

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

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

650) this.width=650;" onsubmit="" onchange="" onunload="" onselect="" onreset="" alt="" />

任何一个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;

如果不是root和named,就要先改权限: # 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 把SOA,NS,MX,A CNAME 全都显示出来axfr 显示完全域名

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

# ss–tuan 查看utp协议监听进程:dns named即会监听tcp的53号端口,又会监听utp的53

也可以使用 # 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 dnsdns.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

rndc:Remote 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

特别推荐

玩家留言 跟帖评论
查看更多评论