在上篇博客中笔者简单的搭建了一个正解和反解的DNS服务器,这篇博客主要介绍各种DNS服务器的搭建,包括子域委派,主从同步,转发,以及自己模拟搭建的根服务器

子域委派

子域委派是为了简化 DNS 的管理任务,即委派一组权威名称服务器来管理每个区域。采用这样的分布式结构,当域名称空间不断扩展时,各个域的管理员可以有效地管理各自的子域。简单来说就是了方便管理 提高DNS的解析性能,实现通信负载平衡。

1.子域和父域在一个文件里。

2.子域和父域在同一个机器上。不用委派,直接创建

3.子域和父域不在同一个机器上,要子域委派

#在父域的操作
[root@centos6 named]# vim /etc/named.conf #文件较长我们只写更改的地方
options {
        listen-on port 53 { any; };       #监听那个ip再用53号端口
//      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 no;
        dnssec-validation no;
[root@centos6 named]# vim /etc/named.rfc1912.zones
zone "angge.com" IN {  #添加这一段
        type master;
        file "angge.com.zone";}[root@centos6 named]# cd /var/named/
[root@centos6 named]# ls
angge.com.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves[root@centos6 named]# cp -p named.localhost angge.com.zone
[root@centos6 named]# vim angge.com.zone
$TTL 1D
@         IN   SOA    angge.com.   rname.invalid. (
                                        0         ; serial
                                        1D        ; refresh
                                        1H        ; retry
                                        1W        ; expire
                                        3H )      ; minimum
angge.com.        NS   angge.com.
angge.com.                A         192.168.75.6
www.angge.com.          A         7.7.7.7
bj             NS   ns1.bj.angge.com.
ns1.bj      A    192.168.75.7
关闭防火墙,清空SElinux,重启服务
[root@centos6 named]# iptables -F
[root@centos6 named]# setenforce 0
[root@centos6 named]# service named restart

停止 named: [确定]
启动 named: [确定]

#在子域的操作
在/etc/named.conf里和父域一样,只需关闭转发 recursion no
[root@localhost named]# vim /etc/named.rfc1912.zones  #添加这样一个zone
 zone "bj.angge.com" IN {
 type master;
 file "bj.angge.com.zone";
 };[root@localhost named]# cp -p named.localhost bj.angge.com.zone
[root@localhost named]# vim /var/named/bj.angge.com.zone
 $TTL 1D
 @     IN   SOA    bj.angge.com. rname.invalid. (
     0   ; serial
     1D  ; refresh
     1H  ; retry
     1W  ; expire
     3H )    ; minimum
 bj.angge.com.     NS    ns1.bj.angge.com.
 ns1          A    192.168.75.7
 www          A     2.2.2.2
}
关闭防火墙,清空SElinux,重启服务
#在客户端
[root@localhost named]# dig www.bj.angge.com @192.168.75.6
[root@localhost named]# dig www.angge.com @192.168.75.6


 

DNS主从

配置一个域的从服务器一般是为了进行备份以及负载均衡使用,例如在生产环境中,我们给一个域配置的主DNS服务器崩溃了或者被恶意攻击了,那么这个时候如果没有配置从DNS服务器的话,我们的DNS服务器就不能提供DNS服务了,也就无法解析服务器上配置的域名了,或者说主服务器的访问量特别大,此时我们配置从服务器来达到负载均衡的效果,因此我们通常在配置了一个主DNS服务器以后,还需要为其配置多个从DNS服务器。

#主服务器配置
[root@centos6 named]# vim /etc/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 { 192.168.75.10; };      #这里仅允许192.168.75.10成为我的从服务器,如果仍用any则任何人都可成为我的从服务器,并不安全
recursion no;          dnssec-enable no;
dnssec-validation no;[root@centos6 ~]# vim /etc/named.rfc1912.zones
};
zone "angge.com" IN {
        type master;
        file "angge.com.zone";
};[root@centos6 ~]# vim /var/named/angge.com.zone
$TTL 1D
@         IN   SOA    ns1.angge.com.   asdfsadf. (
                                                20180918        ; serial
                                                1D      ; refresh
                                                1H      ; retry
                                                1W      ; expire
                                                3H )    ; minimum
                       NS         angge.com.
