linux学习-centos7上部署DNS服务

    DNS是Domain Name System 域名系统的简称,DNS可以提供为计算机,服务以及接入互联网或者局域网的任何资源提供分层的名称解析功能。DNS提供很多功能,但是最主要的是进行域名与IP地址的之间的解析。域名是分级的,一般分为:主机名.三级域名.二级域名.顶级域名.。注意,最后有一个点代表的是根域,是所有的域名的起点。

   

 一、安装DNS软件

    centos7下的DNS软件主要是伯克利加州大学研发的BIND(Berkeley Internet Name)。bind-utils软件包提供DNS查询工具,如dig,host,nslookup等。

yum  -y  install  bind
yum -y install bind-utils


配置文件解析

    BIND配置文件主要分为主配置文件与域数据记录文件,主配置文件包括很多使用花括号的引起来的定义语句,在定义语句中可以设置很多个选项,主配置文件的核心功能就是定义域,以及告知计算机到哪里可以找到响应域的数据记文件。而域数据记录文件则存储具体的域名与IP之间的解析记录,DNS通过读域数据记录文件来解答客户端的查询请求。

    主配置文件一般为/etc/named.conf

    典型的主配置文件语法如下

statement_name {
option1;
option2;
... ...;
};

以下为/etc/named.conf文件中常用的定义语句

acl 语句允许预定义一组主机,从而控制允许还是拒绝他人访问域名服务器,BIND预定义了一些主机访问控制列表,其中any可以匹配任意IP地址,localhost可以·匹配·本地系统上所有的IP地址,localnets匹配本地系统所链接的任意网络,none将不匹配任何ip地址。

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

以下为定义的acl控制列表,一个为黑名单,一个为白名单。

acl black {
172.16.0.0/16;
192.168.9.12;
};
acl white {
10.0.0.0/8;
192.168.0.0/24;
}
options {
allow-query { white ; };
blackhole { black; };
};

 options语句用来定义全局配置选项,在全局配置中至少要定义一个工作路径,默认工作路径为var/named/,具体的常见参数如下 


directory                设置域名服务的工作目录,默认为/var/named
dump-file                 运行rndc dumpdb备份缓存资料后保存的文件路径与名称
statistics-file              运行rndc stats后,统计信息的保存路径与名称
listen-on port                  指定监听的IPv4网络接口
allow-query                 指定哪些主机可以查询服务器的权威解析记录
allow-query-cache                    指定哪些主机可以通过服务器查询非权威的解析数据,如递归查询数据
blackhole                设置拒绝哪些主机的查询请求
recursion                是否允许进行递归查询
forwards                 指定一个IP地址,所有对本服务器的查询将转发到该IP进行解析
max-cache-size                    设置缓存文件的最大容量


    zone语句用来定义域及相关选项,定义域也就意味着你希望以后维护自己公司的域名解析。该语句的中的重点选项有type域file,以下为zone语句内常用的选项及描述

type                         设置域类型,类型可以是:
                           hint:当本地找不到相关解析后,可以查询根域名服务器
                           maser:定义权威域名服务器
                           slave:定义辅助域名服务器
                           forward:定义转发域名服务器
file                         定义域数据文件,文件保存在directory所定义的目录下
notify                            定于域数据文件,文件保存在directory所定义的目录下
master                            定义主域名服务器IP地址,当type设置为slave后此选项才有效
allow-update                                 允许哪些主机动态更新域数据信息
allow-tansfer                               哪些从服务器可以从主服务器下载数据文件


以下为简单的zone语句实例,example.com是定义的域,tpye定义为本机为example.com域的主域名服务器,该域的解析文件保存在example.com.zone文件中,该文件保存在/var/named/目录下。当定义方向解析域时,需要将网络地址段反过来输入,并以固定的in-addr.arpa格式结尾。通过定义hint的根域,这样当客户端查询不属于自己维护的域名时,可以根据根服务器进行迭代查询,最终返回正确的结果,全球的根域名服务器信息保存在named.ca文件中,该文件时安装完BIND软件后自动生成的模板文件,我们可以在/usr/share/doc/bind-9.9.4/sample/var/named/目录下找到它。

