一、DNS简介

(一)、DNS原理

    DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。主要提供域名解析服务。将IP地址转换为相对应的域名,或者将域名解析为相应的IP地址。

(二)、DNS查询

    DNS查询分为迭代查询和递归查询两种查询方式。

    迭代查询:当服务器使用迭代查询时能使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。B访问C、D、E、F、G,都是迭代查询,首先B 访问C,得到了提示访问D的提示信息后,开始访问D,D又返回给B提示信息,告诉B应该访问E,依次类推。

    递归查询:域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。

    以下是两种查询方式的具体示例图:

 

 

 

 

(三)、DNS的分类

    1.主DNS服务器

    主DNS服务器拥有最原始的记录,可以修改。

   2.辅助DNS服务器

    辅助DNS服务器的资源记录主要从主DNS服务器上进行复制。

    3.存根DNS服务器

     存根DNS服务器主要作用是管理存根区域,它与主DNS服务器之间存在着区域复制。

    4.缓存DNS服务器

    缓存DNS服务器没有管理任何区域的功能,也不会产生区域复制,它只能缓存DNS名字并且使用缓存的信息来答复DNS客户端的解析请求。缓存DNS服务器可以通过缓存减少DNS客户端访问外部DNS服务器的网络流量,并且可以降低DNS客户端解析域名的时间。

二、DNS其它问题

(一)、DNS区域

   1.正向查找区域

    正向查找区域主要是提供域名到IP地址的解析服务。正向查找区域包括SOA (授权起始记录)、NS (负责该区域的dns服务器)、A (主机记录)、CNAME(别名)、  MX (邮件交换记录)

   2.反向查找区域

    反向查找区域主要提供IP地址到域名的解析服务。反向查找区域包括SOA (授权起始记录)、NS (负责该区域的dns服务器)、PTR(指针)。

(二)、DNS资源记录

   1.SOA(授权起始记录)

   主要表明该区域的主dns服务器、管理员邮箱、刷新策略等。

   2.NS (负责该区域的dns服务器)

   表明该区域的dns服务器。主要有两行表明NS记录,格式如下:

    @                               IN         NS       ns.abc.com.(注意:只能写名称,而且是完全名称)

     ns(可以写相对的名称)     IN         A         1.1.1.1

   3.A (主机记录)

   记录名称和地址的对应关系。格式如下:

  www.abc.com     IN     A      2.2.2.2

  4.CNAME 别名

   可以将多个名称映射到某个地址。格式如下:

   pop3  IN CNAME   mail.abc.com.(要么写相对的,要么写绝对的)

   5.MX (该区域的电子邮件服务器)

    MX邮件交换机路,指向一个邮件服务器。格式如下:

    @        IN      MX      10(优先级)      mail.abc.com

   6.PTR(指针)

   它是电子邮件系统中的邮件交换记录的一种,常被用于反向地址解析。格式如下:

   若反向区域为:101.168.192.in-addr.arpa.dns

   PTR记录:10 IN PTR .

   用来表示,地址为192.168.101.10的主机名称为.

(三)、范域名解析

   利用通配符 * (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。

   例如您的域名是abc.cn:做一个*.abc.cn的次级域名A记录指向222.222.222.222,那么生效后当访问者无论是输入“123.abc.cn”还是“123.123.abc.cn”甚至可以是”这样的 任意字符 均可以指向到222.222.222.222这个IP地址。

(四)、DNS重要目录

   1、DNS根目录

   DNS的根目录主要位于/var/named/chroot/    

   2、 DNS配置文件

   DNS的配置文件主要位于/var/named/chroot/etc

  3、区域文件

   DNS的区域文件主要位于/var/named/chroot/var 

(五)、DNS常用检测工具

   1.检测区域文档 

     named-checkzone 工具可以方便您检测区域文档,您所要遵循的格式为: named-checkzone   域名    区域文档

 

   例如,您所配置的区域为abc.com,那么 named-checkzone abc.com      /var/named/chroot/var/named/abc.com.db

  2.检测主配置文档

     named-checkconf工具可以方便您去检测主配置文档。您可以参照以下模式:

 

   named-checkconf /var/named/chroot/etc/named.conf

   3.使用日志

   当您使用以上两种方式无法解决问题时,您可以求助系统日志。日志位于/var/log/messages

(六)、DNS常用解析工具

   1.nslookup工具

   nslookup工具可以很方便的为您提供解析工作。您可以在命令行模式下直接使用nslookup   名称 ,来解析主机的地址,你也可以直接nslookup后回车,接下来使用set来帮您完成解析工作。如set q=ns之后输入abc.com (只能是区域名称)或者set q=any 之后输入(可以是区域)或者set q=mx (邮件)之后输入 abc.com

   2.dig工具

   dig工具同样可以帮您完成解析域名工作。您只须遵循以下格式:dig -t(表示查询的记录类型) 类型 区域,如dig -t ns sina.com

   3.host工具

   host工具同样可以完成域名解析工作。例如:host   

搭建DNS服务应用的软件为:BINDBerkeley Internet Name Daemon

官方站点:https://www.isc.org/

相关软件包:

bind-9.3.3-7.el5.i386.rpm

bind-utils-9.3.3-7.el5.i386.rpm

bind-chroot-9.3.3-7.el5.i386.rpm

caching-nameserver-9.3.3-7.el5.i386.rpm

cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包

bind,提供了域名服务的主要程序及相关文件

bind-utils,提供了对DNS服务器的测试工具程序(如nslookupdig等)

bind-chroot,为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)

