CentOS8 部署DNS服务器

DNS简介

DNS是一项用于管理和解析域名与IP地址对应关系的技术。

DNS域名解析服务分为:

  1. 域名解析为IP地址(正向解析
  2. IP地址解析为域名(反向解析

DNS域名解析服务采用类似目录树的层次结构来记录域名与IP地址之间的关系,从而形成一个分布式的数据库系统。
在这里插入图片描述
域名后缀一般分为国际域名和国内域名,严格来说域名后缀都又严格使用范围。

DNS服务器类型:

  1. 主服务器: 在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系
  2. 从服务器: 从主服务器中获得域名与IP地址的对应关系并进行维护,以防止主服务器宕机等情况
  3. 缓存服务器: 通过向他域名解析服务器铲鲟获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询的效率

DNS域名解析服务查询方式:

  1. 递归查询: DNS服务器接收到用户域名解析请求时,必须得由该服务器向用户给出准确的查询结果,如果本地服务器查询不到则询问其他DNS服务器,再由本服务器对用户给出结果。(直接查询域名整体,适合在查询域名较少的范围内使用效率更高
  2. 迭代查询: DNS服务器接收到用户查询请求之后,不直接返回查询结果,而是从后往前根据域名字段向对应的上一级域名服务器转发请求,通过逐步缩小查询范围来获得查询结果(有点像二分查找算法的思想)

迭代查询示例: 查询www.baidu.com的IP地址

  1. 本地主机向本机设置的DNS服务器发送查询请求,例如设置的 8.8.8.8 或者 114.114.114.114
  2. 8.8.8.8 DNS服务器接收到www.baidu.com查询信息后,转发该查询信息到根域DNS服务器
  3. 根域服务器根据接收到的查询信息,告知 8.8.8.8 DNS服务器向.com域服务器查询,并给出.com域DNS服务器IP地址
  4. 8.8.8.8 DNS服务器再向.com域服务器发送查询请求
  5. .com域DNS服务器接收到查询请求后,告知 8.8.8.8 DNS服务器应向baidu域DNS服务器进行查询,并给出baidu域DNS服务器IP地址
  6. 8.8.8.8 DNS服务器向baidu域DNS服务器发送查询请求
  7. baidu域DNS服务器接收到查询请求后,告知 8.8.8.8 DNS服务器应向www域DNS服务器进行查询,并给出www域服务器IP地址
  8. 8.8.8.8 服务器向www域DNS服务器进行查询
  9. www域DNS服务器获取查询结果,返回给8.8.8.8 DNS服务器
  10. 8.8.8.8 DNS服务器向本地主机返回www.baidu.com的IP地址

以上只是DNS的迭代查询的自我理解,实际上针对这类经常查询的域名来说,8.8.8.8 DNS域名服务器都是直接通过 8.8.8.8 DNS服务器中的缓存服务器来返回查询结果的。

总结: DNS服务器的迭代查询是通过目录树结构顺序来查找的,类似于二分查找算法

bind服务器程序

BIND(Berkeley Internet Name Domain)是使用范围最广,最可靠的且高效的域名解析服务程序。

注意: 再部署安装时加上chroot(牢笼机制)扩展包,以限制bind服务程序的操作权限,保障服务器安全

bind程序配置文件

  1. 主配置文件(/etc/named.conf): 用来定义bind服务程序运行参数
  2. 区域配置文件(/etc/named.rfc1912.zones ): 保存域名和IP地址的对应关系所在位置
  3. 数据配置文件目录: 实际保存域名和IP地址对应关系的数据配置文件

编辑bind主配置文件

[root@MyCentOS ~]# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { any; };  <<<<<服务器上所有IP地址都可以提供域名解析服务
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };   <<<<<<<<所有人都可向本机发送查询请求

编辑bind区域配置文件

在区域配置文件中,定义了域名于IP地址解析规则保存的文件位置以及服务类型等内容,但不包含具体域名IP对应关系信息。
服务类型:

  1. hint(根区域)
  2. master(主区域) ----------> 指主服务器
  3. slave(辅助区域) ------------>指从服务器
#正向DNS解析
zone "localhost.localdomain" IN {
        type master; <<<<<主服务器类型
        file "named.localhost";  <<<域名与IP地址对应关系保存的文件
        allow-update { none; };   <<<<允许哪些客户端动态更新解析信息
};

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

在编辑配置文件时,可以使用named-checkconf命令和named-checkzone命令,分别检查著配置文件和数据配置文件中的语法或参数错误

部署DNS主服务器

正向解析

根据域名查找对应IP地址

编辑区域配置文件

先将其他配置信息全部注释

#用户编辑的DNS配置
#正向解析
zone "chrisgoudan.com" IN {
        type master ;
        file "chrisgoudan.com.zone" ;
        allow-update{ none; };
};

编辑数据配置文件

/var/named目录下有一份名为named.localhost的数据配置模板文件。
复制该文件并重命名为区域配置文件中file参数中的名称。
在复制时,使用-a参数保留原始文件的所有者、所属组、权限属性等信息,一边让bind服务程序顺利读取文件内容。

[root@MyCentOS ~]# cd /var/named
[root@MyCentOS named]# ll
总用量 16
drwxr-x---. 7 root  named   61 817 20:20 chroot
drwxrwx---. 2 named named    6 77 22:14 data
drwxrwx---. 2 named named    6 77 22:14 dynamic
-rw-r-----. 1 root  named 2253 77 22:14 named.ca
-rw-r-----. 1 root  named  152 77 22:14 named.empty
-rw-r-----. 1 root  named  152 77 22:14 named.localhost
-rw-r-----. 1 root  named  168 77 22:14 named.loopback
drwxrwx---. 2 named named    6 77 22:14 slaves
[root@MyCentOS named]# cp -a named.localhost chrisgoudan.com.zone
[root@MyCentOS named]# ll
总用量 20
-rw-r-----. 1 root  named  152 77 22:14 chrisgoudan.com.zone
drwxr-x---. 7 root  named   61 817 20:20 chroot
drwxrwx---. 2 named named    6 77 22:14 data
drwxrwx---. 2 named named    6 77 22:14 dynamic
-rw-r-----. 1 root  named 2253 77 22:14 named.ca
-rw-r-----. 1 root  named  152 77 22:14 named.empty
-rw-r-----. 1 root  named  152 77 22:14 named.localhost
-rw-r-----. 1 root  named  168 77 22:14 named.loopback
drwxrwx---. 2 named named    6 77 22:14 slaves

编辑数据配置文件

$TTL 1D   <<<<生存周期为一天
@       IN SOA       chrisgoudan.com.     rname.invalid. (
       #授权信息开始 #DNS区域的地址      #域名管理员邮箱 
                   更新序列号>>>>>>      0       ; serial
                   更新时间>>>>         1D      ; refresh
                   重试延时>>>>>>>      1H      ; retry
                    失效时间>>>>>>>     1W      ; expire
  无效解析记录的缓存时间 >>>>>>>>>>>>>>  3H )    ; minimum
        NS      dns.chrisgoudan.com. #域名服务器记录,注意最后还有个.号
dns     IN A    192.168.127.200
www     IN A    192.168.127.200
bbs     IN A    192.168.127.100
tech    IN A    123.123.123.123

在编辑数据配置文件之前,首先要将服务器的DNS设置为本机DNS服务器的地址。
需要修改的有以下几点

  1. [root@MyCentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 将网卡配置文件中的DNS改为本机设置的DNS服务器
  2. [root@MyCentOS ~]# vim /etc/resolv.conf 将配置文件中的servername改为本机设置的DNS服务器IP
  3. 使用nmcli命令,修改DNS地址
  4. 重新挂载网卡nmcli n on ens33
  5. 重启网络管理[root@MyCentOS ~]# systemctl restart NetworkManager
  6. 重启网络[root@MyCentOS ~]# systemctl restart network-online.target

最后重启DNS服务器如下第一条命令,使用nslookup命令检测DNS服务器是否部署成功。

[root@MyCentOS ~]# systemctl restart named
[root@MyCentOS ~]# nslookup
> www.chrisgoudan.com
Server:		192.168.127.200
Address:	192.168.127.200#53

Name:	www.chrisgoudan.com
Address: 192.168.127.200
> bbs.chrisgoudan.com
Server:		192.168.127.200
Address:	192.168.127.200#53

Name:	bbs.chrisgoudan.com
Address: 192.168.127.100
> tech.chrisgoudan.com
Server:		192.168.127.200
Address:	192.168.127.200#53

Name:	tech.chrisgoudan.com
Address: 123.123.123.123
> 

反向解析

反向解析是将用户提交的IP地址解析为对应的域名信息。
反向解析作用:

  1. 对某个IP上绑定的域名整体屏蔽,例如针对垃圾邮件
  2. 判断在该IP上有多少网站正在运行

编辑区域配置文件

定义反向解析zone时应当将IP地址反写,如下所示

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

#反向解析
zone "127.168.192.in-addr.arpa" IN { <<<<<IP地址反写
        type master;
        file "127.168.192.arpa";  <<<数据配置文件名称
};

编辑数据配置文件

[root@MyCentOS ~]# cd /var/named
[root@MyCentOS named]# cat named.loopback  > 127.168.192.arpa
[root@MyCentOS named]# vim 127.168.192.arpa 
$TTL 1D
@       IN SOA  chrisgoudan.com.  rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.chrisgoudan.com.
dns     A       192.168.127.200
200     PTR     www.chrisgoudan.com.
100     PTR     bbs.chrisgoudan.com.

重启DNS服务器systemctl restart named,并使用nslookup查看DNS反向解析

[root@MyCentOS named]# nslookup 
> 192.168.127.200
200.127.168.192.in-addr.arpa	name = www.chrisgoudan.com.
> 192.168.127.100
100.127.168.192.in-addr.arpa	name = bbs.chrisgoudan.com.

部署DNS从服务器

从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录负载均衡的作用,提高用户查询效率

部署从服务器需要使用另一条linux系统,不能再同一台linux系统上同时设置DNS主服务器,和DNS从服务器。因为在区域配置文件中主服务器配置和从服务器配置会发生冲突。

设置主服务器区域配置文件

在主服务器区域配置文件中,允许从服务器从主服务器中获得更新请求。

#用户编辑的DNS配置

#DNS主服务器
#正向解析
zone "chrisgoudan.com" IN {
        type master;
        file "chrisgoudan.com.zone";
        allow-update{ 192.168.127.201; };
};

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

在从服务器的区域配置文件中设置以下信息,包括正向解析和反向解析

#DNS从服务器
#正向解析
zone "chrisgoudan.com" IN {
        type slave;   <<<设置为从服务器
        masters { 192.168.127.200; }; <<<<设置DNS主服务器
        file "slaves/chrisgoudan.com.zone" ;  <<<设置从服务器数据文件存放位置
};

#反向解析
zone "127.168.192.in-addr.arpa" IN{ 
        type slave ;
        masters { 192.168.127.200; };
        file "slaves/192.168.127.arpa";
};

最后重启named服务器程序即部署完成DNS从服务器。

部署DNS缓存服务器

DNS缓存服务器就是把用户经常使用的域名和IP地址对应关系解析记录保存在主机本地,从而提高下次解析的效率。

同样在部署DNS缓存服务器中也需要使用在另一台linux服务器上进行设置。在DNS缓存服务器中需要使用两块网卡每个网卡使用一个IP地址。其中一个网卡给外网提供DNS查询服务,其中一个网卡给内网提供DNS查询服务。如果部署DNS缓存服务器只是给内部局域网使用,则使用一个网卡给内网提供服务即可。

添加缓存转发参数

在bind服务程序的主配置文件中添加缓存转发参数。

格式: forwarders {上级DNS服务器地址;};

上级DNS服务器地址是指获取数据配置文件的服务器。例如,如果在本地设置了DNS主服务器(DNS从服务器),则将上级服务器设置为本地DNS主服务器(从服务器)。如果没有设置本地DNS服务器,则将上级服务区设置为地区内的DNS服务器,比如如果在北京则设置为设置为北京区域内离自己最近的DNS服务器,区域公共DNS服务器可在网上查找到。

[root@MyCentOS ~]# 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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
//      forwarders{ 上一级DNS服务器IP地址 ;};

重启DNS服务,将本机DNS地址修改为缓存服务器地址即可使用本地的DNS缓存服务。

DNS安全加密传输

bind服务程序为DNS服务器之间传输域名信息提供了TSIG加密机制来保证其安全性。

主服务器配置

主服务器生成密钥

dnssec-keygen 命令
格式: dnssec-keygen [参数]

-----------------------------------------------dnssec-keygen常用参数--------------------------------------------------------

参数作用
-a指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等
-b密钥长度(HMAC-MD5的密钥长度在1~512位之间)
-n密钥类型(HOST表示与主机相关)

执行该命令后会在当下目录生成一个公钥和一个私钥文件,记录下私钥文件中key参数后的值下一步需要使用。

主服务器中创建密钥验证文件

  1. 进入bind服务程序用于保存配置文件的目录/var/named/chroot/etc/,把刚刚生成的密钥名称,加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。
  2. 将文件的所属组修改成named,并将文件权限设置为600
  3. 将该文件做成一个硬链接到/etc目录中
[root@MyCentOS ~]# vim /etc/named.conf 
[root@MyCentOS ~]# cd /var/named/chroot/etc/
[root@MyCentOS etc]# vim tansfer.key

key "master-slave"{
        algorithm hmac-md5 ;
        secret "之前记录的key参数值";

};

[root@MyCentOS etc]# chown root:named tansfer.key  <<<<修改文件所属组
[root@MyCentOS etc]# chmod 600 tansfer.key   <<<修改文件权限
[root@MyCentOS etc]# ln tansfer.key  /etc/tansfer.key   <<<<生成硬链接文件

主服务器开启并加载密钥验证功能

  1. 在主服务器主配置文件中加载密钥验证文件
  2. 设置只允许带有master-slave密钥认证的DNS服务器同步数据配置文件
[root@MyCentOS ~]# vim /etc/named.conf 

#加载密钥文件
// include "/etc/transfer.key"; 《《《①
 
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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };

#只允许带密钥认证文件的DNS服务器更新
#       allow-transfer{key master-slave;};  <<<<<<<<<<<<<<<②

从服务器配置

配置从服务器支持密钥认证

  1. 在bind从服务器配置文件目录中创建密钥认证文件
  2. 设置文件权限600
  3. 硬链接到/etc目录中

密钥认证文件中的key参数就是主服务器中生成的参数
步骤与主服务器配置一样

开启并加载从服务器的密钥认证功能

  1. 在从服务器配置文件中加载密钥认证文件
include "/etc/transfer.key" ;
  1. 在从服务器配置文件中靠后位置添加主服务器IP地址和密钥名称
server 主服务器IP地址{
	keys {master-slave;};
};

重启DNS服务器

重启DNS服务器程序即可完成数据同步

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值