跳转至

01-dns-server部署手册

https://www.cnblogs.com/leo001/articles/10508304.html

DNS理论基础

DNS 的出现及演化

IP地址通信 》hosts文件解析》》DNS系统

image-20220317111748083

DNS概述入门

DNS (Domain Name System,域名系统),域名与IP的相互映射,提供用户访问互联网; DNS端口:53 UDP协议 DNS的分布式数据库是以域名为索引的,每个域名实际上就是一颗很大的逆向树,树深最大127层,每个节点都有63个字符的文本标号;

DNS解析过程

首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:

(4步描述) (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息; (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息; (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。 (4)若没有找到,则返回错误信息。

说明: 2.png-320.4kB

Dns的分类

主DNS服务器:就是一台存储着原始资料的DNS服务器。 从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。 转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

DNS记录类型

A记录:
将域名指向一个IPv4地址(例如:10.10.10.10),需要增加A记录
CNAME记录:
如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录
MX记录:
建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录
NS记录:
域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
TXT记录:
可任意填写(可为空),通常用做SPF记录(反垃圾邮件)使用
AAAA记录:
将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录
SRV记录:
记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)
显性URL:
将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将www.net.cn显性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址为:www.hichina.com)。
隐性URL:
与显性URL类似,但隐性转发会隐藏真实的目标地址(例如:将www.net.cn隐性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址仍然为:www.net.cn)。

DNS安装部署

环境介绍

[root@linux-bkce-node214 ~]# uname -a
Linux linux-bkce-node214 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-bkce-node214 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

部署bind

安装bind9

 yum -y install bind*.x86_64
 yum -y install bind bind-chroot bind-utils bind-libs
 systemctl enable named
 systemctl start named
 systemctl status named

检查端口状态

[root@linux-bkce-node214 ~]# ss -ltnp|grep 53
LISTEN     0      10     172.17.0.1:53                       *:*                   users:(("named",pid=23252,fd=23))
LISTEN     0      10     192.168.1.214:53                       *:*                   users:(("named",pid=23252,fd=22))
LISTEN     0      10     127.0.0.1:53                       *:*                   users:(("named",pid=23252,fd=21))
LISTEN     0      128    127.0.0.1:953                      *:*                   users:(("named",pid=23252,fd=25))
LISTEN     0      10         ::1:53                      :::*                   users:(("named",pid=23252,fd=24))
LISTEN     0      128        ::1:953                     :::*                   users:(("named",pid=23252,fd=26))

调整访问权限

改options中的listen-on那一行的 “127.0.0.1” 为 “any”,allow-query 中的“localhost” 为”any”,意思是接受其他主机的访问和查询,如下:

[root@localhost ~]#  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";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };

    recursion no;

重启bind服务

[root@localhost ~]# systemctl restart named

添加配置zone

[root@localhost ~]# vim /etc/named.conf

zone "qiu.com." IN {
        type master;
        file "qiu.com.zone";
};

# 关闭递归查询
 recursion no;

配置正向解析

[root@localhost ~]#  cd /var/named/
[root@localhost named]# cp named.localhost qiu.com.zone
[root@localhost named]# chown named.named qiu.com.zone
[root@localhost named]# chmod 640 qiu.com.zone
改为如下配置:
$TTL 1D

@       IN SOA  ns.qiu.com. xx.qiu.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.test.com.
ns      A       192.168.56.11
master  A       192.168.56.11
www    CNAME    master
web    CNAME    slave

配置反向解析

编辑 /etc/named.conf 在第3步添加的 zone 下面 添加

zone "0.168.192.in-addr.arpa." IN {
        type master;
        file "192.168.1.rev";
};

创建rev文件

 cd /var/named/
cp qiu.com.zone 192.168.1.rev
chown named.named 192.168.1.rev

编辑 192.168.56.rev

[root@localhost named]# cat 192.168.1.rev
$TTL 1D
@       IN SOA  ns.qiu.com. xx.qiu.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS    ns.qiu.com.
1     PTR    ns.qiu.com.    
1     PTR    master.qiu.com.
2     PTR    slave.qiu.com 

检查配置文件

[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkzone "0.168.192.in-addr.arpa" /var/named/192.168.1.rev
zone 56.168.192.in-addr.arpa/IN: loaded serial 0
OK  ##正常

bind配置文件详解

主服务端(访问外网)
安装DNS服务所需要的软件包
yum -y install bind bind-chroot bind-util bind-libs
备注:
  bind           提供了域名服务的主要程序及相关文件  
  bind-utils     提供了对DNS服务器的测试工具程序(如nslookup、dig等)
  bind-chroot    为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)

 cat /etc/named.conf
 options {
        listen-on port 53 { any; };      #使用53端口监听,默认监听的是127.0.0.1,这里修改为any(或者直接修改为服务端的ip地址)
        listen-on-v6 port 53 { ::1; };            #监听ipv6的IP地址选项
        directory       "/var/named";             #DNS的根目录,由于安装了bind-chroot的所致,因此服务的实际工作目录为/var/named/chroot/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; };         #允许查询的主机,默认为localhost,这里修改为any
        recursion yes;                    #可以递归查询

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};

logging {                               #named服务的日志文件信息
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                        #根(.)域的配置及信息(也可以通过其它上级域名转发功能来配置缓存域名服务器,可以去了解下)

        type hint;
        file "named.ca";
};

zone "test.com" IN {                       #指定区名。正向解析
        type master;                            #服务器类别,master为主域名
        file "test.com.zone";              #正向解析区域文件名wangshibo.com_zone,在/var/named目录下创建
        allow-transfer {192.168.1.253;};         #指定从(辅助)域名服务器IP。即DNS从服务器的ip是192.168.1.253
};
zone "1.168.192.in-addr.arpa" IN {        #域名对应的ip地址网段为192.168.1.0,此处必须按照相 。反向解析                                          同的格式写
        type master;
        file "192.168.1.zone";               #反向解析文件名192.168.1.zone
        allow-transfer {192.168.1.23;};
};

正向解析
cat /var/named/test.com.zone
$TTL1D
@       IN SOA  ns1.test.com. mail.test.com. (
                                        2021121401    #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
                                        1D   
                                        1H    
                                        1W   
                                        3H ) 
@                IN      NS       ns1.test.com.             #主域名的域名地址。NS是域名服务器
ns1.test.com.    IN      A        192.168.1.254             #主域名的ip地址
@                IN      NS       ns2.test.com.             #从域名的域名地址。NS是域名服务器
ns2.test.com.    IN      A        192.168.1.253             #从域名的ip地址
@                IN      MX 10    mail.test.com.            #邮件服务器的域名地址
mail.test.com.   IN      A        192.168.1.252          
www.test.com.    IN      A        192.168.1.100
cc.test.com.     IN      CNAME    ns1.test.com.

反向解析
cat /var/named/192.168.1.zone
$TTL 1D                      
@       IN SOA  ns1.test.com. mail.test.com. (
                                        2021121401    #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
                                        1D
                                        1H
                                        1W    
                                        3H )  
@               IN      NS      ns1.test.com.
@               IN      NS      ns2.test.com.
254             IN      PTR     ns1.test.com.
253             IN      PTR     ns2.test.com.
@               IN      MX 10   mail.test.com.
252             IN      PTR     mail.test.com.
200             IN      PTR     www.test.com.

/etc/init.d/named start

客户端
cat /etc/resolv.conf
nameserver 192.168.1.254
dig @192.168.1.254 www.baidu.com

验证BIND

检查配置文件

[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkzone "qiu.com." /var/named/qiu.com.zone
zone qiu.com/IN: loaded serial 0
OK

输出OK 代表正常,否则自行查询日志

测试域名解析

[root@localhost named]#  systemctl restart named
[root@localhost named]#  dig www.qiu.com @192.168.1.214
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.qiu.com @192.168.1.214
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6372
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qiu.com.           IN  A

;; ANSWER SECTION:
www.qiu.com.        86400   IN  CNAME   master.qiu.com.
master.qiu.com.     86400   IN  A   192.168.1.1

;; AUTHORITY SECTION:
qiu.com.        86400   IN  NS  qiu.com.

;; ADDITIONAL SECTION:
qiu.com.        86400   IN  A   127.0.0.1
qiu.com.        86400   IN  AAAA    ::1

;; Query time: 0 msec
;; SERVER: 192.168.1.214#53(192.168.1.214)
;; WHEN: Thu Mar 17 11:26:21 CST 2022
;; MSG SIZE  rcvd: 135

如上,在dns 服务器 192.168.1.1 上查到 www.qiu.com 指向 master.test.com,然后master.test.com 指向 192.168.56.11

测试反向解析

[root@localhost named]# systemctl restart named
[root@localhost named]# dig -x 192.168.1.1 @192.168.1.214
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -x 192.168.1.1 @192.168.1.214
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 13526
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.1.168.192.in-addr.arpa.  IN  PTR

;; Query time: 0 msec
;; SERVER: 192.168.1.214#53(192.168.1.214)
;; WHEN: Thu Mar 17 11:53:45 CST 2022
;; MSG SIZE  rcvd: 53

至此,主DNS 服务器上的 正向、反向解析已配置成功。

递归查询

当域名服务器无法提供不在记录的域名查询服务时,可以开启递归查询

[root@linux-bkce-node214 ~]# vim /etc/named.conf
recursion yes;   #开启递归查询
[root@linux-bkce-node214 ~]# systemctl restart named