高速缓存DNS的搭建

DNS 简介


1.权威名称服务器

存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。


权威名称服务器的类型包括:

Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据的副本。有时称作 “次要 ”名称服务器

2.非权威 / 递归名称服务器

客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括仅缓存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具有权威性

 

3.DNS 查找

1.户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器
2.如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端否则 , 如果名称服务器在其缓存中有请求的信息 ,则会将非权威答案发送至客户端
3.如果缓存只能该没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照 DNS 层次结构向下搜素 , 直至对于信息具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中名 ch 称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找
 

4.BIND 的主配置文件是 /etc/named.conf

/var/named 目录包含名称服务器所使用的其他数据文件
/etc/named.conf 的语法
1.// 或 # 至行末尾是注释 ;/* 与 */ 之间的文本也是注释 ( 可以跨越多行 )
2.指令以分号结束 (;)
3.许多指令认为地址匹配列表放在大括号中、以 CIDR 表示法表示的IP 地址或子网列表中 , 或者命名的 ACL 中 ( 例如 any; [ 所有主机 ] 和 none; [ 无主机 ] )
4.文件以 options 块开始 , 其中包含控制 named 如何运作的指令
5.zone 块控制 named 如何查对于其具有权威性的根名称服务器和区域

 

 

高速缓存DNS的搭建

服务器可以高速缓存从其他 DNS 服务器收到的 DNS 记录。 也可以在 DNS 客户服务中使用高速缓存,将其作为 DNS 客户端保存在最近的查询过程中得到的信息高速缓存的方法。 总的来说就是提高解析速度。

BIND 是最广泛使用的开源名称服务器在 RHEL 中 , 通过 bind 软件包提供防火墙开启端口 53/TCP 和 53/UDPBIND 的主配置文件是 /etc/named.confvar/named 目录包含名称服务器所使用的其他数据文件。

这个部分我们分多个实验去阐述高速缓存DNS,所有实验以desktop这个虚拟机搭建DNS服务器,用真机和server 这个虚拟机作测试。
 

搭建实验环境

第一步:开启真机路由功能,使虚拟机可以通过真机ping通114.114.114.114(参考之前)

扫描二维码关注公众号,回复: 4189481 查看本文章


第二步:将真机中/etc/resolv.conf文件中的域名解析服务器全部屏蔽,将虚拟机172.25.254.122作为域名服务器添加进去

此时测试:dig www.baidu.com   会得不到任何回应,显示没有可以链接的服务器
 

第三步:配置好yum源

第四步:关闭虚拟机火墙

 

实验1.:创建一个DNS服务器,缓存互联网下解析出来的域名信息

第一步:在虚拟机desktop上安装bind.x86_64软件,开启named服务

yum install bind.x86_64
systemctl start named
systemctl enable named

第二步: 编辑/etc/named.conf文件,设置虚拟机为高速缓存DNS服务器

options {
        listen-on port 53 { any};     
        ##listen-on 控制 named 侦听的 IPv4 地址                                                  
        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; };
        ##allow-query 控制哪些客户端可以向 DNS 服务器询问信息                   

        forwardders {114.114.114.114;};                                                 
        ##forwarders 包含 DNS 查询将转发至的名称服务器的列表( 而不是直接联系外部名称服务器 ; 在设有防火墙的情中很有用 )
        dnssec-validation no;


 

测试:dig www.westos.com


      



 
实验2:DNS服务的正向域名解析(权威配置)

作用:由域名解析出ip地址

第一步:编辑/etc/named.rfc1912.zones文件

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { none; };
};


 
 
第二步:编辑/var/named/westos.com.zone文件

这个时候我们会发现没有这个文件

cp -p named.localhost westos.com.zone

$TTL 1D
@       IN SOA   dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
dns     A       172.25.254.122
www     A       172.25.254.100
music   A       172.25.254.78
heloo   A       172.25.254.34


 
注意:

TTL 1D        ##数据可以被客户端缓存一天
@             ##所维护的域的域名,指定zone后的“”的内容      

在这个文件中如果后头没有.就会自动补全@代表的


 
测试:重启服务,dig www.westos.com

 
 
 
 
实验3:邮件解析记录


第一步:编辑/var/named/westos.com.zone文件

$TTL 1D
@       IN SOA  dns.westos.com. student.westos.com. (
                                        0       ; serial      ##刷新时间
                                        1D      ; refresh     ##过段时间继续查看文的问题
                                        1H      ; retry       
                                        1W      ; expire      ##过期时间
                                        3H )    ; minimum     ##在最小数据访问时间
             NS      dns.westos.com.
dns          A       172.25.254.122
www          CNAME   music.a
music.a       A       172.25.254.8
music.a       A       172.25.254.9
hello         A       172.25.254.8
westos.com.   MX 10   172.25.254.222.


 
 
测试:

