wKiom1M1MtfCklVGAAF6oavJwd8419.jpg

拓扑说明:(自己整合的拓扑,旨在总结学习内容。生产环境中没有应用)

公司有域名、及邮件服务,并有A,B 两台DNS 需要公网授权,并提供内外网的同步正反向解析,为了更好的利用其中A,B分别为内网的主备,BA 为外网的主备,由于这个外网NDS 拥有edu,com两个域,所以A,B 并能实现区域转发功能

域名服务器地址(内网解析地址)192.168.1.254/24

邮件服务器地址(内网解析地址)192.168.1.253/24


域名服务器地址(外网解析地址): 10.0.0.100/24

邮件服务器地址(外网解析地址): 10.0.0.101/24


comns地址:10.0.0.4

eduns地址:113.1.1.1


A 内网接口192.168.1.1/24

B 内网接口192.168.1.2/24

A 外网接口10.0.0.1/24

B 外网接口 :   10.0.0.2/24


配置思路:

  1. 先完成内网主从的配置,并能实现指定IP 解析指定的主机地址,并测试

  2. 完成外网主机的配置,并能实现指IP 解析指定的主机地址,并测试

  3. 在外网DNS 创建com,edu 域并完成对about域进行授权,测试

  4. 在公司DNS 上面完成对edu 区域转发的配置,测试

  5. 配置完成,并测试


注意:对完成的过程要进行阶段性的测试,并在配置之前有一个合理的组织与规划,要不然在配置之中会搞得越发的复杂化


  1. 安装DNS工具,bind

rpm -ql bind

检查安装包产生的文件

wKioL1M1MwOBJ1kRAAF9X5RVmf8305.jpg

可以看到bind 安装完成后在本地安装一些文件,以便快速找到所需要的配置文件等

/etc/ 下以named 开头的即为配置文件.conf 为主配置文件,里面include 即可以包含一些子配置文件option 的配置段里面的指令为全局有效,当然一些指令也可以用在各个zone 或者view 视图中具体的指令集你也可以man ,如果man 无法找到路径的话,你可-M 去指向需要打开的手册路径


  1. 内网主从配置

    1. 主配置文件


/etc/named.rfc1912.zones
  options {
         listen-on port 53 { 10.0.0.1;192.168.1.1; };//named 服务监听本机的接口Ip
         directory      "/var/named"; //全局段指定的目录,在子区域中如果指定的文件不是以绝对路径则会默认加上这里指定的路径
         allow-query     { any; };//允许所以的主机递归
          recursion yes;
  };
//bind 运行过程中的产生的日志记录
 logging {
        channel default_debug {
                 file"data/named.run";
                 severity dynamic;
          };
  };
//rndc: Remote Name Domain Controller远程管理BIND的工具的配置
      key "rndc-key" {
             algorithm hmac-md5;
             secret"NbyoHbHWSW5EmnVTTGLFUQ==";
     };
  controls {
         inet 127.0.0.1 port 953
          allow { 127.0.0.1; } keys {"rndc-key"; };
   };
 # End of named.conf
 # Use with the following in named.conf,adjusting the allow list as needed:
  # End of named.conf
 include "/etc/named.rfc1912.zones"; //区域配置所在的文件
