什么是DNS?

DNS:Domain Name Service 是一种应用层协议

用于ip地址和域名之间转换

 使用(TCP/UDP) 53端口服务


DNS域名称
    域名系统作为一个层次结构和分布式数据库,是一个倒置树形结构,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。
完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。  主机的 FQDN 是 im.qq.com。
DNS 域的名称层次结构

DNS域名称空间的组织方式
    按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。

DNS 和 Internet 域
    互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:

资源记录
    DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。
常见的RR见下图:

    DNS的工作方式:

反向解析

正向解析

 反向解析:

 反向解析即为,将ip地址发送给DNS服务器,DNS服务器解析出匹配的域名返回。

 一般用于邮件服务器中垃圾邮件的判定,比如你用 xxx@name.com 这个邮箱给我的邮箱 123@163.com 发了一封信。163邮件服务器接到这封信会查看这封信的信头文件,这封信的信头文件会显示这封信是由哪个IP地址发出来的。然后根据这个IP地址进行反向 解析,如果反向解析到这个IP所对应的域名是name.com 那么就接受这封邮件,如果反向解析发现这个IP没有对应到name.com,那么就拒绝这封邮件。     


正向解析:

 正向解析,将域名发送给DNS服务器,DNS服务器返回匹配的IP地址(暂不考虑递归和迭代),主机通过返回的IP地址进行访问。

在DNS解析的过程中有2中模式:递归和迭代

迭代: 按照解析规则,主机首先将域名发送给根服务器(.),跟服务器根据对应的顶级域返回相应的DNS服务器地址,主机再向得到的DNS服务器地址,进行DNS解析申请,该主机继续判断应交给哪个更接近的DNS服务器,这样层层迭代,直到找到域名的对应IP地址返回给主机。


递归:  主机将DNS请求发送给一个代理的服务器,该服务器进行迭代处理,得到结果返回给主机。从主机的角度,仅发送了一次,而后续的迭代操作由代理服务器完成。


DNS服务的实现,BIND

相关软件包
bind-9.8.2-0.30.rc1.e16
bind-utils-9.8.2-0.30.rc1.e1l.x89_64
bind-chrot-9.3.3-7.el6

    /var/named/ 存数据

    BIND服务器端程序
    主要执行程序: /usr/sbin/named
    服务脚本: /etc/init.d/named
    默认监听端口:53
    主配置文件:/etc/named.conf
    保存DNS解析记录的数据文件位于:
        /var/named/


named.conf文件配置基础:

options{}
          listen-on {监听ip}
          directory 工作目录
           allow-query {允许查询网段}
           recursion 是否允许递归 yes|no

wKiom1YKHsfx8sgSAAFxoFFBvMk049.jpg

logging{}
                file 日志文件位置

wKiom1YKHujA0n_zAABAWfV5jVQ298.jpg

zone{} 区域

wKioL1YKHxvyvcM-AAC7fGSbn9w797.jpg


在Centos6下进行BIND配置

正向配置:

第一步配置/etc/named.conf
                options{                                  //函数中
                        listen-on port 53 { 192.168.1.104; };//默认端口,本机IP
                            .
                            .
                        allow-query     {192.168.1.0/24; };//允许访问的网段和掩码
                            }

wKioL1YKIRyhCULuAAFm7Mp8BoE096.jpg

                logging函数有关日志,无需改动

wKiom1YKISWCtd32AAA_iBoT9ew017.jpg

                其后需添加zone函数
                zone "." IN {
                        type hint;
                        file "named.ca";
                };
                zone "openex27.com" IN {
                        type master;          //hint|master|slave|forward
                        file "openex27/openex27.zone";  //zone文件相对路径
                };

wKiom1YKIazyCgwOAABUJ9aeOVc528.jpg


第二步:
                    创建存放自建zone文件的文件夹
                    在该文件夹下创建并编辑相关zone文件
                    zone格式
                            首先设定SOA(Start Of Authority,授权信息开始)记录
                            @代表本地网络  
 $TTL 1D    //TTL宏用于设置等待时间
