DNS服务

1.  什么是DNS

        1.1       dns的含义

                    dns:作为域名和IP地址相互映射的一个分布式数据库

                    域名解析:通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(主机名解析) 协议与端口号:TCP和UDP协议,端口号:53

        1.2       dns的功能

        1.2.1 主机名:也即域名,一个IP地址都可以都有个主机名

        1.2.2 主机名到IP地址的映射方式:

              静态映射:每台设备上都配置主机到IP地址的映射,各个设备独立维护自己的映射表,而且只提供本设备使用(hosts)

动态映射:建立一套域名解析系统(DNS),只为专门的DNS服务器上配置主机到IP地址的映射需要主机名通信设备,首先要到DNS服务器查询主机所对应的IP地址

    

1.3 dns的重要性

      技术角度:dns是互联网大多数应用的实际寻址方式

      资源角度:域名是互联网上的身份标识,是不可重复的唯一标识资源

1.4 dns冗余

                  dns冗余即辅dns服务器,防止主服务器宕机或者无法访问。

1.5 域名分级

                   1.5.1分级:主机名.三级域名.二级域名.顶级域名. 注:最后有一个点代表的是根域,所有域名的起点,最后一个点常被省略。

                   1.5.2 域名代表常见例子:

        顶级域名:cn中国;edu 教育机构;com 商业公司

        二级域名:代表组织或公司名称

        三级域名:代表组织或公司内部的主机名称

1.6dns管理


wKioL1YGYaCSQEraAADBOnCHhvM248.jpg

    注:管理机制:根域名服务器管理顶级域名服务器,顶级域名服务器管理二级域名服务器,依次分层管理

         in-addr.arpa : 逆向解析域(逆向域名解析)

          stanford、mit:教育机构域名(斯坦福、麻省理工)

1.7dns域名查询

1、采用递归解析:本地DNS服务器向根域名服务器发出请求,根域名服务器对本地域名服务的请求进行解析,得到记录再给本地DNS服务器,本地DNS服务器将记录缓存,并将记录返给客户机。

2、采用迭代解析:本地DNS服务器向根域名服务器发出请求,根域名服务器返回给本地域名服务器一个能够解析请求的根的下一级域名服务器的地址,本地域名服务器再向根返回的IP地址发出请求,最终得到域名解析记录。



wKiom1YGYeaw5AWKAAGAFtOPJs8375.jpg

wKioL1YGYhuQ2BQLAAFVDKyhEA0063.jpg

2. 什么是DNS服务器

    1.master(主DNS服务器):拥有区域数据的文件,并对整个区域数据进行管理。

    2.slave(从服务器或叫辅助服务器):拥有主DNS服力器的区域文件的副本,辅助

    DNS服务器对客户端进行解析,当主DNS服务器坏了后,可以完全接替主服务器的工作。

    3.forward:将任何查询请求都转发给其他服务器。起到一个代理的作用。

    4.cache:缓存服务器。

    5. hint:根DNSinternet服务器集。

 

2.1dns服务器的含义

                   Dns服务器:计算机域名系统(Domain Name System or Server)

2.2 dns服务器的构成

wKioL1YGYofjTjTRAABhr-xQGPs961.jpg

 

 

域名服务器:保存有该网络中所有主机的域名和对应的IP地址,并具有将域名转换为IP地址功能的服务器。一个域名对应一个IP或者多个IP,IP不一定有域名。分为:主服务器和转发服务器。

域名解析器:协商使用递归服务,使用查询头位。通常需要遍历多个名称服务器才能找到所需的信息

3.  部署DNS主从服务器

这里部署DNS主从服务器我以一个案例来进行

案例:随着一家公司的扩张,计算机越来越多,现在公司决定采用DNS解决方案来解决公司内部服务器IP地址的域名问题。这个域使用 abc.com正向解析域,网络采用的私有网络地址为:172.16.0.0/16

    3.1  部署主域名服务器

            3.1.1     安装软件

        Yum–y install bind

        Yum–y install bind-chroot

        Yum–y install bind-utils

注: bind : linux下dns服务的主程序

bind-chroot :bind运行的根目录,是系统的一个子目录(为了提高安全性)