为了实现内外网不同地址解析的不同,需要用到view  视图,view 视图的配置与option 的配置很是相似,但是一定要注意,一旦启用了view 视图的话,所以的区域都要出现在对应的view 里面,否则会报错。
在/etc/named.rfc1912.zones";增加about.com 区域配置
       view"Internal"{
   match-clients { 192.168.1.0/24; };// 允许来自192.168.1.0/24 的网段内主机进入此视图
    allow-query { 192.168.1.0/24; };
...
  zone "about.com." IN {
         type master;//标示本主机为master
         file "about.zone";// about区域配置文件存放/var/named/about.zone
          allow-update { none; };
allow-transfer { 192.168.1.2; };//slaver的地址
 };//每一个指令都是以分号结尾,注释行加#
/var/named/about.zone
 $TTL 6000
   @               IN              SOA     ns1.about.com.  admmail.about.com. (
                   2014032601    ; serial 序列号,十进制数字,不能超过10位,通常使用日期,例如2014031001
                   2H                      ;refresh 刷新时间,即每隔多久到主服务器检查一次
                   1H                      ; expire重试时间,应该小于refresh time
                   2H                    ;  mainimum 否定答案的ttl
)
                   IN      NS     ns1.about.com.
       IN     NS      ns2.about.com.
                IN      MX 10  admmail.com.
ns1             IN      A      192.168.1.1
www             IN      A      192.168.1.254
admmail         IN     A       192.168.1.253
ns2             IN      A      192.168.1.2
注意:主从复制需要在主的配置区域里面去指定从的DNS 的FQDN ,即对NS 与A 记录
  zone "about.com." IN {
        type slave;
        file "slaves/about.zone";
        masters { 192.168.1.1; };
 };


  1. 从配置文件

/etc/name.
view "Internal"
    match-clients { 192.168.1.0/24; };
    allow-query { 192.168.1.0/24; };
{
    zone "about.com." IN {
        type slave;
       file "slaves/about-I.zone";//从服务器与要从主服务器那里接收区域配置文件并存在本直的路径和文件名
       masters { 192.168.1.1; };// 主服务的IP 地址不要写错
    };
};


注意:指定存的目录名必须存在,不存的话要手工创建,bind 运行的时候是named的用户身份运行,如果自己指定存放目录的话一定要注意目录权限,确保named 用户在本目录内部有可写的权限


  1. 测试

service named start

启动运行,并去/var/named/slaves 查看文件又没有被正确传送过来

然后dig 测试

dig命令:

#dig [-t type] [-x addr] [name] [@server]

+[no]trace

+[no]recurse

+[no]tcp

dig -t A www.about.com@192.168.1.1

dig -t A www.about.com@192.168.1.2

wKiom1M1NEGgfl6vAAJaq88_XnQ531.jpg



  1. 外网主从配置


跟上面内网的配置大致相同我这里把代码贴上,内网AB备,外网BA备,而且外网多了一个地址解析,地址解析工能内网用处不多的


  1. 外网主服务器配置

/etc/named.rfc1912.zones 增加外网的view 视图
vies "External" {
match-clients {10.0.0.0/24; };
    zone "0.0.10.in-addr.arpa" IN {
        type master;
        notify yes;
        file "E-arpa.zone";
        allow-transfer { 10.0.0.1; };
    };
    zone "about.com." IN {
        type master;
        notify yes;
        file "about-E.zone";
        allow-transfer { 10.0.0.1; };
    };
};
注意:allow-transfer 的允许传送地址为本机外网地址的某一个地址,也就是必须能够被match-clients匹配到的网段的地址,否则传送则会发生错误,zone 后面的区域名称主从一定要一致,否则也会导致传送失败
/var/named/about-E.zone
$ORIGIN.
$TTL6000       ; 1 hour 40 minutes
about.com               IN SOA  ns1.about.com. admmail.about.com. (
                                2014032701 ;serial
                                432000     ; refresh (5 days)
                                7200       ; retry (2 hours)
                                10800      ; expire (3 hours)
                                3600       ; minimum (1 hour)
                                ) 
                        NS      ns1.about.com.
                        NS      ns2.about.com.
                        MX      10 admmail.about.com.
$ORIGINabout.com.
admmail                 A       10.0.0.101
ns1                     A       10.0.0.2
ns2                     A       10.0.0.1
www                     A       10.0.0.100
/var/named/E-arpa.zone
$TTL3600
@               IN      SOA    ns1.about.com. admmail.about.com. (
                        2014032403
                        5H
                        3H
                        6H
                        12H )
                IN      NS ns1.about.com.
                IN      NS ns2.about.com.
                IN      MX 10 admmail.about.com.
101             IN      PTR    admmail.about.com.
100             IN      PTR    www.about.com.
1               IN      PTR    ns2.about.com.
2               IN      PTR    ns1.about.com.


  1. 外网从服务器配置


view "External" {
match-clients {10.0.0.0/24; };
    zone "about.com" IN {
        type slave;
        file"slaves-external/about-E.zone";
        masters { 10.0.0.2; };
    };
    zone "0.0.10.in-addr.arpa" IN {
        type slave;
        file"slaves-external/E-arpa.zone";
        masters { 10.0.0.2; };
    };
};


注意:创建slaves-external 目录,并指定属主属组


  1. 测试

service named start

启动运行,并去/var/named/slaves 查看文件又没有被正确传送过来

然后dig 测试

dig -t A www.about.com @10.0.0.1

dig -t A www.about.com @10.0.0.2

wKioL1M1NSvhEglAAAMs23bp4bA826.jpg


地址测试

dig -x 10.0.0.100 @192.168.1.1 //这个是不会响应的

dig -x 10.0.0.100 @10.0.0.1

dig -x 10.0.0.100 @10.0.0.2

wKiom1M1NZyh9DyGAANytBImyDQ942.jpg


  1. COM,EDU 域的创建授权

    1. 创建COM,EDU域并对about域进行授权


/etc/named.rfc1912.zones
zone"com." IN {
        type master;
        file "com.zone";
        allow-update { none; };
};
zone"edu." IN {
        type master;
        file "edu.zone";
        allow-update { none; };
};
/var/named/edu.zone
$TTL3600
@               IN      SOA    ns.edu.         mail.edu. (
                2014032801
                3H
                1H
                2H
                5D )
                IN      NS     ns.edu.
                IN      MX 10  mail.edu.
ns.edu.         IN     A       113.1.1.1
mail.edu.       IN     A       113.1.1.2
/var/named/com.zone
$TTL3600
@               IN      SOA    ns.com.         mail.com. (
                2014032801
                3H
                1H
                2H
                5D )
                IN      NS     ns.com.
about.com.     IN      NS      ns1.about.com.
               IN      NS      ns2.about.com.
                IN      MX 10  mail.com.
ns1.about.com. IN      A       10.0.0.2
ns2.about.com. IN      A       10.0.0.1
ns.com.         IN     A       10.0.0.4
mail.com.       IN     A       10.0.0.4


注意:其实授权本质上来说就是把需要授权的区域在上级区域添加对应的NS,A 记录而已,这里我把外网DNS也放在10 的网段里面是便与实验,并不一定是必须在一个网段,不然的话就路由传送就可以


  1. 测试

service named start

启动运行,并去/var/named/slaves 查看文件又没有被正确传送过来

然后dig 测试

dig -t A ns.com @10.0.0.3

dig -t A www.about.com @10.0.0.3

wKioL1M1Ndbjl6HVAAJA3KB0wqc749.jpg


  1. 对公司内网去往edu 的进行区域转发,不必在去根查找

A,B/etc/named.rfc1912.zones中添加


   zone "edu." IN {

       type forward;

       forwarders { 10.0.0.3; };

   };  

注意:转发其实是另一种意义上的递归查询,所以在外网DNS 里面必须允许A,B对其递归查询,在对公司A,B 来说,并不同有必要对来自己公网上面的地址进行递归查询,这样会浪费系统的资源,所以可以增加match-destinations { IP/NET; }match-recursive-only boolean; 只对本about 域内主机进行解析


转发测试

dig -t A ns.edu @10.0.0.1    (没有结果,因为在view里面限制只对来自内网的主机给矛解析)

dig -t A ns.edu @192.168.1.1

dig -t A ns.edu @192.168.1.2

wKiom1M1NiCSKUP2AAJRCQKX5Xg735.jpg



  1. 测试

    1. 对内网解析测试

dig -t A www.about.com@192.168.1.1

dig -t A www.about.com@192.168.1.2

  1. 在外网解析测试

dig -t A www.about.com @10.0.0.1

dig -t A www.about.com @10.0.0.3

  1. 转发测试

dig -t A ns.edu.com @192.168.1.1

dig -t A ns.edu.com @192.168.1.1