@       IN      SOA    openex27.com. //区域地址     admin.openex27.com.//管理员邮件地址 (
                                                        2009021901        ;更新序列号
                                            3H            ;刷新时间
                                            15M            ;重试延时
                                            1W            ;失效时间
                                            1D           ;无效地址解析记录的默认缓存时间 )
                            IN NS  ns1.openex27.com.
                        ns1 IN A 192.168.1.104
                        www IN A 192.168.1.104 //实现模拟负载均衡
                        www IN A 192.168.1.105 //A主机
                        web IN CNAME www   //别名

wKioL1YKKJiARJbrAACcj3k4QmY342.jpg

第三步:
                    重启BIND服务,/etc/init.d/named restart
                                  service named restart

wKiom1YKKX7jGSARAABJpi1n_L0794.jpg


测试:
                  dig -t NS openex27.com @192.168.1.104

wKiom1YKKbyhbWPcAAHRsu7jqSg507.jpg


反向配置:

部分配置同正向配置,此处仅增量添加

第一步配置:/etc/named.conf
                    添加反向解析的zone
                    注意:zone名要使用相反取名
                    例如:
                            zone "1.168.192.in-addr.arpa" IN {     
                            type master;
                            file "openex27/1.168.192.arpa";
                            };

wKioL1YKK3TAEdF2AABAm6dYYx4331.jpg

第二步配置:创建相关的zone文件
                    文件名仍需相反取名

wKiom1YKLTryydcTAACM4XB4nvU182.jpg

            第三步:测试
                    dig -x  待解析ip @DNS服务器地址

wKioL1YKLmLztoaaAACaUyArbxU308.jpg


    主从域名服务器:

主服务器:
                编辑 /etc/named.conf
                修改需要传递给从服务器的zone区域
                在allow-transfer中添加从服务器地址

wKiom1YKMFKyOHj4AABHOALb5eA566.jpg


从服务器:

   编辑 /etc/named.conf
                修改或添加需要从主服务器接受的zone
                type为 slave
                masters {主服务器IP}

wKiom1YKMNyR2YpnAABUB36CUq8165.jpg


子域授权

  子域授权,在原有的域上再划分出一个小的区域并指定新DNS服务器。在这个小的区域中如果有客户端请求解析,则只要找新的子DNS服务器。这样的做的好处可以减轻主DNS的压力,也有利于管理。这次只做正向区域的子域授权。

第一步:
    在父域服务器上,编辑对应区域的zone文件

在其中添加子域信息

ops    IN    NS    ns1.ops

ns1.ops    IN     A    192.168.1.105

wKiom1YKdUPDsL74AACwBH0NZZc095.jpg

第二步:

在子域服务器中编辑/etc/named.conf

添加该子域zone信息

wKioL1YKfIXwykmYAAA3aQ3sGmU767.jpg

创建对应的ops目录以及ops.openex27.com.zone文件

编辑之

wKiom1YKfMrCCjoLAACKU-jtXfU679.jpg

第三步

重启服务或重读服务配置文件

service named restart

rndc reload

测试

dig -t A mail.ops.openex27.com @192.168.1.104

wKioL1YKfdPDu6rbAABfwKSYvMY029.jpg


注意!若dig测试没有结果可能是/etc/named.conf中options函数下

wKiom1YKfjGAW8cEAAA3aVP1u8A790.jpg

这三个选项为yes,改成no,取消安全认证便可以测试

分离解析

来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果

wKiom1YLXZySD_mrAAEk-5dexjw423.jpg

构建分离解析:

第一步:

在DNS服务器的/etc/named.conf

在其中添加view

wKioL1YLYE7DO17zAACt7WLytHE764.jpg


第二步:

创建对应的zone文件夹,在其中创建zone文件

openex27/openex27.com.zone.lan

wKiom1YLYSKRpqtzAAClj3lz4zo330.jpg

openex27/openex27.com.zone.wan

wKiom1YLYZ7Twc1pAACj9k_6428099.jpg

保存退出


第三步:

 重启named服务


第四部测试:

在不同的网段测试www.openex27.com所返回的地址