码迷,mamicode.com
首页 > 其他好文 > 详细

DNS笔记&主从服务器搭建实验

时间:2015-12-18 16:45:25      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:dns

DNS笔记  DNS正反主从服务搭建



==========================理论部分=========================

DNS:Domain Name Service协议,属于应用层协议

使用端口53/TCP  53/UDP

作用:提供域名和IP的解析服务,在互联网中属于非常重要的基础服务

.  根域

.com  .edu  .gov  .org  等等  顶级域,用来指示某个国家或地区或组织使用的名称类型

baidu.com  qq.com    等等,二级域名,个人或者组织在互联网上使用的的注册名称


正向解析:将域名解析为IP

反向解析:将IP解析为域名

注意:正向解析和反向解析是两个不同的名称空间,两颗不同的解析树


DNS查询类型

迭代查询  interration

    一次,客户机把查询请求发送给DNS,剩下的由DNS来去查询,返回最终结果

递归查询  recursion

    多次,查询请求发送给DNS,DNS告诉客户机应该找谁谁谁去查询,然后客户机自己一级级的找

    

DNS服务器类型:

    主DNS

    从DNS

    缓存DNS

    转发器

    

主DNS:维护所负责的域内解析库,由管理员来维护

从DNS:从主DNS服务器那里或者其他的DNS服务器那里“复制”一份(区域传送)解析库文件

    序列号:解析库的版本号,解析库内发生变化,手动增加版本号

    刷新时间:主、从服务器同步时间间隔

    重试时间:请求失败后,再次请求同步的时间间隔

    过期时间:从DNS始终联系不到主DNS服务器,多久后放弃服务器角色停止提供服务

    “通知”机制:主DNS更新解析库后,主动通知从DNS进行同步更新

    

区域传送:

    全量传送:传送整个解析库

    增量传送:传送变化的部分

    

FQDN:full qualified domain name 完全合格域名

    www.magedu.com.


DNS查询解析过程:

    1)客户机提交域名解析请求,并将该请求发送给本地的DNS服务器(提交之前会检查hosts文件)

    2)本地DNS会查找本地缓存中有没有,有就返回结果给客户机,没有就把请求发送给根服务器(客户机-->本地DNS :迭代查询)

    3)根名称服务器返回给本地DNS服务器一个所查询到的顶级域名服务器的地址(递归查询)

    4)本地DNS服务器,再像返回的顶级域名服务器发起请求(递归查询)

    5)收到该查询请求的顶级域名服务器查询缓存,有结果则返回,没有结果,则返回下级的域名服务器地址

    6)可能要重复上个动作,直至本地DNS查询到结果,最后将结果缓存本地并告知客户机结果

    

解析答案:

    肯定答案:正确解析请求内容

    否定答案:请求的条目不存在等原因无法返回结果


    权威答案:DNS服务器在自己的区域文件中找到了客户机要查询的记录,返回的就是权威答案

    非权威答案:DNS服务器在自己的区域文件中没有找到客户机要的结果,而是通过递归的方法找到结果返回给客户机,这个答案就是非权威答案

    


区域解析库,由众多RR组成

    资源记录 resource record

        记录类型  A AAAA CNAME NS SOA MX PTR 等

        

SOA

   Start Of Authority起始授权记录,一个区域解析库中有且只能有一个SOA记录,而且必须出现在解析库的第一条


A

    Internet Address,作用将FQDN-->IP

    

AAAA

    ipv6,FQDN-->IP

    

PTR

    PoinTeR  IP-->FQDN 反向解析


NS

    Name Server,当前区域的DNS服务器

    

CNAME

    Canonical Name 别名记录


MX

    Mail eXchanger 邮件交换记录

    

资源记录定义的格式:

    语法:name  [TTL] IN  RR_TYPE  value

        注意:TTL可从全局继承,@ 可引用当前区域的名字


