栏目头部广告

DNS域名解析服务器部署

一、DNS服务器介绍

DNS是Domain Name System 的缩写,即域名系统。如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址。最初,域名和IP的对应关系保存在一个叫hosts文件中,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件。其他计算机也需要定期更新,才能上网。 但是这样太麻烦了,就出现了DNS。

(1)DNS分类:DNS服务器可以分为3种,即主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)、缓存服务器。

(2)服务端口:DNS使用TCP和UDP的端口号53。客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。什么时候使用tcp53?DNS在进行区域传输的时候使用TCP协议。

二、Bind DNS服务器部署

2.1 Bind包介绍

bind               # DNS服务的主程序包      
bind-chroot   # 提高安全性
bind-utils      # 客户端工具,用于搜索域名指令

Bind-chroot是bind的一个功能,使bind可以在一个chroot的模式下运行。也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性,因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。

Bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具。主要有:dig、host、nslookup、nsupdate,使用这些工具可以进行域名解析和DNS调试工作。

2.2 Bind部署

(1)安装DNS服务

[root@10-27-0-224 ~]# yum -y install bind bind-utils bind-chroot

(2)修改主配置文件

[root@10-27-0-224 ~]# vim /etc/named.conf
options {
        listen-on port 53 { 10.27.0.224; };                       # 监听地址,默认本地监听127.0.0.1,允许外部访问,需要修改为具体IP或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; };                                 # DNS定义完成之后允许谁来访问,这里默认为只允许本地查询
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        bindkeys-file "/etc/named.root.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};
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";

(3)修改/etc/named.rfc1912.zones 主区域配置文件

[root@10-27-0-224 ~]# vim /etc/named.rfc1912.zones 
# 正向解析
zone "starcto.com" IN {
        type master;
        file "starcto.com.zone";
        allow-update { none; };
};

# 反向解析
zone "0.27.10.in-addr.arpa" IN {
        type master;
        file "0.27.10.in-addr.arpa.zone";
        allow-update { none; };
};

【注】如果有非10.27.0.0/24段的反向解析,可以再增加一个对应段的数据区域文件。

解释:这段设置是用zone关键字来定义的一个正向区域,对应的域名为starcto.com 。

type类型有三种:
◆ master:表示定义的主域名服务器。
◆ slave:表示定义的是辅助域名服务器。
◆ hint:表示是互联网中的根域名服务器。

file用来指定存放DNS记录的文件(一般都是区域名称.zone)
allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。

(4)建立正、反向区域数据配置文件

# 正向解析数据配置文件
[root@10-27-0-224 ~]# cp -p /var/named/named.localhost /var/named/starcto.com.zone
[root@10-27-0-224 ~]# cat /var/named/starcto.com.zone
$TTL 1D                                                   # 设置有效地址解析记录的默认缓存时间,默认为1天也就是1D
@       IN SOA  @ rname.invalid. (                        # 起始授权记录SOA 定义了域的全局参数,进行整个域管理设置,@表示当前的域starcto.com
                                        0       ; serial  # 更新序列号,用于标示数据库的变换
                                        1D      ; refresh # 刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天
                                        1H      ; retry   # 重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时
                                        1W      ; expire  # 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周
                                        3H )    ; minimum # 设置无效记录,最少缓存时间为3小时
        NS      @                                         # 域名服务器记录
        A       127.0.0.1
        AAAA    ::1

# 反向解析数据配置文件
[root@10-27-0-224 ~]# cp /var/named/starcto.com.zone /var/named/0.27.10.in-addr.arpa.zone

(5)配置正向解析

[root@10-27-0-224 ~]# vim /var/named/starcto.com.zone
$TTL 1D
@       IN     SOA      starcto.com. admin.starcto.com. (
                                        0
                                        1D
                                        1H
                                        1W
                                        3H 
)
        NS      starcto.com.
        A       10.27.0.224
        IN      MX  10  mail.starcto.com.
mail    IN      A       10.27.0.226
www     IN      A       10.27.0.227
blogs   IN      CNAME   www.starcto.com.

(6)配置反向解析

[root@10-27-0-224 ~]# vim /var/named/0.27.10.in-addr.arpa.zone
$TTL 1D
@       IN     SOA      starcto.com. admin.starcto.com. (
                                        0
                                        1D
                                        1H
                                        1W
                                        3H
)
        NS      starcto.com.
        A       10.27.0.224
        IN      MX  10  mail.starcto.com.     
226     IN      PTR     mail.starcto.com.
227     IN      PTR     www.starcto.com.

(7)测试配置文件和区域数据文件

[root@10-27-0-224 ~]# named-checkconf 
[root@10-27-0-224 ~]# named-checkzone starcto.com /var/named/starcto.com.zone 
zone starcto.com/IN: loaded serial 0
OK

[root@10-27-0-224 ~]# named-checkzone 0.27.10.in-addr.arpa /var/named/0.27.10.in-addr.arpa.zone
zone 0.27.10.in-addr.arpa/IN: loaded serial 0
OK

(8)修改DNS配置

[root@10-27-0-224 ~]# vim /etc/resolv.conf
nameserver 10.27.0.224

[root@10-27-0-224 ~]# systemctl enable named.service
[root@10-27-0-224 ~]# systemctl enable named-chroot.service
[root@10-27-0-224 ~]# systemctl restart named-chroot.service
[root@10-27-0-224 ~]# systemctl restart named.service

(9)测试正、反向解析

[root@10-27-0-224 ~]# nslookup
> www.starcto.com              # 测试正向解析
Server:		10.27.0.224
Address:	10.27.0.224#53

Name:	www.starcto.com
Address: 10.27.0.227

> 10.27.0.224                  # 测试反向解析
224.0.27.10.in-addr.arpa	name = ns1.starcto.com.

(10)查看DNS服务器日志

[root@10-27-0-224 ~]# named -g

2.3 Bind主从配置

(1)master节点配置

[root@10-27-0-224 ~]# vim /etc/named.rfc1912.zones 
zone "starcto.com" IN {
        type master;
        file "starcto.com.zone";
        allow-transfer { 10.27.0.225; };    #表示允许谁来同步数据,不设置默认任意主机都可以来同步
};

(2)slave节点配置

[root@10-27-0-225 ~]# vim /etc/named.rfc1912.zones 
zone "starcto.com" IN {
        type master;
        file "slaves/starcto.com.zone";     # 同步文件放置slaves目录下,即 /var/named/slaves
        masters { 10.27.0.224; };           # 指定主服务器
};

2.4 Bind DNS访问控制

(1)acl格式

acl	acl_name {
	ip;           # 具体的ip地址
	net/prelen;# 表示一个网段};

[root@10-27-0-224 ~]# vim /etc/named.conf 
acl starcto {
	10.27.0.226
	10.26.0.0/24
};

(2)Bind内置acl

none	# 没有一个主机
any # 任意主机
localhost # 本地主机
localnets  #本机的IP同掩码

[root@10-27-0-224 ~]# vim /etc/named.conf
options {
……
        allow-query     { any; };    
……
};

2.5 Bind Forward转发

(1)转发DNS地址

1)forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
2)forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。

