DNS 服务器搭建

1,135 阅读6分钟

一、 DNS相关概念

1、DNS 服务器

运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

2、DNS 缓存

DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当

其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

3、DNS查询方式:递归查询和迭代查询

看一个DNS查询过程:通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的

image.png

<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。

<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。

<3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。

<4> 本地服务器再向返回的域名服务器发送请求。

<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。

<6> 本地域名服务器将查询请求发送给返回的DNS 服务器。

<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。

<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。

3)两种查询方式

(1)递归查询

递归查询是一种DNS 服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

(2)迭代查询

DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

总结:一般情况下,从客户端到本地DNS服务器是属于递归查询。而DNS服务器之间就是的交互查询就是迭代查询。

4、正向解析与反向解析

(1)正向解析

正向解析是指域名到IP 地址的解析过程。

(2)反向解析

反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。

5、DNS资源记录

(1)SOA 资源记录

每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。

(2)NS 资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。

(3)A 资源记录

地址(A)资源记录把FQDN 映射到IP 地址。因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。

(4)PTR 资源记录

相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。用于反向查询,通过IP地址,找到域名。

(5)CNAME 资源记录

别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。

例:ping百度时,解析到了百度的别名服务器,百度有个cname=[www.a.shifen.com.的别名]

image.png

二、使用宝塔搭建 DNS 服务器

  • 当前只支持正向解析,安装简单,配置容易。

1、安装

image.png

2、配置

image.png

image.png

3、测试

nslookup test3.sqlark.com 192.168.161.239

image.png

nslookup test4.sqlark.com 192.168.161.239

image.png

image.png

三、BIND 搭建 DNS 服务器

1、关闭防火墙和selinux

systemctl disable firewalld
systemctl stop firewalld
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2、安装bind

yum install bind bind-utils bind-chroot -y

bind: DNS 服务的主程序包。

bind-utils: 客户端工具

bind-chroot:bind-chroot使bind可以在一个chroot 的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性.因为在这个chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中.这个是rhel6才有的,rhel5以下是没有的。在rhel6中开启named服务后,会自动挂载,调用chroot功能切换根,可通过mount查看文件挂载:

3、启动服务

systemctl restart named
systemctl status named
systemctl enable named

4、检查服务

ls /var/named/chroot
ps -ef|grep named
netstat -tnlp|grep 53

四、Bind 正向解析配置

1、 主配置文件 /etc/named.conf

image.png

image.png

named-checkconf  //检查配置文件的语法和完整性

2、子配置文件 /etc/named.rfc1912.zones

vi /etc/named.rfc1912.zones

image.png

完整内容如下:

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

// 新增加的正向解析区域
zone "sqlark.com" IN {
        type master;
        file "named.sqlark.com";
        allow-update { none; };
};


zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};

3、 区域文件配置

根据 file "named.sqlark.com"; 来进行添加,目录为 /var/named

拷贝一个模板文件

cp named.localhost  named.sqlark.com

image.png

$TTL 1D
@       IN SOA  sqlark.com.  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      sqlark.com.
sqlark.com.         IN          A       192.168.161.163
www         IN          A       192.168.161.163
test1       IN          A       192.168.161.162

检查配置文件 named-checkzone检查区域解析库文件的语法和完整性

用法:named-checkzone zonename filename

named-checkzone sqlark.com /var/named/named.sqlark.com

image.png

4、修改权限

chown root:named /var/named/named.sqlark.com
chmod 640 /var/named/named.sqlark.com

5、重启named服务

# systemctl restart named # systemctl status named

6、测试

nslookup test1.sqlark.com 192.168.164.247
nslookup www.sqlark.com 192.168.164.247

image.png

五、反向解析配置

1、修改子配置文件

vi /etc/named.rfc1912.zones 新增反向解析域

zone "161.168.192.in-addr.arpa" IN {
        type master;
        file "161.named.loopback";
        allow-update { none; };
};

2、配置反向解析域

创建一个基础的反向解析文件

cp named.loopback  161.named.loopback

具体内容如下:

161.named.loopback 内容如下:

$TTL 1D
@       IN SOA 161.168.192.in-addr.arpa  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@ IN    NS  sqlark.com.
163     PTR  www.sqlark.com
162     PTR  test1.sqlark.com

3、校验文件是否正确

named-checkzone  161.168.192  161.named.loopback

image.png

4、修改文件权限

chown root:named /var/named/161.named.loopback
chmod 640 /var/named/161.named.loopback

5、重启named 服务

systemctl restart named

6、测试

dig -x 192.168.161.162 @192.168.164.247
dig -x 192.168.161.163 @192.168.164.247

image.png

image.png