SOA记录格式:

    name  当前区域的名称,例如"magedu.com."

    value  有多部分组成

        1)当前区域的主DNS的FQDN,也可以使用当前区域的名称,简写@

        2)当前区域管理员邮箱地址,但地址中不能使用@,一般使用.代替,例如:admin@magedu.com -->  admin.magedu.com

        3)[主从服务协调属性的定义以及否定答案的统一TTL]

    例如:

    magedu.com.  IN  SOA  ns1.magedu.com. mail.magedu.com. (

        20151216001; //序列号 

        2H;          //刷新时间

        10M;         //重试时间

        1W;          //过期时间

        1D;          //否定答案的TTL

    )


NS格式:

    name  当前区域的名字

    value  当前区域主DNS的FQDN,如"ns1.magedu.com."

    注意:一个区域中可以有多个NS记录

    例如:

        magedu.com.  IN  NS  ns1.magedu.com.

                     IN  NS  ns2.magedu.com.    //如果前面不写名字,则是继承前面的名称

    注意:

        1)相邻的的连个资源记录name相同时,后面的可省略

        2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该有一条A记录  (glue record 粘合记录)


MX

    name  当前区域的名字

    value  当前区域的某邮件服务器(SMTP服务器)的主机名

        一个区域内,MX记录可有有多个,但每个value之前都应该有个0-99的数字,表示优先级,数字越小优先级越高

    例如:

        magedu.com. IN MX 10 smtp1.magedu.com.

                    IN MX 20 smtp2.magedu.com.

    注意:对于MX而言,任何一个MX记录后面的服务器名字,都应该有一条A记录

    

A

    name  某主机的FQDN,如"www.magedu.com."

    value  主机对应的IP地址

    例如:

        www.magedu.com.   IN   A   172.20.1.34

    注意:

        1)同一个名字可以有多个不同的值,但需要有多条记录来实现(轮询解析)

        2)同一个值可以有多个不同的名字,通过多个名字来实现,多条记录

        3)可以使用泛域名解析

            如:  *.magedu.com.  IN  A  10.1.1.1

                    magedu.com.  IN  A  10.1.1.1

            避免用户写错名称时给出错误答案,可使用泛域名来指向至某特定地址


AAAA

    name  FQDN

    value  IPV6

    

PTR

    name  IP,有特定的格式,要把IP反过来写,如172.16.100.1要写成1.100.16.172,而且要有特定后缀in-addr.arpa.

    value  FQDN

    例如:

        1.100.16.172.in-addr.arpa.  IN  PTR  www.magedu.com.

    可简写,网络地址可省,仅写主机地址,如192.168.1.1/24  192.168.1  可省

        1   IN  PTR    www.magedu.com.

    注意:网络地址及后缀可省,但主机地址依然要反着写

    

CNAME

    name  别名的FQDN

    value  正式名字的FQDN

    例如;

        web.magedu.com.  IN  CNAME  www.magedu.com.

    


                        bind部分

子域授权:

    每个域名称服务器,都是通过上级名称服务器在解析库进行授权


bind的安装配置:

    程序包叫bind,程序名叫named,由主包和多个支包组成

    bind

    bind-utils

    bind-lib

    

    bind-chroot  不建议安装

    

    

    

bind

    服务脚本:/etc/rc.d/init.d/named

    主配置文件:/etc/named.conf   /etc/named.rfc1912.zones   /etc/rndc.key

    解析库文件:/var/named/ZONE_NAME.zone

        注意:

            1)一台物理服务器可以同时为多个区域提供解析

            2)必须要有根区域   named.ca

            3)应该有两个(如果使用IPV6,应该更多)实现localhost和本地回环地址的解析库


rndc:remote name domain controller  默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性的管理

    端口:953/TCP