Zone "." IN {
    type hint;
    file "named.ca";
};
zone "example.com" IN {
    type master;
    file "example.com.zone";
};
zone "0.168.0.192.in-addr.arpa" IN {
    type master
    file "192.168.0.zone";
};

    在BIND软件的主配置文件中,如果定义了zone语句,还需要额外创建域数据文件。默认域数据文件被存储在/var/named目录下,文件名称由zone语句中的file选项设定。数据文件分为正向解析数据文件和反向数据文件,正向解析文件保存了域名到IP地址的映射记录,反向解析文件保存了IP地址到域名的映射记录,以下为常用的记录类型及描述

SOA记录              域权威记录,说明本机服务器为该域的管理服务器
NS记录               域名服务器记录
A记录                正向解析记录,域名到地址的映射
PTR记录              反向解析记录,IP地址到域名的映射
CNAME记录            别名记录,为主机添加别名
MX记录               邮件记录,指定域内的邮件服务器,需要指定优先级

以下就举例说明正向解析域数据文件,说明各个语法格式。

TTL的值为DNS记录的缓存时间,该值是其他域名服务器将数据存放在缓存中的时间,1D代表一天

SOA后面记录的root.example.com.代表域的权威服务器,jacob.google.com是管理员的邮箱,由于@在数据文件中的代表特殊含义,这里使用.来代表@符号

NS记录代表域名服务器记录,如果由多个域名服务器,则可以添加多个NS记录,但是每个NS记录下面都需要由对应的A记录

A记录为正向解析记录,格式为在域名后面输入相应的IP地址

IN代表Internet

MX记录指定的邮件服务器时,可以设置优先级

最后CNAME记录为别名,可以使用web.example.com来代表www.example.com具体的配置文件如下:

$TTL 1D
@ IN SOA             root.example.com ,jacob.goole.com. (
                     0
                     1D
                     1N
                     1W
                     3H)
                 IN NS root.example.com.
                 IN MX 10  mail.example.com.
 root.example.com.     IN     A 172.16.0.254
 www.example.com.     IN     A 172.16.0.200
              IN     A  172.16.0.201
 ftp.example.com.     IN     A 172.16.0.100
 mail            IN     A  172.16.0.25
 web            IN     A  CHAME www

注意:

1、zone语句后定义的域对于数据文件的简写相当重要,如果区数据为你教案不以"."结尾的名称后会被自动加上该域名称

2、数据文件中@符号代表zone所以定义的域名称

3、如果在数据文件中某条记录名称为空格或者制表符,那么BIND系统会直使用上一条记录的名称

4、如果同一个域名设置多个A记录,则客户请求该域名解析时,服务器会以轮询的方式将结果返回给客户端,一定程度上实现负载均衡


二、部署域名服务器

搭建域名服务器,域名设定为www.chucloud.com,正向解析的域名,网络地址为172.31.208.0/24,按照以下三台进行

服务器IP                                    服务器名称                                            功能描述

172.31.208.80                           dns.chucloud.com                                域名服务器

172.31.208.81                           ntp.chucloud.com                                 时间服务器

                                                  mail.chucloud.com                                邮件服务器

172.31.208.82                           www.chucloud.com                               网站服务器 


2.1安装软件

yum install -y  bind-utlis




2.2修改配置文件

chown root.named /etc/named.conf
vim /etc/named.conf

按照以下修改

acl black {                                    #黑名单
172.31.101.0/24;
};

acl white {                                    #白名单
172.31.208.0/24;
};

