DNS主从复制及子域

Posted Linux就该这么学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS主从复制及子域相关的知识,希望对你有一定的参考价值。

主从DNS

主辅DNS服务器数据同步的过程,首先master DNS服务器每 次修改完成并重启服务后,将传送notify给所有的Slave DNS服务器。 Slave DNS服务器将查询Master服务器的SOA记录,Master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,Slave DNS将发送zone transfer请求要求(AXFR/IXFR)。Master响应Zone transfer请求并传送结果,直到整个slave更新完成。如图:

技术分享图片

在实际应用中主从DNS服务器一般都是用来做DNS高可用和负载的,所以你的主从DNS服务器首先就是必须要从上级获得授权,也就是顶级域的服务器中必须有你两台DNS的记录,这样客户端才可以把主从DNS的地址都设置为本地DNS服务器。其次在DNS服务器本身的区域数据文件中要有主从DNS服务器的NS(只有这样主DNS服务器才会找的到从DNS服务器),只有这两者都搞定的情况下就算有一台DNS服务器挂掉了,客户端同样可以访问另一台DNS服务器进行DNS查询。

区域传送类型

完全区域传送:传送区域的所有书(axfr)

增量区域传送:传送区域中改变的数据部分(ixfr)

配置主从DNS

主从的基础配置按照高速缓存DNS服务器的基础配置即可,注意主从DNS服务器一定要注释include “/etc/named.root.key”;和关闭防火墙

主DNS服务器: 192.168.60.10

在/etc/named.conf文件中添加区域
[[email protected] ~]# vim /etc/named.conf
zone "ywnds.com" IN {
  type master;
  file "ywnds";
  notify yes;
  also-notify { 192.168.60.30; };
  allow-transfer { 192.168.60.30; };
};
在/var/named/下添加正向区域文件
[[email protected] ~]# vim /var/named/ywnds
$TTL 1D
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        336    ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
@       IN    NS      dns
@       IN    NS      dns2
dns     IN    A       192.168.60.10
dns     IN    A       192.168.60.30
@       IN    MX 10   mail
mail    IN    A       192.168.60.100
www     IN    A       192.168.60.200
[[email protected] ~]# chown root:named /var/named/ywnds
重启主DNS
[[email protected] ~]# service named restart
[[email protected] ~]# tail -f /var/log/message
Sep 29 17:51:30 localhost named[3224]: running
Sep 29 17:51:30 localhost named[3224]: zone ywnds.com/IN: sending notifies (serial 336)
Sep 29 17:51:30 localhost named[3224]: client 192.168.60.30#37129: transfer of ‘ywnds.com/IN‘: AXFR-style IXFR started
Sep 29 17:51:30 localhost named[3224]: client 192.168.60.30#37129: transfer of ‘ywnds.com/IN‘: AXFR-style IXFR ended


从DNS服务器: 192.168.60.30
在/etc/named.conf文件中添加区域
[[email protected] ~]# vim /etc/named.conf
zone "ywnds.com" IN {
  type slave;
  file "slaves/ywnds";
  masters { 192.168.60.10; };
  allow-transfer { none; };
};
验证传送结果
[[email protected] ~]# service named restart
[[email protected] ~]# tail -f /var/log/message
[[email protected] ~]# ll /var/named/slaves/
-rw-r--r--. 1 named named 422 Sep 29 17:51 ywnds

分别查看两台主机上的/var/log/messages日志文件看看传送过程第一次应该是AXFR完全传送,当第二次传送时就会是ixfr增量传送。

特别注意:

1、  进行增量传送时;当主服务器更改一条记录时就需要把serial的值加1;从服务器会比较serial值,如果比自己的大就进行更改自己区域的内容。

2、  主从服务器的时间同步
DNS子域授权

子域授权其实就是实现DNS分片管理,通过父域DNS可以查询解析子域,但子域无法查询解析父域,子域可以实现自我管理。如ywnds.com是父域,而market.ywnds.com是子域。

子域授权的基础配置按照高速缓存DNS服务器的基础配置即可,注意子负域DNS服务器一定要注释include “/etc/named.root.key”;和关闭防火墙

父域DNS服务器: 192.168.60.10

