#########DNS服务器###########

1.DNS服务器的类型:
主域名服务器:master,负责维护这个地区的所有域名信息,是特定的所有信息的权威信息源。
辅助域名服务器:slaves,作为备份服务器,在主服务器出现故障、关闭、负载过重时提供域名解析服务器。
缓存服务器:hint,将域名查询结果缓存到本地,提高重复查询时的速度。
转发域名服务器:负责所有非本地域名域名的本地查询。

2.DNS系统的作用:
正向解析:根据主机名称(域名)查找对应的IP地址。
反向解析:根据IP地址查找对应的主机域名。


#########DNS服务器的配置选项内容解释##########
1.DNS服务的信息说明:
网络类型:
IN:表示网络是Internet
基本记录:
A:Address,正向记录,域名到ip
AAAA:域名到IPV6的映射
PTR:Printer,反向,ip到域名
可选记录:
MX:代表域内的邮件服务器
CNAME:域名的别名
区记录:
SOA:start of authority ,标示域内主dns服务器
NS:代表域内的dns服务器,标示授权子域

host -l example.com    ##查看域中的所有主机
dig -t soa example.com    ##辅助dns

软件包: bind、bind-chroot、bind-utils、caching-nameserver
bind    ##提供了域名服务的主要程序及相关文件
bind-chroot    ##为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
bind-utils    ##提供了对DNS服务器的测试工具程序(如nslookup、dig等)
cache-nameserver ##提供了一些配置样例文件
(如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在 /var/named/ 目录)


/etc/named.conf    ##DNS主配置文件
/var/named    ##DNS区文件(zone)存放目录
【注:为了实验简单些,这里没有使用伪装的目录】

named是标准的系统服务脚本,监听TCP、UDP协议的53端口,以及TCP的953端口:
UDP 53端口一般对所有客户机开放,以提供解析服务;
TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道
TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道

############配置主DNS服务器(有正向和反向解析)############
1.安装
yum install -y bind bind-utils
2.
背景:hjy.qq.com是主dns服务器,IP是172.25.8.10,有2个计算机进行域名解析,www和abc,IP是172.25.8.13~14
1)
vim /etc/named.conf    ##dns配置文件,包含对根域服务器named.ca的引用

在options中参数修改如下:            ##全局设定
  listen-on port 53 { any; };        ##监听本地53端口,any表示允许任何IP监听
  // listen-on-v6 port 53 { ::1; };    ##注释关闭ipv6选项
  allow-query  { any; };        ##允许与本地直连的网络使用dns服务
    
//include "/etc/named.root.key";    ##根安全及远程管理,注释掉这最后一行
2)
vim /etc/named.rfc1912.zones    ##该文件定义区qq.com,区指zone(更多域名,可在此文件中继续添加)

zone "qq.com" IN {        ##定义了对qq.com的正向解析
        type master;
        file "qq.com.zone";    ##正向解析配置文件名为qq.com.zone,此区文件中有资源记录
        allow-update { none; };
};

zone "8.25.172.in-addr.arpa" IN {    ##该文件定义区qq.com的反向解析
        type master;
        file "8.25.172.zone";        ##反向向解析配置文件名为8.25.172.zone,此区文件中有资源记录
        allow-update { none; };
};

3)
vim /var/named/qq.com.zone

$TTL 1D
@       IN SOA  hjy.qq.com. root.qq.com. (    ##@代替qq.com,写全域名后必须有.
                                        0       ; serial    ##序列号
                                        1D      ; refresh    ##刷新间隔
                                        1H      ; retry        ##重试间隔
                                        1W      ; expire    ##过期间隔
                                        3H )    ; minimum    ##最小TTL
        IN  NS  hjy.qq.com.    ##NS记录,授权的子域
hjy     IN  A   172.25.8.10    ##A记录,相对名hjy,全名是hjy.qq.com
www     IN  A   172.25.8.13    ##A记录,相对名www,全名是www.qq.com
abc    IN  A    172.25.8.14    ##A记录

4)vim /var/named/8.25.172.zone

$TTL 1D
@       IN SOA hjy.qq.com. root.qq.com. (    ##@代替8.25.172.in-addr.arpa,root.qq.com是管理员邮箱
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN NS   qq.com.        ##NS记录,授权的子域
10      IN PTR  hjy.qq.com.    ##PTR记录,IP到域名的解析
13      IN PTR  www.qq.com.
14    IN PTR  abc.qq.com.

5)检查配置文件
named-checkconf /etc/named.conf
named-checkzone qq.com /var/named/qq.com.zone
named-checkzone 8.25.172.in-addr.arpa /var/naemd/8.25.172.zone

6)检查无误启动named
systemctl start named