options {
        listen-on port 53 { any; };                                    #定义任何主机都可以使用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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { white; };                #允许白名单查询
        blackhole       { black; };                #禁止黑名单查询
        forwarders    {                                                 #设置转发查询
                            223.5.5.5;                    #公网DNS服务器
                            114.114.114.114;
        }

image.png

定义zone

zone "." IN {                        
        type hint;
        file "named.ca";
};

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

zone "208.31.172.in-addr.arpa" IN {
        type master;
        file "208.31.172.zone";
};

image.png

注意:

1、反向解析记录的写法和IP地址是反过来了,172.31.208.0 写为208.31.172.in-addr.arpa

2.3 创建区数据文件

    主配置文件仅是对zone域的定义,关于域内主机的具体记录的解析,还需要依赖于数据文件的内容,常见的域名解析有正向解析,反向解析记录,CNAME记录以及MX记录等,可以根据模板创建具体的区数据解析文件

,这些文件的创建可以根据软件包中提供的named.loalhost文件作为模板

cd /usr/share/doc/bind-9.9.4/sample/var/named/
cp /usr/share/doc/bind-9.9.4/sample/var/named/named.ca /var/named/
chown root.named /var/named/named.ca 
cp /usr/share/doc/bind-9.9.4/sample/var/named/named.localhost /var/named/chucloud.com.zone   #复制模板文件并重命名为chucloud.com.zone
chown root.named /var/named/chucloud.com.zone
vim /var/named/chucloud.com.zone #编辑区域文件

按照设定的内容编辑区域文件

$TTL 1D
@	IN SOA	dns.chucloud.com. jacob.abc.com. (
					0	
					1D	
					1H	
					1W	
					3H )	
	NS	dns.chucloud.com.
	MX 10 mail.chucloud.com.
dns 		 	IN  A 172.31.208.80
ntp.chucloud.com.	IN  A 172.31.208.81
mail.chucloud.com.	IN  A 172.31.208.81
www.chucloud.com.	IN  A 172.31.208.82       #完整域名一定以.结尾
web			IN  CNAME www             #别名

image.png

注意:

1、注意@符号

2、A记录行前面一定不能有空格,不然报错

3、完整域名必须以"."结尾

4、加上管理员邮箱“jacob.chucloud.com. "


然后新建一个反向解析文件208.31.172.zone,内容如下

$TTL 1D

@       IN SOA  dns.chucloud.com. jacob.chucloud.com (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      dns.chucloud.com.

        MX 10 mail.chucloud.com.

80              IN  PTR  dns.chucloud.com.

81              IN  PTR  ntp.chucloud.com.

81              IN  PTR  mail.chucloud.com.

82              IN  PTR  www.chucloud.com.

82              IN  PTR  web.chucloud.com.

注意:

1、注意@符号

2、A记录行前面一定不能有空格,不然报错

3、完整域名必须以"."结尾

4、因为配置文件named.conf中反向记录区域使用“208.31.172.in-addr.arpa“,所以只用写最后一个IP地址最后主机位,如82

5、如果配置文件named.conf中反向记录使用”31.172.in-addr.arpa",则区域文件记录IP地址记录应该写82.208


三、服务管理

在域名服务器配置完成后,需要开启防火墙指定端口53,同时我们可以使用命令检查配置文件是否有错误

named-checkconf /etc/named.conf   #检查配置文件
named-checkzone 208.31.172.in-addr.arpa /var/named/208.31.172.zone #检查反向解析zone文件
named-checkzone chucloud.com.zone /var/named/chucloud.com.zone        #检查正向解析zone文件
firewall-cmd --permanent --add-port=53/tcp            #使用firewall服务时需要清理iptables规则避免冲突
firewall-cmd --permanent --add-port=53/udp
systemctl start named
systemctl enable named

image.png

四、客户端测试

在各个主机上配置好DNS服务器为172.31.208.80后,进行测试

yum install bind-utils  #安装DNS解析客户端


在172.31.208.81上

ping www.chucloud.com

ping web.chucloud.com

image.png

可见解析到172.31.208.82

ping www.baidu.com

ping www.163.com

image.png

可见DNS服务器转发查询设置生效

使用域名解析名工具查询

nslookup www.chucloud.com

nslookup 172.31.208.82

image.png

dig www.chucloud.com

host www.chucloud.com


五、思考

1、很多时候可以用chroot-bind程序,使用chroot来对DNS进行安全加固,但是我没有实验成功

2、CentOS7下安装了bind-chroot之后,若要使用named-chroot.service,则需要关闭named.service。两者只能运行一个。

3、可以配置从域名服务器保证负载均衡和可靠性


猜你喜欢

转载自blog.51cto.com/11555417/2327666