主配置文件:/etc/named.conf

    全局配置options{}

        里面定义了监听地址、端口、解析库路径等

    

    日志子系统配置logging{}

    

    根"."  type hint  file named.ca     //named.ca在/var/named/下,是个相对路径

    

    区域定义:本机能够为那哪些zones进行解析,就要定义那些zone

        zone "ZONE_NAME"  in {}




缓存名称服务器的配置:

    编辑/var/named.conf

        关闭dnssec: dnssec-enable   no

        all-query   允许那些主机查询   { any; }

        recursion  yes ;  允许递归

        listen-on port 53 { 监听的IP(本机IP); 127.0.0.1; };



主DNS服务器的配置:

1、在缓存名称服务器的基础上,编辑/etc/named.rfc1912.zones(在/etc/named.conf中有写:include "/etc/named.rfc1912.zones";)添加区域

    格式:

        zone "ZONE_NAME"  IN {

            type  { master|slave|hint|forward };

            file  "ZONE_NAME.zone";   文件名要用引号引起来,否则语法错误

        };

    如:

        zone "magedu.com" IN {

            type master;

            file "magedu.com.zone";

        };


2、定义区域解析库文件:/var/named/

    /var/named/下手动建立

    宏定义:变量定义,自动引用


        $TTL 86400    单位是秒,也就是1天 1D

        $ORIGIN magedu.com.   区域名的宏定义

        @ IN SOA ns1.magedu.com.  mail.magedu.com. (

            20151216001   序列号

            1H            刷新时间

            5M            重试时间

            7M            过期时间

            1D              否定答案的TTL

            )

            IN  NS  ns1.magedu.com.   .magedu.com.  可省略

            IN  NS  ns2                 省略写法

            IN  MX  10  mx1

            IN  MX  20  mx2

        ns1  IN  A  1.1.1.1

        ns2  IN  A  1.1.1.2

        mx1  IN  A  1.1.1.1

        mx2  IN  A  1.1.1.2

        www  IN  A  1.1.1.3

        web  IN  CNAME  www

        *   IN  A   1.1.1.5

            IN A 1.1.1.5


named-checkconf 命令,检查配置文件语法错误

named-checkzone "ZONE_NAME"  /var/named/ZONE_NAME.zone 检查区域解析库

    named-checkzone "magedu.com" /var/named/magedu.com.zone

区域解析库文件创建好以后,记得修改权限和属组

    chmode 640 ZONE_NAME.zone

    chown  :named ZONE_NAME.zone

    

dig 命令

    格式;dig [@server] [-t type] name

    注意;dig测试DNS系统,因此不会检查hosts文件

    查询选项;

        +[no]trace      跟踪解析过程

        +[no]recurce    进行递归解析


host命令

    格式:host  [-t type] name [server]


nslookup命令

    交互式

    nslookup>

            server IP     设置使用那台DNS进行查询

            set q=RR_TYPE  

            NAME            解析名称

            


反向解析:

    区域名称:网络地址反写.in-addr.arpa.

        172.16.1 --> 1.16.172.in-addr.arpa.

1、定义区域

    zone "ZONE_NAME" IN {

        type {master|slave|forward};

        file "网络地址.zone";

    };


2、提供区域解析文件

    注意;不需要MX A AAAA,以PTR记录为主

如:

$TTL 86400

$ORIGIN 1.16.172.in-addr.arpa.

@ IN SOA ns1.magedu.com. mail.magedu.com. (

        20151216001

        1H

        5M

        1w

        1D

    )

    IN  NS  ns1.magedu.com.  需要全写,不能像正向中省略,前面有ORIGIN定义,省略了就变成了ns1.1.16.172.in-addr.arpa.

    IN  NS  ns2.magedu.com.

33  IN  PTR  ns1.magedu.com.

34  IN  PTR  ns2.magedu.com.

33  IN  PTR  mail.magedu.com.


注意:依然记得要修改权限和属组


测试反向解析:

    dig -x IP @SERVER

