Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667638
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

2015年(47)

2014年(40)

分类: 系统运维

2014-10-11 19:26:23

实验环境 iptables  selinux都关闭  实验操作系统:rhel6.4        参考--《鸟哥的linux私房菜—服务器篇》
DNS的正解 反解  zone的意义:                                                    

            从主机名查询到IP的流程为:正解
            从IP反解析到主机名的流程为:反解
            不管是正解还是反解,每个域的记录就是一个区域(zone)
关于客户端的相关文件说明:
            /etc/hosts: Hostname对应IP的文件
            /etc/resolv.conf: ISPde DNS服务器IP记录处
            /etc/nsswitch.conf: 这个文件决定先使用/etc/hosts还是/etc/resolv.conf的设置
            一般而言以/etc/hosts先
            cat  /etc/nsswitch.conf
                 有一行:hosts:      files dns   (files就是使用/etc/hosts,dns就是使用/etc/resolv.conf)
有些时候,我们重启network网络服务,然后/etc/resovl.conf里面配置的DNS会改变。这是因为,在使用DHCP时,
系统会自动使用DHCP传来的数据,所以我们可以告诉系统不使用传来的数据,
在/etc/sysconfig/network-script/ifcfg-eth0加上一行:PEERDNS=no再重启网络服务即可


现在开始我们的DNS之旅吧!
    安装需要的软件:    
            yum install bind bind-chroot -y
     为了系统的安全性,现在很多版本都已经自动将bind相关的程序chroot了,如何知道呢? 查阅一下:
            cat   /etc/sysconfig/named
                    ROOTDIR=/var/named/chroot  (chroot后在这里哦~~)
    对我们的dns进行配置:
            /etc/init.d/named    start
            cd /var/named/chroot/etc
            对named.conf进行修改:
            vim  named.conf
                options {
                listen-on port 53 {any; };            默认localhost,即只有本机才能对DNS进行查询,可以接多个接口,所以后面有分号)
        //      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; };                (谁可以对我的DNS进行查询请求)
                recursion yes;
                dnssec-enable yes;
                dnssec-validation yes;
                dnssec-lookaside auto;
                /* Path to ISC DLV key */
                bindkeys-file "/etc/named.iscdlv.key";
                managed-keys-directory "/var/named/dynamic";
        };            
    去设置我们的zone:
            vim named.rfc1912.zones  
                在最后添加:
                      zone "example.com" IN {         (zone的名称)               
                      type master;                             (什么类型)
                        file "example.com.zone";         (数据库文件在哪)
                        allow-update { none; };        
                };
                    zone "0.168.192.in-addr.arpa" IN {
                        type master;
                        file "example.com.local";
                        allow-update { none; };
                };
     再去配置我们的数据库文件:
               cd    /var/named/chroot/var/named
               cp -p named.localhost example.com.zone
               cp -p named.loopback  example.com.local
               切记,不要将这两个文件复制到跟我们的named.conf在同一个目录,不然重启服务的时候会以下出错(实验在这里浪费好多时间):
                               Error in named configuration:
                                zone localhost.localdomain/IN: loaded serial 0
                                zone localhost/IN: loaded serial 0
                                zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
                                zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
                                zone 0.in-addr.arpa/IN: loaded serial 0
                                zone example.com/IN: loading from master file example.com.zone failed: file not found
                                zone example.com/IN: not loaded due to errors.
                               _default/example.com/IN: file not found
                                zone 0.168.192.in-addr.arpa/IN: loading from master file example.com.local failed: file not found
                                zone 0.168.192.in-addr.arpa/IN: not loaded due to errors.
                                _default/0.168.192.in-addr.arpa/IN: file not found
              由于我是用物理机做的DNS去给虚拟机用,方便用虚拟机做实验嘛=。=所以下面这两个文件是我的配置:
               vim   example.com.zone
              $TTL 1D
                @       IN SOA  silence.example.com.    root.example.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                            NS      silence.example.com.
               silence  A       192.168.0.100
                           A       192.168.0.100
                vm1     A       192.168.0.201
                vm2     A       192.168.0.202
                vm3     A       192.168.0.203
                vm4     A       192.168.0.204
                vm5     A       192.168.0.205
                vm6     A       192.168.0.206
                vm7     A       192.168.0.207
                vm8     A       192.168.0.208
              
          vim example.com.local
            $TTL 1D
            @       IN SOA  silence.example.com.    root.example.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                           NS      silence.example.com.
                100     PTR     example.com.
                100     PTR     silence.example.com.
                201     PTR     vm1.example.com.
                202     PTR     vm2.example.com.
                203     PTR     vm3.example.com.
                204     PTR     vm4.example.com.
                205     PTR     vm5.example.com.
                206     PTR     vm6.example.com.
                207     PTR     vm7.example.com.
                208     PTR     vm8.example.com.
下面来说说这两个文件的内容:
                @ :代表zone的意思,在example.com,zone中代表example.com在example.com.local中代表0.168.192.in-addr.arpa
                 .: 这个点很重要,代表一个完整的主机名而不是hostname,如果没有.则vm1.example.com代表vm1.example.com.example.com              

                A  :Address 域名向ip地址转换的记录;

             PTR:Printer ip地址向域名转换的记录;

               NS:代表域内的dns服务器;

               MX:代表域内的邮件服务器;

       CNAME:域名的别名;

             SOA:start of authority用于标示域内主DNS服务器。
               Serial﹕其格式通常会是“年月日+修改次序”(但也不一定如此﹐您自己能够记得就行)。当 slave 要进行数据同步的时候﹐