在/etc/named.conf文件中添加以下区域
[[email protected] ~]# vim /etc/named.conf
zone "ywnds.com" IN {
  type master;
  file "ywnds";
  allow-transfer { none; };
};
在/var/named/下添加正向区域文件
[[email protected] ~]# vim /var/named/ywnds
$TTL 1D
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        336    ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
@       IN    NS      dns
dns     IN    A       192.168.60.10
www     IN    A       192.168.60.200
 
market      IN  NS      dns.market.ywnds.com.
dns.market  IN  A       192.168.60.30
[[email protected] ~]# chown root:named /var/named/ywnds
重启主DNS
[[email protected] ~]# service named restart


子域DNS服务器: 192.168.60.30
在/etc/named.conf文件中添加以下区域
[[email protected] ~]# vim /etc/named.conf
zone "market.ywnds.com" IN {
  type master;
  file "market.ywnds";
  allow-transfer { none; };
};
在/var/named/下添加正向区域文件
[[email protected] ~]# vim /var/named/market.ywnds
$TTL 1D
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        0      ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
@       IN    NS      dns
dns     IN    A       192.168.60.30
www     IN    A       192.168.60.251
重启主DNS
[[email protected] ~]# service named restart
验证
父域DNS可以解析“ywnds.com”域和“market.ywnds.com”域
[[email protected] ~]# dig -t A www.ywnds.com @192.168.60.10
[[email protected] ~]# dig -t A www.market.ywnds.com @192.168.60.10
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 3598
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.market.ywnds.com.                     IN      A
;; ANSWER SECTION:
www.market.ywnds.com.        85956       IN     A       192.168.60.251
;; AUTHORITY SECTION:
market.ywnds.com.             85956       IN     NS        dns.market.ywnds.com.
;; ADDITIONAL SECTION:
dns.market.ywnds.com.          85956       IN     A       192.168.60.30
子域DNS只能解析“market.ywnds.com”域
[[email protected] ~]# dig -t A www.market.ywnds.com @192.168.60.30
转发域

通过子域授权可以做到父域可以解析本地域和子域,而子域只能解析本地域而解析不了父域,那么现在通过转发功能就可以做到让子域也可以解析父域。

配置转发域的两种方式

1)转发非本机负责解析的所有区域
option{
  forwarders { 8.8.8.8; };
  forward first;
  forward only;
};

2)转发某特定区域
zone "ywnds.com" IN {
  type forward;
  forwarders { 192.168.60.10; };
};

子域DNS服务器: 192.168.60.30

1)在/etc/named.conf文件中追加父域,红色部分
[[email protected] ]# vi /etc/named.conf
zone "market.ywnds.com" IN {
  type master;
  file "market.ywnds";
  allow-transfer { none; };
};
 
zone "ywnds.com" IN {
  type forward;
  forwarders { 192.168.60.10; };
  forward first;
  allow-transfer { none; };
};

表示子域只要解析“ywnds.com”域都转发到父域进行解析。同时如果在全局配置中也配置转发域。如下:
option{
  forwarders { 8.8.8.8; };
  forward first;
  forward only;
};

这样就可以做到除父域外其他只要有解析不了的域统统转发到指定的DNS服务器中,前提是被指定的DNS服务器必须能够做递归。这样当在optionP{}和zone{}中都使用了转发功能时就可以做到访问不同的域名找不同的DNS服务器。

手写DNS配置文件

最后可以尝试手写named.conf配置文件,但是文件权限要改成640并且属主是root;属组是namd,当你手写配置文件时大概只需要以下内容即可。其余大部分都是默认,比如监听地址默认是监听所有和允许查询默认允许所有。如下:

[[email protected] ]# vi /etc/named.conf
options {
  directory       "/var/named";
  recursion yes;
};
 
zone "." IN {
  type hint;
  file "named.ca";
};
 
zone "ywnds.com" IN {
  type master;
  file "ywnds";
  allow-transfer { none; };
};
include "/etc/named.rfc1912.zones";




以上是关于DNS主从复制及子域的主要内容,如果未能解决你的问题,请参考以下文章

BIND主从复制及子域授权

BIND主从复制及子域授权

Linux 基础知识DNS服务器主从复制,子域授权

14DNS正反向解析主从复制子域授权区域转发 学习笔记

DNS区域传送子域授权

搭建DNS主从服务器实现反向解析,子域,转发,智能DNS及排错和互联网DNS架构实验