模拟区域传送

    dig -t axfr magedu.com  @172.20.1.33  全量查询

    dig  -t  axfr 1.20.172.in-addr.arpa @172.20.1.33  反向的全量查询



主从复制:

定义从区域服务器的方法

    zone "ZONE_NAME" IN {

        type slave;

        masters { master_ip; };

        file "slaves/ZONE_NAME.zone";

    };

    


正向的从服务器:/etc/named.rfc1912.zones

    zone  "magedu.com" IN {

        type slave;

        master { 172.20.1.33; };

        file "slaves/magedu.com.zone";  slaves目录也是相对于/var/named/,slaves目前权限预先定义好了

    };

    注意:在主DNS服务器中一定要有ns2.magedu.com.(即从服务器)而且得有ns2的A记录,否则DNS有更新记录时,不会通知到各个从DNS服务器更新


主从复制时注意事项:

    1)应该为一台独立的名称服务器

    2)主服务的区域解析库中必须有NS记录指向从服务器

    3)从服务器只需要定义区域,而无需提供解析库文件,同步的解析库文件放置在/var/named/slaves/下

    4)主DNS服务器允许从服务器作区域传送

    5)主从服务器时间应该同步,可使用ntp工具进行

    6)bind版本应保持一致,否则应该从高主低



反向的从服务器:/etc/named/named.rfc1912.zones

    zone "1.20.172.in-addr.arpa" IN {

        type slave;

        masters { 172.20.1.33; };

        file "slaves/172.20.1.zone";

    };



rndc命令

953/TCP

    格式:rndc COMMAND

    

    COMMAND:

        reload  重新加载配置文件和解析库文件

        reload zone 重新加载区域解析库文件

        retranster zone 手动启动区域传送过程,而无需增加序列号

        notify zone 重新对区域传送发通知

        reconfig  重新加载配置文件

        querylog  开启或关闭查询日志,一般不开启,除非用来定位错误

        trace LEVEL  开启程序debug,调试级别越高,记录越详细,0为不开启,正常情况下不应该开启

        status  查看运行状态

        

=========================实验部分========================

规划:

    172.20.1.33和172.20.1.34,其中

    1.33为正向解析,从服务器为1.34

    1.34为反向解析,从服务器为1.33


1.33正向DNS配置:

    yum安装bind过程略

    #yum install -y bind 即可

    编辑配置文件 #vim /etc/named.conf

    修改:

    options {

            listen-on port 53 { 172.20.1.33; 127.0.0.1; };  修改,增加监听本机IP

    //      listen-on-v6 port 53 { ::1; };          注释掉IPV6

            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; };   修改,允许所有查询

            recursion yes;


            dnssec-enable no;       修改,禁止dnssec

    //      dnssec-validation yes;      注释

    //      dnssec-lookaside auto;      注释


            /* Path to ISC DLV key */   注释

    //      bindkeys-file "/etc/named.iscdlv.key";      注释


    //      managed-keys-directory "/var/named/dynamic";    注释

    };


    编辑/etc/named.rfc1912.zones

    增加:

        zone "linuxtest.com" IN {

            type master;

            file "linuxtest.com.zone";

        };


    新建linuxtest.com的解析库

    vim  /var/named/linuxtest.com.zone

    内容:

        $TTL 86400

        $ORIGIN linuxtest.com.

        @ IN SOA ns1.linuxtest.com.  wkp.linuxtest.com. (

                20151217001

                1H

                5M

                1W

                1D

                )

                IN NS ns1.linuxtest.com.

                IN NS ns2.linuxtest.com.

        ns1     IN A 172.20.1.33

        ns2     IN A 172.20.1.34

        www     IN A 172.20.1.33

        web     IN CNAME www

        mail1   IN A 172.20.1.33

        mail2   IN A 172.20.1.34

        @       IN MX 10 mail1      

                IN MX 20 mail2

            

    

    修改区域解析库文件权限

    [root@localhost named]# chmod 640 linuxtest.com.zone 

    [root@localhost named]# chown :named linuxtest.com.zone 