会比较这个号码。如果发现在这里的号码比它那的值“大”﹐ 就进行更新﹐否则忽略。不过设 serial 有一个地方您要留意﹕不能超过 10 位数字﹗

                Refresh﹕这里是是告诉 slave 要隔多久要进行数据同步(是否同步要看 Serial 的比较结果)。
                Retry﹕如果 slave 在进行更新失败后﹐要隔多久再进行重试。
                Expire﹕这是记录逾期时间﹕当 slave 一直未能成功与 master 取得联络﹐那到这里就放弃 retry﹐同时这里的数据也将标识为过期( expired )。
                Minimum﹕这是最小预设 TTL 值﹐如果您在前面没有用“$TTL”来定义﹐就会以此值为准

            OK,文件配置来之后,重启服务,开启客户机进行测试吧~(注意更改你的测试机的DNS)
         下面是我的测试情况:
                [root@vm3 named]# dig vm1.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> vm1.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6081
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;vm1.example.com. IN A            
;; ANSWER SECTION:
vm1.example.com. 86400 IN A 192.168.0.201


;; AUTHORITY SECTION:
example.com. 86400 IN NS silence.example.com.


;; ADDITIONAL SECTION:
silence.example.com. 86400 IN A 192.168.0.100


;; Query time: 2 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Oct 11 19:21:45 2014
;; MSG SIZE  rcvd: 87


  [root@vm3 named]# dig -x 192.168.0.204


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 192.168.0.204
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17503
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:
;204.0.168.192.in-addr.arpa. IN PTR


;; ANSWER SECTION:
204.0.168.192.in-addr.arpa. 86400 IN PTR vm4.example.com.


;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 86400 IN NS silence.example.com.


;; ADDITIONAL SECTION:
silence.example.com. 86400 IN A 192.168.0.100


;; Query time: 1 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Oct 11 19:23:24 2014
;; MSG SIZE  rcvd: 111


再来折腾下主从复制与文件同步吧~~
        去主DNS(我的物理机)上进行配置:
        cd /var/named/chroot/etc
        对于name.conf这个文件暂时还不需要配置
        vim  name.rfc1912zones
zone "example.com" IN {
        type master;
        file "example.com.zone";
        allow-update { none; };
        allow-transfer { 192.168.0.203; };
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "example.com.local";
        allow-update { none; };
        allow-transfer { 192.168.0.203; };
};
        在原来的每个域中加来一条参数而已!
        现在需要一台虚拟机作为我的辅助DNS,马上开一台虚拟机 IP:192.168.0.203(DNS设置为自身
        在虚拟机中安装好bind bind-chroot
        yum install bind bind-chroot -y
        /etc/init.d/named start
        cd /var/named/chroot/etc
        vim named.conf
        整个文件大致被我糟蹋成这个样子:
options {
//      listen-on port 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; };
//      recursion yes;
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
        recursion yes;
        include "/etc/named.rfc1912.zones";
        zone "." IN {
                type hint;
                file "named.ca";
        };
        zone "example.com" IN {
                type slave;
                masters { 192.168.0.100; };
                file "slaves/example.com.zone";      (从主DNS复制过来的数据保存在/var/named/chroot/var/named/slaves
        };
        zone "0.168.192.in-addr.arpa" IN {
                type slave;
                masters { 192.168.0.100; };
                file "slaves/example.com.local";
        };
};
include "/etc/named.root.key";
        在这个文件中,由于我们用到view来声明,所以所有的域都应该在view中包含,不然重启服务会出现以下错误:
        Error in named configuration:
        /etc/named.conf:37: when using 'view' statements, all zones must be in views
                                                           [FAILED]
        OK,重启我的辅助DNS。看下我们要的两个数据文件复制过来了吗?
文件同步:
        在主DNS中配置
        cd /var/named/chroot/etc
        vim named.rfc1912.zones
        修改我们的zone
zone "example.com" IN {
        type master;
        file "example.com.zone";
        allow-update { none; };
        allow-transfer { 192.168.0.203; };
        also-notify { 192.168.0.203; };
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "example.com.local";
        allow-update { none; };
        allow-transfer { 192.168.0.203; };
        also-notify { 192.168.0.203; };
};
        在原来的配置加上also-notify参数!
        然后就是我们两个数据库文件的修改:
        vim  /var/named/chroot/var/named/example.com.zone
$TTL 1D
@       IN SOA  silence.example.com.    root.example.com. (
                                        2014101204      ; serial(d. admas)
                                        2H              ; refresh
                                        20M             ; retry
                                        1W              ; expire
                                        1D)             ; minimum
        NS      silence.example.com.
silence A       192.168.0.100
        A       192.168.0.100
vm1     A       192.168.0.201
vm2     A       192.168.0.202
vm3     A       192.168.0.203
vm4     A       192.168.0.204
vm5     A       192.168.0.205
vm6     A       192.168.0.206
vm7     A       192.168.0.207
vm8     A       192.168.0.208
        依样画葫芦,example.com.local会修改了吗?
        在每次修改我们的数据库文件时我们一定要记住修改serial的值,然后reload服务,查看下辅助DNS的文件数据有没有同步吧~~~

阅读(4098) | 评论(0) | 转发(1) |
2

上一篇:笔记:awk(二)

下一篇:PXE轻松架设

给主人留下些什么吧!~~