7)测试DNS是否生效
vim /erc/resolv.conf
search qq.com hjy.qq.com
nameserver 172.25.8.10

8)使用host和dig命令进行解析
[root@localhost ~]# host hjy.qq.com
hjy.qq.com has address 172.25.8.10
[root@localhost ~]# host www.qq.com
www.qq.com has address 172.25.8.13
[root@localhost ~]# host abc.qq.com
abc.qq.com has address 172.25.8.14
[root@localhost ~]# host 172.25.8.13
13.8.25.172.in-addr.arpa domain name pointer www.qq.com.

############配置辅助DNS服务器#############
1.继续编辑主DNS服务器的/etc/named.conf
添加新的options参数:
options {
        dierectory "/var/named";
        allow-transfer {172.25.8.11;};    ##指定辅助服务器的IP,也可以为any

2.辅助服务器上安装
yum install -y bind
3.辅助服务器编辑配置文件
1)
vim /etc/name.conf
注释原来的options,新添加:
options {
        directory "/var/named";
};

logging {            【这些内容留下,其他注释掉】
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {            【这些内容留下,其他注释掉】
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";【这些内容留下,其他注释掉】
//include "/etc/named.root.key";    ##根安全及远程管理,注释掉这最后一行

2)
 vim /etc/named.rfc1912.zones
zone "qq.com" IN {
         type slave;
         file "slaves/qq.com.zone";
         masters {172.25.8.10;};    ##注意是masters
};
zone "8.25.172.in-addr.arpa" IN {
         type slave;
         file "slaves/8.25.172.zone";
         masters {172.25.8.10;};    ##注意是masters
};
3)辅助服务器检查配置文件
named-checkconf /etc/named.conf

4)辅助服务器查看并开启named
ls /var/named/slaves/    ##此时该目录为空
systemct start named    ##启动naemd守护进程

5)辅助服务器查看/var/named/slaves/
ls /var/named/slaves/    
8.25.172.zone  qq.com.zone    ##从主服务器复制过来的正向和反向解析

6)辅助服务器测试DNS是否生效
vim /etc/resolv.conf
search qq.com
nameserver 172.25.8.11

7)使用host和dig命令进行解析
[root@slave ~]# host www.qq.com
www.qq.com has address 172.25.8.13
[root@server ~]# host 172.25.8.14
14.8.25.172.in-addr.arpa domain name pointer abc.qq.com.


############配置转发DNS服务器#############
如果DNS服务器配置为DNS转发模式,其实就是创建成缓存服务器
1.只用编辑name.conf,不需要使用zone语句设置区
1) vim /etc/name.conf
options{
    dierectory "/var/named";
    forwarder {172.25.8.20        ##转发目的DNS服务器ip地址
           172.25.8.30        
    };    
    forwared only;    ##只进行转发服务
};
2)开启nameds
systemct start named    ##启动naemd

############DNS负载均衡############
背景:例如FTP服务器访问者很多,通过使用对DNS的配置达到负载均衡的目的,3台FTP服务器的内容完全相同,
3台FTP服务器IP为172.25.8.15~17,统一使用一个域名ftp.qq.com
1.在刚才的主服务器上直接做
1)编辑qq.com.zone
vim /var/named/qq.com.zone

$TTL 1D
@       IN SOA  hjy.qq.com. root.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN  NS  hjy.qq.com.
hjy     IN  A   172.25.8.10
www     IN  A   172.25.8.13
abc     IN  A   172.25.8.14
ftp     IN  A   172.25.8.15
ftp     IN  A   172.25.8.16
ftp     IN  A   172.25.8.17
2)编辑8.25.172.zone
vim /var/named/8.25.172.zone

$TTL 1D
@       IN SOA hjy.qq.com. root (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN NS   qq.com.
10      IN PTR  hjy.qq.com.
13      IN PTR  www.qq.com.
14      IN PTR  abc.qq.com.
15      IN PTR  ftp.qq.com.
16      IN PTR  ftp.qq.com.
17      IN PTR  ftp.qq.com.

3)重新启动
systemctl restart named
【注意:之前配置过转发服务器,如果出现错误,按照named-check /etc/named.conf检查排错】

4)正向反向测试
[root@localhost ~]# host ftp.qq.com
ftp.qq.com has address 172.25.8.17
ftp.qq.com has address 172.25.8.15
ftp.qq.com has address 172.25.8.16
[root@localhost ~]# host 172.25.8.15
15.8.25.172.in-addr.arpa domain name pointer ftp.qq.com.
[root@localhost ~]# host 172.25.8.16
16.8.25.172.in-addr.arpa domain name pointer ftp.qq.com.
[root@localhost ~]# host 172.25.8.17
17.8.25.172.in-addr.arpa domain name pointer ftp.qq.com.