一、DNS简介
一、DNS简介
DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个域名可以有多个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。
1. DNS解析分正向解析和反向解析
正向解析:
正向解析是指域名到ip地址的解析过程。
反向解析
反向解析是指Ip地址到域名的解析过程。
2. DNS查询:分递归查询和迭代查询
递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。
迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。
3. 主从DNS服务器:
主DNS服务器(Master DNS): 数据库的修改更新;
辅助DNS服务器 (SlaveDNS):请求主DNS服务器的数据同步更新;
缓存DNS服务器:它主要用来缓存查询的地址信息,而不用承担任何其他的工作。它没有区域文件,也不从其他DNS服务器传输数据。它能响应客户机的查询,但是没有授权。
4. 资源记录类型
1>.SOA记录:SOA名叫起始授权机构记录,用于说明负责解析的DNS服务器中哪一个是主服务器。
2>.NS(NAME SERVER):名称服务器记录,用于说明这个区域由哪些DNS服务器负责解析,NS和A记录是成对出现 如:
<code> </code><code>NAME TTL IN RPT VALUE </code>
<code>51yunxuexi.club. 400 IN NS ns.51yunxuexi.club.</code>
<code>ns.51yunxuexi.club. 400 IN A 1.1.1.1</code>
3>.A记录(address):地址A记录把FQND(域名)解析到IPv4地址,把主机名解析到IPv4地址,正向解析
4>.AAAA记录(address):AAAA资源记录把FQDN解析到IPv6地址,把主机名解析到IPv6地址
5>.PTR指针记录(pointer):和A记录相反,用于实现IP地址映射到FQDN,反向解析
6>.MX记录: 全称是邮件交换记录(邮件交换器),在使用邮件服务器的时候,MX记录是无可或缺的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里!优先级,0-99,数字越小,优先级越高
7>.CNAME记录:也可说是别名记录,规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。比如一个网站a.com 在发布的时候,他可以建立一个别名记录,把B.com发布出去,这样不容易被外在用户所察觉!达到隐藏自己的目的!
8>.SRV记录:它是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息。SRV 记录:一般是为Microsoft的活动目录设置时的应用。
5. 区域
区域是用于存储DNS域名的数据库。DSN服务器是以区域为单位来管理域名空间的。DNS数据库表称为区域文件(Zone File)。数据库中包含着DNS域的RR【资源记录】,数据库表中,RR是用文本形式表示的。
一台DNS服务器可以管理一个或多个区域,而一个区域也可以由多台DNS服务器来管理。
在DNS服务器中必须先建立区域,然后才可以根据需要在区域中建立子域以及在区域中添加RR。
可以创建正向查找区域和反向查找区域两种区域。
1>.区域类型有主要区域(主区域)、辅助区域(从区域)和存根区域、准发区域、提示区域等。
主要区域:它是新区域的主副本,负责在新创建区域的服务器上管理和维护本区域的RR。
辅助区域:它是主区域的副本【备份】,主要区域中的DNS服务器将把区域信息传递给辅助区域中的DNS服务器。使用辅助区域的目的是提供冗余、减少包含主要区域数据库文件的DNS服务器的负载。辅助区域的数据无法修改,其所有数据都是从主要区域复制而来。
存根区域:它只包含用于标识该区域的授权DNS服务器所需的RR。含有存根区域的DNS服务器对该区域没有管理权。存根区域只能创建只含有NS、SOA和A记录的区域的副本。其所属的主要区域通常是一个受委派区域。
2>.区与域的关系:
区包含了域中除了代理给别处的子域外所含有的所有域名和数据。如果域的子域没有被代理出去,则该区包含该子域名和子域中的数据。
6. 区域传输(区域传送)
将一个区域文件复制到多个服务器上的过程叫做区域传输。它是通过从主服务器上将区域文件的信息复制到辅助服务器上来实现的。
主服务器是区域复制的来源服务器,它既可以是主要区域,也可以是辅助区域。
*如果主服务器是主要区域,区域传输则直接从主要区域取得区域文件。
*如果主服务器是辅助区域,区域传输仅传输区域文件的一个只读副本。
两种区域文件复制方式:
AXFR:全部区域文件复制,复制整个区域文件。
IXFR:增量区域文件复制,仅仅复制区域里变化的记录。
二、 bind软件包的安装以及配置文件简介
1、bind软件包的安装
在使用DNS服务器时首先要确保bind软件包是否已经安装,可以使用rpm –qa | grep bind 查看。可以使用rpm命令安装,也可以使用yum源安装及所依赖软件包。首先要安装以下三个软件包。
bind-9.8.2-0.17.rc1.el6.x86_64 bind的安装包
bind-utils-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
bind-chroot软件包:切换named根目录,加强DNS服务器的安全
caching-nameserver.i386软件包 可以快速构建DNS缓存名称服务器
2、DNS监听的协议及端口
53/UDP 默认查询过程中使用的是UDP协议,因不需要三次握手,速度快
53/TCP 主从服务数据传输时为确保数据的准确、性完整性和安全行,使用的是TCP
953/TCP rndc远程域名服务控制器则使用953端口监听
3、bind配置文件简介
/etc/named.conf bind服务进程的主配置文件,主要定义bind进程的工作属性和区域的定义
/etc/rnd.key 远程名称控制器,rndc的密钥文件
/etc/rndc.conf rndc的配置文件
/etc/var/named/ 区域数据文件,可自定义名称
/etc/rc.d/init.d/named { start|stop|restart|status|reload }服务进程的启动停止重启等
/usr/sbin/named bind的主程序文件
/usr/sbin/named-checkconf named-checkconf命令检查配置文件是否有语法错误
/usr/sbin/named-checkzone named-checkzone命令检查区域文件是否有语法错误
/usr/sbin/rndc rndc命令是远程控制工具
/usr/sbin/rndc-confgen rndc-confgen 命令是rndc配置文件生成器(/etc/rndc.conf)
/var/named/named.ca Internet的13个根服务器名字和地址,DNS接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐级查询。
Dig–t NS . 可以查询跟节点的NS服务器(可以访问互联网的情况下)
/var/named/named.localhost 本地localhost主机的正向解析
/var/named/named.loopback 本地localhost主机的反向解析
/etc/resolv.conf DNS服务器地址
三、/etc/named.cong主配置文件
区域的定义,每个选项后面必须要加分号,定义全局选项
<code>options {</code>
<code> </code><code>//</code> <code>listen-onport 53 { 127.0.0.1; }; </code><code>#默认监听本地53端口 </code>
<code> </code>
<code> </code><code>listen-on port 53 { any; }; </code><code>#监听所有地址的53端口</code>
<code> </code><code>listen-on-v6 port 53 { ::1; };</code>
<code> </code><code>directory </code><code>"/var/named"</code><code>; </code><code>#自定义区域数据文件存放目录</code>
<code> </code><code>allow-query { localhost; }; </code><code>#默认只允许本地查询</code>
<code> </code><code>recursion </code><code>yes</code><code>; </code><code>#是否允许递归</code>
<code>};</code>
<code> </code>
<code>logging { </code><code>#日志</code>
<code> </code><code>channeldefault_debug {</code>
<code> </code><code>file</code> <code>"data/named.run"</code><code>; </code><code>#日志文件存放目录</code>
<code> </code><code>severity dynamic;</code>
<code> </code><code>};</code>
区域zone的定义:
zong “ZONE NAME” IN{
type { master(主) | slave(从) | hint(根区域) | forward(转发) }区域类型
}
如果定义的数据类型为主区域则还需定义 file “区域数据文件路径”;
如果定义的数据类型为主区域则还需定义 file “区域数据文件”;
master (主服务器地址;)
如 master (master_ip; ) 前后有空格
<code>zone “.” IN { </code><code>#定义根区域</code>
<code> </code><code>type</code> <code>hint; </code><code>#定义根区域类型</code>
<code> </code><code>file</code> <code>“named.ca”; </code><code>#定义根区域数据文件</code>
1、配置缓存服务器
<code>打开并编辑</code><code>/etc/name</code><code>.conf文件,也可以在named.rfc1912.zones文件中添加zone区域</code>
<code> </code><code>zone </code><code>"localhost"</code> <code>IN { </code><code>#定义本地localhost正向解析zone区域</code>
<code> </code><code>type</code> <code>master; </code><code>#定义主区域类型</code>
<code> </code><code>file</code><code>"named.localhost"</code><code>; </code><code>#定义区域数据文件</code>
<code>zone </code><code>"0.0.127.in-addr.arpa"</code> <code>IN { </code><code>#定义本地localhost反向解析zone区域</code>
<code> </code><code>file</code><code>"named.loopback"</code><code>; </code><code>#定义区域数据文件</code>
<code>检查named配置文件语法是否正确</code>
<code> </code><code>[root@localhost etc]</code><code># named-checkconf</code>
<code> </code><code>[root@localhost etc]</code><code>#</code>
<code>使用named-checkconf命令,无报错则说明配置文件语法正确</code>
<code>检查zone区域配置是否正确</code>
<code>[root@localhost etc]</code><code># named-checkzone "0.0.127.in-addr.arpa"/var/named/named.loopback</code>
<code>zone 0.0.127.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial0</code>
<code>OK </code>
<code>[root@localhost etc]</code><code># named-checkzone"localhost" /var/named/named.localhost</code>
<code>zone localhost</code><code>/IN</code><code>: loaded serial 0</code>
<code>OK</code>
<code>[root@localhost etc]</code><code>#</code>
<code>使用named-cone命令检查区域是否有语法错误,返回OK则说明无语法错误</code>
<code>重启DNS服务器</code>
<code>[root@localhost etc]</code><code># service named restart</code>
<code>停止 named:. [确定]</code>
<code>启动 named: [确定]</code>
可以使用tail /var/log/messages查看服务是否启动正常
<code>[root@localhost log]</code><code># tail /var/log/messages</code>
<code>Aug 29 22:43:10 localhost named[21072]: automatic</code>
<code>empty zone: 9.E.F.IP6.ARPA</code>
<code>empty zone: A.E.F.IP6.ARPA</code>
<code>empty zone: B.E.F.IP6.ARPA</code>
<code>empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA</code>
<code>Aug 29 22:43:10 localhost named[21072]: </code><code>command</code>
<code>channel listening on 127.0.0.1</code><code>#953</code>
<code>channel listening on ::1</code><code>#953</code>
<code>Aug 29 22:43:10 localhost named[21072]: zone</code>
<code>0.0.127.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial 0</code>
<code>localhost</code><code>/IN</code><code>: loaded serial 0</code>
<code>Aug 29 22:43:10 localhost named[21072]:</code>
<code>managed-keys-zone .</code><code>/IN</code><code>: loaded serial 7</code>
<code>Aug 29 22:43:10 localhost named[21072]: running</code>
<code>[root@localhost log]</code><code>#</code>
使用dig –t NS. 命令测试本地缓存解析
NS主DNS服务器master:192.168.1.192
NSSOA为ns1.51yunxuexi.club.
www服务器:192.168.1.106 192.168.1.103
mail服务器: 192.168.1.104
有一台ftp在www主机上,ftp是www的别名CNAME
SOA:起始授权记录格式
<code>ZONE NAME TTL IN SOA FQDN(主DNS名称) ADMIN MAIL(</code>
<code> </code><code>Serialnumber</code>
<code> </code><code>Refresh</code>
<code> </code><code>Retry</code>
<code> </code><code>Expire</code>
<code> </code><code>Nattl )</code>
<code>$TTL 600</code>
<code> </code><code>@ IN SOA [FQDN]51yunxuexi.club. admin.com.[管理员邮箱] (</code>
<code> </code><code>2015083001;serial </code><code>#版本号(最长为10位数字)</code>
<code> </code><code>refresh </code><code>#定义检查周期时间</code>
<code> </code><code>1H;retry </code><code>#定义重试时间</code>
<code> </code><code>1W;expire </code><code>#定义过期时间</code>
<code> </code><code>3H );minimum </code><code>#定义否定答案时长</code>
<code>时间单位:M(分钟)、H(小时)、D(天)、W(周)、默认单位是秒</code>
ZONE NAME(区域名称) 指/etc/named.conf中的zone “51yunxuexi.club”,可以使用@来代替51yunxuexi.club,@可以自动读取zone name。
A)、打开并编辑/etc/named.conf,添加正向解析和反向解析的zone。
B)、在/var/named/目录下创建51yunxuexi.club.zone
打开并编辑51yunxuexi.club.zone创建正向解析
[root@localhost named]# vim /var/named/51yunxuexi.club.zone
<a href="http://s3.51cto.com/wyfs02/M01/72/7C/wKiom1XkYXSAPGqOAALI6DoE4xI688.jpg" target="_blank"></a>
<code>修改</code><code>/var/named</code> <code>/51yunxuexi</code><code>.club.zone的文件权限和属组</code>
<code>[root@localhost named]</code><code># chmod 640 51yunxuexi.club.zone</code>
<code>[root@localhost named]</code><code># chown root:named51yunxuexi.club.zone </code>
<code>[root@localhost named]</code><code>#</code>
<code>使用named-checkconf和named-checkzone命令检查主配置文件和数据区域文件是否有语法错误。</code>
<code> </code><code>[root@localhost named]</code><code># named-checkconf</code>
<code>[root@localhost named]</code><code># named-checkzone"51yunxuexi.club" /var/named/51yunxuexi.club.zone</code>
<code>zone 51yunxuexi.club</code><code>/IN</code><code>: loaded serial 2015080301</code>
C)、打开并编辑/var/named/192.168.1.zone创建反向解析
<code>使用named-checkconf 和named-zone命令检查配置文件是否有语法错误</code>
<code>[root@localhost ~]</code><code>#</code>
<code>[root@localhost ~]</code><code># named-checkconf</code>
<code>[root@localhost ~]</code><code># named-checkzone"1.168.192.in-addr.arpa" /var/named/192.168.1.zone</code>
<code>zone 1.168.192.</code><code>in</code><code>-addr.arpa</code><code>/IN</code><code>: loaded serial2015080301</code>
我在这里使用nslookup命令测试正反向解析是否能正常解析
本文转自 zhangguangyi 51CTO博客,原文链接:http://blog.51cto.com/bosszhang/1688094