dig -t mx  域名  ##检测要维护的域


 
 

 
 
PTR反向解析记录

作用:由ip地址解析出域名
第一步:编辑vim /etc/named.rfc1912.zones文件

zone "254.25.172.in-addr.arpa" IN {
        type master;
        file "172.25.254.ptr";
        allow-update { none; };
};


第二步:cp -p named.loopback  172.25.254.ptr,编辑vim 172.25.254.ptr 文件

$TTL 1D
@       IN SOA   dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
dns     A       172.25.254.122
111     PTR     hello.westos.com.
222     PTR     balala.westos.com.


~                                     
 
测试:

[root@dns1 named]# dig -x 172.25.254.111
 
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -x 172.25.254.111
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24812
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;111.254.25.172.in-addr.arpa.    IN    PTR
 
;; ANSWER SECTION:
111.254.25.172.in-addr.arpa. 86400 IN    PTR    hello.westos.com.
 
;; AUTHORITY SECTION:
254.25.172.in-addr.arpa. 86400    IN    NS    dns.westos.com.
 
;; ADDITIONAL SECTION:
dns.westos.com.        86400    IN    A    172.25.254.122
 
;; Query time: 0 msec
;; SERVER: 172.25.254.122#53(172.25.254.122)
;; WHEN: Mon Nov 19 03:00:05 EST 2018
;; MSG SIZE  rcvd: 120


 
 
 
DNS双向解析

如何让一台DNS服务器解析不通的IP网段的ip地址的域名???
1.首先,在虚拟机desktop下更改网络,给eth0添加另一个ip,作为內网ip 1.1.1.122


 

在server上配置网络1.1.1.222
 

2.将真机的/etc/resolv.conf 配置DNS服务器为172.25.254网段的可以访问westos.com.zone中的域名解析,1.1.1网段的可以访问westos.com.inter的域名解析
  将desktop的DNS服务器设置为172.25.254.122;将server的配置为1.1.1.222,DNS服务器设置为1.1.1.122
 
第一步:编辑/etc/named.conf文件,使不同的网段指向不同的/etc/named.rfc1912.zones/inter的指向

/*
zone "." IN {
        type hint;
        file "named.ca";
};
 
include "/etc/named.rfc1912.zones";
*/
 
view localnet {
        match-clients { 1.1.1.0/24; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
include "/etc/named.rfc1912.inter";
};
 
view internet {
        match-clients { 172.25.254.0/24; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
include "/etc/named.rfc1912.zones";
};

注意:要注释掉下图中的内容

第二步:在/etc/named.rfc1912.zones文件中有westos.com这个域的解析域名的文件/var/named/westos.com.zone  

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { none; };
};

在/etc/named.rfc1912.inter文件中有westos.com这个域的解析域名的文件/var/named/westos.com.inter 

zone "westos.com" IN {
        type master;
        file "westos.com.inter";
        allow-update { none; };
};

第三步:编辑westos.com.zone和westos.com.inter文件,设置不同的域名解析

$TTL 1D
@       IN SOA  dns.westos.com. student.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             NS      dns.westos.com.
dns          A       172.25.254.122
www          CNAME   music.a
music.a       A       172.25.254.8
music.a       A       172.25.254.9
hello         A       172.25.254.8
westos.com.    MX 10   172.25.254.222.
~                                                                             

$TTL 1D
@       IN SOA  dns.westos.com. student.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             NS      dns.westos.com.
dns          A       1.1.1.122
www          CNAME   music.a
music.a       A       1.1.1.8
music.a       A       1.1.1.9
hello         A       1.1.1.8
westos.com.    MX 10   1.1.1.222.


 
4.分别在真机和server上进行测试dig www.westos.com
 在真机测试:


 
 用server测试:


 

解析出来不同的结果,哈哈哈,这就成功啦!!!!

 

 

DNS集群(辅助DNS)

现实中,一台DNS域名服务器在很大可能下是不能抵抗大流量访问的压力的,这个时候,我们就希望构建一个DNS集群来分担这些访问量,那么我们如何能够做到让主DNS服务器中的解析文件发生改变时,集群中的服务器都能够同步呢????


第一步:恢复DNS主服务器的/etc/named.conf文件,然后重新配置DNS服务器
                 在/etc/named.rfc1912.zones文件中修改

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
         allow-update { none; };
         allow-transfer { 172.25.254.222; };
         also-notify { 172.25.254.222; };
 };

 
配置westos.com.zone文件

$TTL 1D
@       IN SOA  dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
         NS     dns.westos.com.
dns      A      172.25.254.122
www      CNAME  music.a
music.a  A      172.25.254.8
music.a  A      172.25.254.9


 

测试:dig www.westos.com  

第二步:配置辅助DNS服务器
在/etc/named.conf文件中配置DNS服务器的基本配置

编辑/etc/named.rfc1912.zones  文件中设置主DNS为172.25.254.122

