主从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
1)在/etc/named.conf文件中添加区域
1 |
[root@bogon ~]# vim /etc/named.conf |
1 2 3 4 5 6 7 |
zone "ywnds.com" IN { type master; file "ywnds"; notify yes; also-notify { 192.168.60.30; }; allow-transfer { 192.168.60.30; }; }; |
2)在/var/named/下添加正向区域文件
1 |
[root@bogon ~]# vim /var/named/ywnds |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$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 |
1 |
[root@bogon ~]# chown root:named /var/named/ywnds |
3)重启主DNS
1 2 3 4 5 6 |
[root@bogon ~]# service named restart [root@bogon ~]# 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
1)在/etc/named.conf文件中添加区域
1 |
[root@bogon ~]# vim /etc/named.conf |
1 2 3 4 5 6 |
zone "ywnds.com" IN { type slave; file "slaves/ywnds"; masters { 192.168.60.10; }; allow-transfer { none; }; }; |
2)验证传送结果
1 2 3 4 |
[root@bogon ~]# service named restart [root@bogon ~]# tail -f /var/log/message [root@bogon ~]# 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
1)在/etc/named.conf文件中添加以下区域
1 |
[root@bogon ~]# vim /etc/named.conf |
1 2 3 4 5 |
zone "ywnds.com" IN { type master; file "ywnds"; allow-transfer { none; }; }; |
2)在/var/named/下添加正向区域文件
1 |
[root@bogon ~]# vim /var/named/ywnds |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$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 |
1 |
[root@bogon ~]# chown root:named /var/named/ywnds |
3)重启主DNS
1 |
[root@bogon ~]# service named restart |
子域DNS服务器: 192.168.60.30
1)在/etc/named.conf文件中添加以下区域
1 |
[root@bogon ~]# vim /etc/named.conf |
1 2 3 4 5 |
zone "market.ywnds.com" IN { type master; file "market.ywnds"; allow-transfer { none; }; }; |
2)在/var/named/下添加正向区域文件
1 |
[root@bogon ~]# vim /var/named/market.ywnds |
1 2 3 4 5 6 7 8 9 10 |
$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 |
3)重启主DNS
1 |
[root@bogon ~]# service named restart |
验证
父域DNS可以解析“ywnds.com”域和“market.ywnds.com”域
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@bogon ~]# dig -t A www.ywnds.com @192.168.60.10 [root@bogon ~]# 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”域
1 |
[root@bogon ~]# dig -t A www.market.ywnds.com @192.168.60.30 |
转发域
通过子域授权可以做到父域可以解析本地域和子域,而子域只能解析本地域而解析不了父域,那么现在通过转发功能就可以做到让子域也可以解析父域。
配置转发域的两种方式
1)转发非本机负责解析的所有区域
1 2 3 4 5 |
option{ forwarders { 8.8.8.8; }; forward first; forward only; }; |
2)转发某特定区域
1 2 3 4 |
zone "ywnds.com" IN { type forward; forwarders { 192.168.60.10; }; }; |
子域DNS服务器: 192.168.60.30
1)在/etc/named.conf文件中追加父域,红色部分
1 |
[root@bogon ]# vi /etc/named.conf |
1 2 3 4 5 6 7 8 9 10 11 12 |
zone "market.ywnds.com" IN { type master; file "market.ywnds"; allow-transfer { none; }; }; <span style="color: #ff0000;">zone "ywnds.com" IN { type forward; forwarders { 192.168.60.10; }; forward first; allow-transfer { none; }; };</span> |
表示子域只要解析“ywnds.com”域都转发到父域进行解析。同时如果在全局配置中也配置转发域。如下:
1 2 3 4 5 |
option{ forwarders { 8.8.8.8; }; forward first; forward only; }; |
这样就可以做到除父域外其他只要有解析不了的域统统转发到指定的DNS服务器中,前提是被指定的DNS服务器必须能够做递归。这样当在optionP{}和zone{}中都使用了转发功能时就可以做到访问不同的域名找不同的DNS服务器。
手写DNS配置文件
最后可以尝试手写named.conf配置文件,但是文件权限要改成640并且属主是root;属组是namd,当你手写配置文件时大概只需要以下内容即可。其余大部分都是默认,比如监听地址默认是监听所有和允许查询默认允许所有。如下:
1 |
[root@bogon ]# vi /etc/named.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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"; |