至此,主DNS正向解析部分已完成,下面是在1.34上做从DNS

修改主配置文件:  /etc/named.conf

    options {

            listen-on port 53 { 172.20.1.34; 127.0.0.1; };

    //      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; };

            recursion yes;


            dnssec-enable no;

    //      dnssec-validation yes;

    //      dnssec-lookaside auto;


            /* Path to ISC DLV key */

    //      bindkeys-file "/etc/named.iscdlv.key";


    //      managed-keys-directory "/var/named/dynamic";

    };



修改配置文件/etc/named.rfc1912.zones

    添加:

        zone "linuxtest.com" IN {

            type slave;

            file "slaves/linuxtest.com.zone";

            master { 172.20.1.33;  };

        };      


注意:实验时可关闭iptables,或者允许53/TCP,时间也要同步,否则可能会出现不能同步的情况


在1.34上做反向解析的主DNS

    修改配置文件:vim  /etc/named.rfc1912.zones  

    添加:

    zone "1.20.172.in-addr.arpa" IN {

        type master;

        file "172.20.1.zone";

    };


    添加解析库文件/var/named/172.20.1.zone

    $TTL 86400

    $ORIGIN 1.20.172.in-addr.arpa.

    @ IN SOA ns2.linuxtest.com. wkp.linuxtest.com. (

            20151218001

            1H

            5M

            1W

            1D

            )

            IN NS ns1.linuxtest.com.

            IN NS ns2.linuxtest.com.

    33      IN PTR ns1.linuxtest.com.

    34      IN PTR ns2.linuxtest.com.

    33      IN PTR mail1.linuxtest.com.

    34      IN PTR mail2.linuxtest.com.


修改权限以及属组

[root@localhost named]# chown :named 172.20.1.zone 

[root@localhost named]# chmod 640 172.20.1.zone 


[root@localhost named]# rndc reload

重读配置文件和解析库

测试解析:

    [root@localhost named]# dig -x 172.20.1.33 @172.20.1.34


    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 172.20.1.33 @172.20.1.34

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22105

    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2


    ;; QUESTION SECTION:

    ;33.1.20.172.in-addr.arpa.INPTR


    ;; ANSWER SECTION:

    33.1.20.172.in-addr.arpa. 86400INPTRns1.linuxtest.com.

    33.1.20.172.in-addr.arpa. 86400INPTRmail1.linuxtest.com.


    ;; AUTHORITY SECTION:

    1.20.172.in-addr.arpa.86400INNSns2.linuxtest.com.

    1.20.172.in-addr.arpa.86400INNSns1.linuxtest.com.


    ;; ADDITIONAL SECTION:

    ns1.linuxtest.com.86400INA172.20.1.33

    ns2.linuxtest.com.86400INA172.20.1.34


    ;; Query time: 1 msec

    ;; SERVER: 172.20.1.34#53(172.20.1.34)

    ;; WHEN: Fri Dec 18 15:15:42 2015

    ;; MSG SIZE  rcvd: 157


在1.33上做反向解析的从服务器

    修改主配置文件:vim /etc/named.rfc1912.zones

    zone "1.20.172.in-addr.arpa" {

        type slave;

        file "slaves/172.20.1.zone";

        masters { 172.20.1.34; };

    };


    [root@localhost named]# rndc reload

    server reload successful

    [root@localhost named]# tail /var/log/messages

    在日中中可以看到同步的日志消息

    [root@localhost named]# ll /var/named/slaves/

    总用量 4

    -rw-r--r-- 1 named named 456 12月 18 15:20 172.20.1.zone

解析库文件已存在,同步成功。



    



    


DNS笔记&主从服务器搭建实验

标签:dns

原文地址:http://wangkunpeng.blog.51cto.com/1538469/1726093

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!