angge.com.  A     192.168.75.9
etc       A    1.1.1.1
www       A     2.2.2.2

关闭防火墙,清空SElinux,重启服务

#从DNS配置
[root@centos6 ~]# vim /etc/named.conf
 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 no;        dnssec-enable no;
        dnssec-validation no;[root@centos6 ~]# vim /etc/named.rfc1912.zones
zone "angge.com" IN {
#表明他是从服务器
#主服务器是谁
#从主服务器获得文件存放在哪
};

关闭防火墙,清空SElinux,重启服务,我们会在/var/named/slaves/获得主服务器的zone文件ANGGE.COM.ZONE

[root@centos6 named]# cat /var/named/slaves/ANGGE.COM.ZONE 
$ORIGIN .
$TTL 86400	; 1 day
angge.com		IN SOA	ns1.angge.com. asdfsadf. (
				20180918   ; serial
				86400      ; refresh (1 day)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				10800      ; minimum (3 hours)
				)
			NS	ns1.angge.com.
$ORIGIN angge.com.
*			A	8.8.8.8
etc			A	1.1.1.1
ns1			A	192.168.75.9
www			A	2.2.2.2

客户端测试

 

 

DNS模拟根的实现

在上篇博客中笔者说过DNS是一种分布式、分层次的主机名管理架构,是倒状的树状形状。如果我们要模拟根的实现并成功解析出www.angge.com这这个域名则我们需要.服务器.com服务器.angge.com服务器,同时还需要一台转发dns服务器,合测试端,至少5台机器,这里我们在同时实现主从则需要六台机器

centos dns子域委派_vim

1.除客户端以外,所有机器安装bind,并都清空防火墙和关闭selinux。
    所有安装bind的主机配置name.conf,修改2个any,2个no,除缓存服务器以外,都把递归设置为no。
2.除.以外,所有机器修改named.ca,内容如下
[root@centos6 ~]# vim /var/named/named.ca  #即删除别的只保留这两行并修改
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 192.168.75.6

3.配置.
a.   name.conf中删除name.ca的项目
b.   rfc1912文件

      zone "." IN {
      type master;
      file "root.zone";
     };
c. vim /var/named/root.zone
$TTL 1D
@ IN SOA ns. admin. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
      NS    ns.
ns.    A     192.168.75.6
com.    NS    ns.com.
ns.com.  A     192.168.75.8
d.关闭防火墙,清空SElinux,重启服务,

4.配置com
a.  vim /etc/named.rfc1912文件
  zone "com" IN {
  type master;
  file "com.zone";
  };
b.   vim /var/named/com.zone
$TTL 1D
@ IN SOA ns.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
            NS   ns.com.
ns            A    192.168.75.8
angge.com.     NS   ns1.angge.com.
angge.com.     NS   ns2.angge.com.
ns1.angge.com.   A    192.168.75.9
ns2.angge.com.   A    192.168.75.10
c.关闭防火墙,清空SElinux,重启服务

5.配置主angge.com
a. vim/etc/named.rfc1912文件
zone "angge.com" IN {
type master;
file "angge.com.zone";
};

b. vim /var/named/angge.com.zone
$TTL 1D
@ IN SOA ns1.angge.com. rname.invalid. (
2018091301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
    NS   ns1.angge.com.
    NS   ns2.angge.com.
ns1   A   192.168.75.9
ns2   A   192.168.75.10
www   A   1.1.1.1
ftp   A   2.2.2.2
*    A   10.10.10.10
c.关闭防火墙,清空SElinux,重启服务

6.配置从angge.com
a. rfc1912文件
zone "angge.com" IN {
type slave;
masters { 192.168.75.7; };
file "slaves/ANGGE.COM.ZONE";
};
b. 关闭防火墙,清空SElinux,重启服务

7.client修改/etc/resolv.conf
nameserver 192.168.75.6 #指向缓存服务器

a.dig www.angge.com 

b.nslookup

>lll.angge.com

测试,可以反复的给主、从增加防火墙策略来测试查询www.magedu.com可以自动在主从间切换
iptables -A INPUT -p udp --dport 53 -j REJECT
iptables -F 删除

注意:测试时要清空caching-server上的缓存 rndc flush

 

hasidhkh