westos.com" IN {
        type slave;
         masters { 172.25.254.122; };
         file "slaves/westos.com.zone";
         allow-update { none; };
 };


 
测试:在主DNS服务器端改变域名解析,改变serises值,
用serial的值判断文件是否更改,辅助主DNS和辅助DNS的同步
 没有改变serial的值之前不会发生同步


 
 
 

更改serial的值后测试:

 

DNS的更新

第一种:允许特定的ip可以更新


第一步:设置DNS服务端,允许客户端主机修改westos.com.zone
修改/etc/named.rfc1912.zones 

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { 172.25.254.222; };
        allow-transfer { 172.25.254.222; };
        also-notify { 172.25.254.222; };
};


 
第二步,更改/var/named权限,否则会出现serverfull的错误
 注意:一定要更改权限,否则会出现错误呦!!!!

[root@dns named]# ll -ld /var/named
drwxr-x--- 5 root named 142 Nov 20 02:12 /var/named
[root@dns named]# chmod 770 /var/named
[root@dns named]# ll -ld /var/named
drwxrwx--- 5 root named 142 Nov 20 02:12 /var/named
 


 
测试:在客户端进行测试,nsupdate命令
 

注意:

1.在sever上dig 会发现同步成功

2.如果selinux=enforcing ,则需要设置getsebool -a | grep named
setsebool -P named_writed_write_master_zone on
 

 

第二种:DNS密钥方式更新


第一步:生成密钥

[root@dns mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westoskey
Kwestoskey.+157+09379

注意:如果在生成密钥的过程中,起不来,在desktop 的shell中桥键盘补全 
生成密钥:会发现公钥和私钥一样

[root@dns mnt]# ls
Kwestoskey.+157+09379.key      westos.com.zone
Kwestoskey.+157+09379.private
[root@dns mnt]# cat Kwestoskey.+157+09379.key  
westoskey. IN KEY 512 3 157 3JEgm/Zm5O6OAkNaFxJeFA==
[root@dns mnt]# cat Kwestoskey.+157+09379.private  
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: 3JEgm/Zm5O6OAkNaFxJeFA==
Bits: AAA=
Created: 20181120074115
Publish: 20181120074115
Activate: 20181120074115


第二步:编辑加密文件

cp -p /etc/rndc.key  /etc/westos.key

更改/etc/westos.key文件

key "westoskey" {
        algorithm hmac-md5;
        secret "3JEgm/Zm5O6OAkNaFxJeFA==";
};

 
 第三步:编辑named配置文件
编辑/etc/named.conf文件 

include "/etc/westos.key";

 
编辑/etc/named.rfc1912.zones  文件

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { key westoskey; };
        allow-transfer { 172.25.254.222; };
        also-notify { 172.25.254.222; };
};


 
第四步:给客户端分发密钥

[root@dns mnt]# scp Kwestoskey.+157+09379.* [email protected]:/mnt/
The authenticity of host '172.25.254.222 (172.25.254.222)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.254.222' (ECDSA) to the list of known hosts.
[email protected]'s password:  
Kwestoskey.+157+09379.key      100%   53     0.1KB/s   00:00     
Kwestoskey.+157+09379.private  100%  165     0.2KB/s   00:00     


 
测试:客户端可以更新westos.com.zone的文件内容


 
 


ddns动态域名解析


ddns === 动态域名解析 =====花生壳
1.配置dhcp服务(详细的步骤请参考之前的博客文章呦)

 7 option domain-name "westos.com";
 8 option domain-name-servers 172.25.254.122;
 
 
 30 subnet 172.25.254.0 netmask 255.255.255.0 {
 31   range 172.25.254.180 172.25.254.200;
 32   option routers 172.25.254.100;
 33 }

设置server客户端的网络为dhcp,测试dhcpd服务是否配置成功
 
 
 

2.配置dns的主配置文件,配置dns的的key更新

配置dhcp.conf文件
14 ddns-update-style interim;         ##dns的更新方式
 
##文件最后添加可更新dns的key
 35 key westoskey {
 36         algorithm hmac-md5;
 37         secret "3JEgm/Zm5O6OAkNaFxJeFA==";
 38 };
 
##文件最后添加要更新的dns的域信息
 40 zone westos.com. {
 41       primary 127.0.0.1;
 42       key westoskey;
 43 }
注意:最后一个大括号的地方没有分号哦!!!!

dns的更新方式设定

dns的key更新


 

dns的域更新


 
 
测试:
设置一台主机的网络为dhcp,设定主机名成为game.westos.com ,当dhcp给这台主机分配ip后,dns会将这台主机的域名和ip信息更新到westos.com.zone文件中 ,用dig命令可以测试到这个域名的解析


 

猜你喜欢

转载自blog.csdn.net/sinceNow/article/details/84306074