bind-utils : bind软件提供的一组DNS工具包(其中工具有:dig、host、nslookup、nsupdate等)

            3.1.2     修改主配置文件

                        由于为了安全,已经安装了bind-chroot,所以所有的配置文件必须在chroot的目录下进行

    将配置文件named.conf拷贝到chroot的/etc目录下

[root@dns-master~]# cp /etc/named.conf /var/named/chroot/etc/
[root@dns-master~]# chown root.named /var/named/chroot/etc/named.conf

    修改配置文件

[root@dns-master~]# vim /var/named/chroot/etc/named.conf、
options {
        listen-onport 53 { 127.0.0.1; };//监听IPv4端口
       listen-on-v6 port 53 { ::1; };//监听IPv6端口
       directory      "/var/named";//设置域名服务的工作目录
       dump-file      "/var/named/data/cache_dump.db";//运行rndc dumpdb备份缓存资料后保存的文件路径和名称
        statistics-file"/var/named/data/named_stats.txt";//运行rndcstats后,统计信息的保存路径与名称
       memstatistics-file "/var/named/data/named_mem_stats.txt";
       allow-query     { localhost; };//指定哪些主机可以查询服务器的权威解析记录
        recursionyes;//是否允许递归查询
 
       dnssec-enable yes;//
       dnssec-validation yes;
       dnssec-lookaside auto;
 
        /* Pathto ISC DLV key */
       bindkeys-file "/etc/named.iscdlv.key";
 
       managed-keys-directory "/var/named/dynamic";
};
 
acl secondserver{
       172.16.0.253;
};
 
logging {
        channeldefault_debug {
               file "data/named.run";
               severity dynamic;
        };
};
 
zone "." IN {                                 //“.”代表根区域 
        typehint;                         //根区域的类型为hint
        file"named.ca";                //指定zone文件,默认已经成
};
 
include "/etc/named.rfc1912.zones";
include"/etc/named.root.key";

    定义根区域和自定义区域

[root@dns-master~]# vi /etc/named.rfc1912.zones
#添加自定义区域(定义正向解析文件):
zone "abc.com" IN {
        typemaster;//定义服务器类型
       allow-transfer { secondserver; };//哪些服务器可以从主服务器下载数据文件
        file"abc.com.zone";//指定正向解析文件名
};
 
zone "16.172.in-addr.arpa" IN {
        typemaster;
       allow-transfer { secondserver; };
        file"172.16.zone";//反向解析文件名
};

              3.1.3   创建区数据文件 

        创建正向解析abc.com.zone域数据文件并修改用户和组

[root@dns-master ~]# cd/usr/share/doc/bind-9.8.2/sample/var/named/
[root@dns-master named]# cp named.ca/var/named/chroot/var/named/
[root@dns-master named]# chown root.named/var/named/chroot/var/named/named.ca 
[root@dns-master named]# cp named.localhost/var/named/chroot/var/named/abc.com.zone[root@dns-master named]# chownroot.named /var/named/chroot/var/named/abc.com.zone

        编辑abc.com.zone

[root@dns-master named]# vim/var/named/chroot/var/named/abc.com.zone 
       mail.abc.com. IN A 172.16.0.2
$TTL 1D    //查询结果在外DNS服务器上的缓存时间,以秒为单位
@       INSOA  dns1.abc.com. jacob.abc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H)    ; minimum
        NS      dns1.abc.com.
        NS      dns2.abc.com.
        MX10   mail.abc.com.
        dns1    IN A 172.16.0.254
        dns2    IN A 172.16.0.253
       ntp.abc.com. IN A 172.16.0.22
       mail.abc.com. IN A 172.16.0.25
       fileserver      IN A 172.16.0.200
       printserver     IN A 172.16.0.101
        www     IN A 172.16.0.200    
注:开头格式:[zone] IN SOA [主机名] [管理员email]       
          SOA记录(起始授权机构)NS (NameServer)记录 (域名服务器)    
mail: 一般指管理员的邮箱,用”.”代替了”@”结尾加上”.”
   NS:表示这个主机是一个域名服务器
  A:定义了一条A 记录,即主机名到IP地址对应记录
 MX:定义了一条邮件记录
