DNS解析
DNS是一种基于分布式的数据库系统,并采用客户/服务器模式进行主机名称与IP地址之间的转换DNS作为Internet的服务,实现映射IP与域名的解析
DNS解析类型:
正向解析(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配置文件
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;
如果不是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 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
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
本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/2045295,如需转载请自行联系原作者