DNS服务

一、环境部署

  • 安装dns相关软件包
yum install -y bind*
  • 相关的几个配置文件
  1. 主配置文件:/etc/named.conf 定义bind服务程序运行相关的参数
  2. 区域配置文件:/etc/named.rfc1912.zones 用于定义域名和IP地址对应关系的所在路径
  3. 数据配置文件目录:/var/named/ 用于定义域名和IP地址真实对应关系的数据配置文件
  • 修改主配置文件listen-on和allow-query参数
vim /etc/named.conf
更改内容如下:
options {
        listen-on port 53 { any; };  ## any表示服务器上所有iP均可提供DNS域名解析
        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; };            ## any表示允许所有人对本服务器发送dns查询请求
        allow-transfer { key master-slave; };
  • 在后续配置过程中可以使用named-checkconf测试配置文件是否正确

二、正向解析

正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户——这也是最常见的DNS工作模式。

  • 步骤

  1. 修改区域配置文件(除注释文件外,可以只保留下面这段配置)
vim /etc/named.rfc1912.zones
更改内容如下:
zone "zyj.com" IN {               ##双引号内自定义域名
        type master;              
        file "zyj.com.zone";      ##定义域名与IP解析规则文件位置
        allow-update { none; };
};
  1. 从/var/named目录中复制一份正向解析模板
cd /var/named
cp -a named.localhost zyj.com.zone
  1. 编辑数据配置文件,并重启
vim zyj.com.zone
编辑内容如下:
$TTL 1D  
@       IN SOA  zyj.com. root.zyj.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS              ns.zyj.com.
ns      IN A            192.168.229.135
        IN MX 10        mail.zyj.com.
mail    IN A            192.168.229.135
www     IN A            192.168.229.135
bbs     IN A            192.168.229.135

参数含义见下表:

image

systemctl restart named
  1. 修改网卡dns地址
vim /etc/resolv.conf
## 此处为临时修改DNS,也可以编辑网卡配置文件永久修改
nameserver 192.168.229.135
  1. 使用nslookup命令测试DNS服务是否生效
[root@zyj-01 named]# nslookup www.zyj.com
Server:		192.168.229.135
Address:	192.168.229.135#53

Name:	www.zyj.com
Address: 192.168.229.135
[root@zyj-01 named]# nslookup mail.zyj.com
Server:		192.168.229.135
Address:	192.168.229.135#53

Name:	mail.zyj.com
Address: 192.168.229.135

三、反向解析

反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。

  • 步骤

  1. 编辑区域配置文件

    反向解析是把IP地址解析成域名格式,因此在定义zone时应该要把IP地址反写,如192.168.157.228,反写后应该就是157.168.192,只需写出IP地址的网络位即可。

 vim /etc/named.rfc1912.zones
 ##在原配置下添加内容,如下:
 zone "229.168.192.in-addr.arpa" IN {
         type master;
         file "192.168.229.arpa";
 };
  1. 从/var/named目录中复制一份反向解析模板
cd /var/named
cp -a named.loopback 192.168.229.arpa
  1. 编辑数据配置文件,并重启named
 vim 192.168.229.arpa
 内容如下
 $TTL 1D
 @       IN SOA  zyj.com. root.zyj.com. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                         3H )    ; minimum
         NS              ns.zyj.com.
 ns      A               192.168.229.135   
 135     PTR             ns.zyj.com.        #135为IP地址中的主机位
 135     PTR             mail.zyj.com.      #PTR为指针记录,仅用于反向解析
 135     PTR             www.zyj.com.
 135     PTR             bbs.zyj.com.
 
 systemctl restart named
  1. 使用nslookup测试
 [root@zyj-01 named]# nslookup 192.168.229.135
 Server:		192.168.229.135
 Address:	192.168.229.135#53
 
 135.229.168.192.in-addr.arpa	name = mail.zyj.com.
 135.229.168.192.in-addr.arpa	name = ns.zyj.com.
 135.229.168.192.in-addr.arpa	name = bbs.zyj.com.
 135.229.168.192.in-addr.arpa	name = www.zyj.com.

四、部署从服务器

作为互联网的基础设施,保障DNS域名解析服务的正常运转至关重要,只有这样才能稳定、快速且不间断的提供查询服务。从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的压力,还可以提升用户的查询速率。

  • 测试环境
主机名称系统IP地址
主服务器CentOS7192.168.229.135
从服务器CentOS7192.168.229.136
  • 步骤

  1. 在主服务器上,允许从服务器的更新请求,并重启named
    vim /etc/named.rfc1912.zones
    内容如下:
    zone "zyj.com" IN {
            type master;
            file "zyj.com.zone";
            allow-update { 192.168.229.136; };   ##指定从服务器的IP
    };
    zone "229.168.192.in-addr.arpa" IN {
            type master;
            file "192.168.229.arpa";
            allow-update { 192.168.229.136; };  ##指定从服务器的IP
    };
    
    ```

    ```
    systemctl restart named
    ```

    

2. 在从服务器上,填写主服务器IP,并重启named

```bash
vim /etc/named.rfc1912.zones
内容如下:
zone "zyj.com" IN {
       type slave;                          ##服务器类型为slave
       file "slaves/zyj.com.zone";      
       masters { 192.168.229.135; };
};
zone "229.168.192.in-addr.arpa" IN {
       type slave;                          ##服务器类型为slave
       file "slaves/192.168.229.arpa";    
       masters { 192.168.229.135; };
};
systemctl restart named
  1. 可以在/var/named/slaves目录下看到同步的数据配置文件