CNAME:定义了对应主机的一个别名
Type类型有三种:masterslave hint :  
Master:表示定义的是主域名服务器
Slave:表示定义的是辅助域名服务器
Hint:表示是互联网中根域名服务器
Zone:关键字定义域区,一个zone定义一个域区
PTR:记录用来解析IP地址对应的域名
内容注释:
Serial:其格式通常会是“年月日+修改次序,当slave要进行资料同步时会比较这个号码。如果发现这里的号码比它边的数值“大”就进行更新,否则葫芦。不能超过10位数字
Refresh:告诉slave要隔多久要进行资料同步(是否同步看serial的比较结果)。
Retry:如果slave在进行更新失败后,要隔多久再进行重试。
Expire:这里是记录逾期时间当slave一直未能成功与master取得联系,那到这里就放弃retry,同时这里的资料也将标识过期(expire)
Minimum:这是最小默认TTL值,如果前面没有用”$TTL”来定义,就以此值为准。

            配置反向解析域172.16.zone

[root@dns-master named]# vim/var/named/chroot/var/named/172.116.zone
$TTL 1D
@  IN SOAdns1.abc.com. jacob.abc.com. (
               10      ; serial
               1D      ; refresh
               1H      ; retry
               1W      ; expire
               3H )    ; minimum
        NS  dns1.abc.com.
        NS  dns2.abc.com.
254.0   INPTR  dns1.abc.com.
253.0   INPTR  dns2.abc.com.
22.0    INPTR  ntp.abc.com.
25.0           IN PTR  mail.abc.com.
100.0   INPTR  fileserver.abc.com.
101.0   INPTR  printserver.abc.com.
200.0   INPTR  www.abc.com.
201.0  IN PTR  www.abc.com.

            3.1.3     启动服务

    [root@dns-mastervar]# service named start
[root@dns-mastervar]# chkconfig named on

    

            3.1.4    验证服务

    查询工具:nslookup、dig、host

    [root@dns-master~]# nslookup www.abc.com
[root@dns-master~]# host www.abc.com
[root@dns-master~]# dig abc.com MX

    

        3.2 部署从域名服务器

                3.2.1     安装dns软件

    [root@dns-slave~]# yum -y install bind
[root@dns-slave~]# yum -y install bind-chroot
[root@dns-slave~]# yum -y install bind-utils

                3.2.2    修改配置文件

        将配置文件named.conf拷贝到chroot的/etc目录下

[root@dns-slave~]# cp /etc/named.conf /var/named/chroot/etc/
[root@dns-slave~]# chown root.named /var/named/chroot/etc/named.conf

        修改主配置文件

options {
        listen-onport 53 { 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";
       allow-query     { any; };
        recursionyes;
 
        dnssec-enableyes;
       dnssec-validation yes;
       dnssec-lookaside auto;
 
        /* Pathto ISC DLV key */
       bindkeys-file "/etc/named.iscdlv.key";
 
       managed-keys-directory "/var/named/dynamic";
};
 
logging {
        channeldefault_debug {
                file "data/named.run";
               severity dynamic;
        };
};
 
zone "." IN {
        typehint;
        file"named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

            修改数据区域文件

[root@dns-slave ~]# vim/etc/named.rfc1912.zones
#添加以下内容:
zone "abc.com" IN {
        typeslave;
        masters {172.16.0.254; };
        file"abc.com.zone";
 
};
 
zone "16.172.in-addr.arpq" IN {
          typeslave;
        masters {172.16.0.254; };
        file"172.16.zone";

            创建slaves目录并启动slave服务

[root@dns-slave ~]# mkdir -p/var/named/chroot/var/named/slaves
[root@dns-slave ~]# chmod 775/var/named/chroot/var/named/slaves/
[root@dns-slave ~]# service named start

这篇文章完成的经历是非常的坎坷,由于杂事缠身,写写停停。哎`~。自己感觉都有点生疏,博文先发,自己在重新梳理一遍并纠错,感觉后面的配置文件写的还是不够详细……

本篇博文主要参考了丁明一前辈的<<linux运维之道>>和京峰吴光科老师的文档而写成的。其中可能一些细节会有点问题!希望各位朋友能够指出其中的不足与错误,非常感谢大家的指导。