[root@10-27-0-224 ~]# vim /etc/named.conf
options {
……
        forwarders { 223.5.5.5;8.8.8.8;};  
        forward first;
        dnssec-validation no;                 #不需要互联网认证
……
};

(2)转发DNS域名

[root@10-27-0-224 ~]# vim /etc/named.conf
zone "google.cn" {              # 访问google.cnn域名时,将解析请求转到8.8.8.8(即google.cn域名的DNS地址),注意这个不能写在上面的forwarder处,否则转发无效!
       type forward;            # 注意这里转发配置中制定了转发的域名,即forwad转发区(forward zone)设置,这是bind9之后的新特性。
       forwarders { 8.8.8.8; };
};

三、新版unbound DNS服务器

3.1 unbound DNS服务器部署

(1)安装unbound服务

[root@10-27-0-224 ~]#  yum install -y unbound

(2)设置开机自启

[root@10-27-0-224 ~]# systemctl enable unbound.service
[root@10-27-0-224 ~]# systemctl restart unbound.service

3.2 修改主配置文件

[root@10-27-0-224 ~]# vim /etc/unbound/unbound.conf
interface: 0.0.0.0                  # 端口监听情况
access-control: 0.0.0.0/0 allow     # 允许所有网段访问
username: ""                        # 允许所有用户

[root@10-27-0-224 ~]# systemctl restart unbound.service

[root@10-27-0-224 ~]# netstat -antulp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name           
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      10724/unbound

3.3 修改数据文件

[root@10-27-0-224 ~]# vim /etc/unbound/local.d/starcto.conf 
local-zone: "starcto.com." static
local-data: "starcto.com. 86400 IN SOA ns.starcto.com. root.starcto.com 120000 86400 3600 10800 86400"

# 正向解析
local-data: "starcto.com. IN NS ns.starcto.com."
local-data: "starcto.com. IN MX 10 mail.starcto.com."
local-data: "starcto.com. IN A 10.27.0.225"
local-data: "ns.starcto.com. IN A 10.27.0.226"

# 反向解析
local-data-ptr: "10.27.0.226 ns.starcto.com."
local-data-ptr: "10.27.0.225 starcto.com."

[root@10-27-0-224 ~]# systemctl restart unbound.service

◆ 有问题找老大 ns.starcto.com;
◆ 出问题发邮件 root.starcto.com;
◆ 120000:辅助 DNS 和主 DNS (一定比辅 DNS 数大)starcto.com 对照同步,更新一次+1;
◆ 86400 是时间周期(一天的秒数);
◆ 3600 是每隔 86400 秒同步失败后,再通过 3600 秒同步,同步三次都失败,则认为主 DNS 死掉;
◆ 10800 是失败 3 次时间;
◆ 86400 缓存长度;

3.4 测试DNS反解

[root@10-27-0-224 ~]# nslookup starcto.com
Server:		10.27.0.224
Address:	10.27.0.224#53

Name:	starcto.com
Address: 10.27.0.225

[root@10-27-0-224 ~]# nslookup 10.27.0.225
Server:		10.27.0.224
Address:	10.27.0.224#53

225.0.27.10.in-addr.arpa	name = starcto.com.

作者:UStarGao
链接:https://www.starcto.com/application_of_operational/243.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`