[root@zyj-02 /]# cd /var/named/slaves/
[root@zyj-02 slaves]# ll
总用量 8
-rw-r--r--. 1 named named 340 3月  22 23:28 192.168.229.arpa
-rw-r--r--. 1 named named 347 3月  22 23:28 zyj.com.zone
  1. 将从服务器的DNS修改为192.168.229.136,使用nslookup测试
[root@zyj-02 slaves]# nslookup 192.168.229.135
Server:		192.168.229.136
Address:	192.168.229.136#53

135.229.168.192.in-addr.arpa	name = www.zyj.com.
135.229.168.192.in-addr.arpa	name = bbs.zyj.com.
135.229.168.192.in-addr.arpa	name = ns.zyj.com.
135.229.168.192.in-addr.arpa	name = mail.zyj.com.

[root@zyj-02 slaves]# nslookup www.zyj.com
Server:		192.168.229.136
Address:	192.168.229.136#53

Name:	www.zyj.com
Address: 192.168.229.135

五、安全的加密传输

bind服务程序为了提供安全的解析服务,已经对TSIG ( RFC 2845 ) 加密机制提供了支持,即 TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。

  • 步骤

依旧使用前面配置的两台服务器做实验

  1. 在主服务器使用命令dnssec-keygen生成DNS服务密钥,执行该命令后,会在当前目录中生成公钥和私钥文件。
参数作用
-a指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等
-b密钥长度(HMAC-MD5的密钥长度在1~512位之间)
-n密钥的类型(host表示与主机相关)
  [root@zyj-01 named]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
  Kmaster-slave.+157+58925
  ##测试服务器配置较低时,生成时间会比较久
  1. 将私钥文件中Key参数,记录下来。
 [root@zyj-01 named]# cat Kmaster-slave.+157+58925.private
 Private-key-format: v1.3
 Algorithm: 157 (HMAC_MD5)
 Key: 5UQTkEJPLXCHG21HkRXygw==       ##记住该行参数
 Bits: AAA=
 Created: 20190322154318
 Publish: 20190322154318
 Activate: 20190322154318
 
  1. 在主服务器上创建密钥验证文件
cd /var/named/chroot/etc/
vim transfer.key
添加内容如下:
key "master-slave" {
algorithm hmac-md5;
secret "5UQTkEJPLXCHG21HkRXygw==";  ##此处""内为前面私钥中key的值
};
  1. 安全起见,修改密钥验证文件的权限,所属组。并做一个硬链接到/etc目录中
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key
  1. 在主服务器的配置文件中加载密钥验证文件,并设置只允许带有master-slave密钥认证的DNS服务器同步数据配置文件
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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };
        allow-transfer { key master-slave;}; ##此处为新增配置,只允许带有master-slave密钥认证的DNS服务器同步数据

systemctl restart named
  1. 在从服务器上,清空DNS同步目录中的所有数据配置文件,然后再重启,发现无法自动获取到数据配置文件(证明,主服务器加密传输配置完成)
[root@zyj-02 slaves]# 
[root@zyj-02 slaves]# rm -rf /var/named/slaves/*
[root@zyj-02 slaves]# systemctl restart named
[root@zyj-02 slaves]# ll
总用量 0
  1. 在从服务器上,创建密钥认证文件,设置相应权限,并硬链接到/etc目录下(与主服务器上操作大致一样)
[root@zyj-02 slaves]# cd /var/named/chroot/etc/
[root@zyj-02 etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "5UQTkEJPLXCHG21HkRXygw==";  ##此处""内为前面私钥中key的值
};
[root@zyj-02 etc]# chmod 640 !$
chmod 640 transfer.key
[root@zyj-02 etc]# chown root:named !$
chown root:named transfer.key
[root@zyj-02 etc]# ln !$ /etc/!$
ln transfer.key /etc/transfer.key
  1. 在从服务器上,加载密钥验证功能。

注意:密钥名称等参数不要太靠前,大约在43行之后比较合适,否则bind服务程序会因为没有加载完预设参数而报错

vim /etc/named.conf
增加内容如下:
 9 // See the BIND Administrator's Reference Manual (ARM) for details about the
 10 // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
 11 include "/etc/transfer.key";              ##增加的配置内容
 12 options {
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };
...............
41         managed-keys-directory "/var/named/dynamic";
 42 
 43         pid-file "/run/named/named.pid";
 44         session-keyfile "/run/named/session.key";
 45 };
 46 server 192.168.229.135          ##增加的配置内容
 47 {
 48 keys { master-slave; };
 49 };
  1. 重启服务,查看数据同步目录是否抓取到数据
 [root@zyj-02 slaves]# systemctl restart named
 [root@zyj-02 slaves]# ll
 总用量 8
 -rw-r--r--. 1 named named 340 3月  23 00:21 192.168.229.arpa
 -rw-r--r--. 1 named named 347 3月  23 00:21 zyj.com.zone

六、缓存服务器

  • DNS缓存服务器是一种不负责域名数据维护的DNS服务器。

  • 简单来说缓存服务器,就是把用户长用到的域名与IP地址的解析记录保存在主机本地,从而提升下次的解析效率。

  • DNS缓存服务器一般用于经常访问某些固定站点而且对这些网站的访问速度有较高要求的企业内网中,但实际应用并不广泛。而且,缓存服务器是否可以解析成功,与指定的上级DNS的允许策略有关。

  • 在bind服务器,主配置文件中添加缓存转发参数,即可开启缓存服务器

 vim /etc/named.conf
 内容如下:
 forwarders { 119.29.29.29;}##括号中填写上级DNS服务器,即获取数据配置文件的服务器。此处填写的时腾讯提供的DNS服务器
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值