caching-nameserver,为配置BIND作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考

 

named作为标准的系统服务脚本,通过”service named start/stop/restart“的形式可以实现对服务器程序的控制

named默认监听TCPUDP协议的53端口,以及TCP953端口:

其中UDP 53端口一般对所有客户机开放,以提供解析服务;

TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道

如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在 /var/named/ 目录

 

以下是dns配置步骤:

拓扑图:

 

 

c.com 是远端分支,b.com 是临近的分支。

一、主dns的配置,主域的创建。

1.  挂载光盘

[root@server ~]# cd /mnt/cdrom/Server/

2.安装bind的相关包

[root@server Server]# rpm -ivh bind-* --nodeps –force

[root@server Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm(提供了一些配置样例文件)。

[root@server etc]# cp -p named.caching-nameserver.conf name.conf  复制配置文件为name.conf

3vim etc/name.conf

options {

        listen-on port 53 { any; };改成any

        listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

 

        // Those options should be used carefully because they disable port

        // randomization

        // query-source    port 53;

        // query-source-v6 port 53;

 

        allow-query     { any; };改成any

};

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

view localhost_resolver {

        match-clients      { any; };改成any

        match-destinations { any; };改成any      

 recursion yes;

        include "/etc/named.rfc1912.zones";

};

 

保存退出。

4vim named.rfc1912.zones

zone "a.com" IN {

        type master;

        file "a.com.db";  #添加主域

        allow-update { none; };

};

 

zone "b.com" IN {

       #添加子域   

        type master;

        file "b.com.db";

        allow-update { none; };

};

 

5、数据库的修改

[root@server named]# cp -p localhost.zone a.com.db  复制文件为a.com.db

然后vim a.com.db

输入:$TTL    86400

@               IN SOA  ns.a.com.       root (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

 

@               IN NS         ns.a.com.

ns              IN A          192.168.101.253

www             IN A          1.1.1.1

然后再[root@server named]# cp -p a.com.db b.com.db

[root@server named]# vim b.com.db

加入:$TTL    86400

@               IN SOA  ns.b.com.      root (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

 

@               IN NS         ns.b.com.

ns              IN A          192.168.101.253

www             IN A          2.2.2.2

 

6、然后再次

vim a.com.db

输入:$TTL    86400

@               IN SOA  ns.a.com.      root (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

 

@               IN NS         ns.a.com.

ns              IN A          192.168.101.253

www             IN A          1.1.1.1

c.com.           IN NS         ns.c.com.

ns.c.com.        IN A          192.168.101.201

 修改完需要使用rndc  reload 重启服务。

 

 

7.windows  server 2003系统中做另一dns

首先安装dns服务器,在windows添加删除程序里,选择添加windows组件,然后选择网络服务,安装里面的dns服务。

安完后,打开dns服务器,在正向区域处新建一区域,

 

 

 

新建完区域后,需要设置属性:

 

 

 

 

 

然后新建主机:

 

 最后找一台主机测试,可以使用nslookup 

测试。

 

域名是ns.c.com

named-checkzone a.com /var/named/chroot/var/named/a.com.db   检测区域文档。

Name-checkconf /var/named/chroot/etc/named.conf 检测配置文档。