使用Bind提供域名解析服务

DNS域名解析服务

目录

一、DNS理解及相关配置信息

二、安装Bind服务程序

三、正向解析实验

四、反向解析实验

五、部署从服务器

六、安全的加密传输

七、部署DNS缓存服务器


一、DNS理解及相关配置信息

(1) DNS:Domain  Name  System 域名系统,这是一项用解析域名与IP地址对应关系的技术,能够接受用户输入IP地址或域名,然后自动查找与之匹配的IP地址或域名,即将域名解析为IP地址(正向解析),获将IP地址解析为域名(反向解析)。

(2)为保证互联网的正常运行,提供了下面三种类型的服务器:

主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。

缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

  (3)配置文件:

主配置文件:/etc/named.conf  定义bind服务程序的运行。

区域配置文件:/etc/named.rfc1912.zones  对应每个域和相应IP地址所在的具体位置。

数据配置文件目录:/var/named  该目录用来保存域名和IP地址真实对应关系的数据配置文件。

二、安装Bind服务程序

Bind(Berkeley  Internet  Name  Domain,伯克利因特网名称域)服务是全球范围使用最广泛,最安全可靠且高效的域名解析服务程序。在安装Bind服务程序时,最好在安装上bind-chroot,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

#yum   install   bind-chroot   (本机已安装bind、bind-libs,bind-utils)

三、正向解析实验

注意事项:做实验前,关闭防火墙和selinux

#service iptables stop  临时关闭  or chkconfig  iptables off 永久关闭,重启生效

#setenforce 0 临时关闭   or  #vim  /etc/selinux/config   设置SELINUX=disabled 永久关闭

1、修改主配置文件named.conf

[root@admin2 ~]# vim /etc/named.conf

options{

listen-on port  53 { any; };   表示服务器上的所有IP地址均可提供DNS域名解析服务

......

allow-query  {  any; };  允许所有人对本服务器发送请求

......};

2.编辑区域配置文件named.rfc1912.zones

   添加 到结尾处

[root@admin2 ~]# vim /etc/named.rfc1912.zones

zone "zhang.com" IN{
        type master;   服务类型
        file "zhang.com.zone";  域名与IP地址解析规则保存的文件位置
        allow-update { none; }; 允许哪些客户机动态更新解析信息
}; 

3.编辑数据配置文件

(1)从/var/named目录中复制一项正向解析的模板文件(named.localhost),然后对文件进行编辑。复制时加上参数-a,可以保留原有文件的属主,属组和文件权限等。

[root@admin2 ~]# cd /var/named/

[root@admin2 named]# cp -a named.localhost zhang.com.zones

[root@admin2 named]# vim zhang.com.zone

$TTL 1D
@       IN SOA              zhang.com.       root.zhang.com. (
        (授权信息开始) (DNS区域地址) (域名管理员邮箱)                          

                                         0       ; serial   #跟新序列号
                                        1D      ; refresh  #更新
                                        1H      ; retry #重试延时
                                        1W      ; expire  #失效时间
                                        3H )    ; minimum #无效解析记录的缓存时间
           NS      ns.zhang.com.   #域名服务器记录
ns       IN A    192.168.231.140 #地址记录
www   IN A    192.168.231.140 #地址记录

(2)检验解析结果前,需要将DNS地址参数修改成本机IP地址,这样就能由本机提供DNS查询服务了,nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,检测DNS服务器是否能够为用户提供服务。

[root@admin2 ~]# vim /etc/resolv.conf

; generated by /sbin/dhclient-script
nameserver 192.168.231.140

[root@admin2 ~]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]

[root@admin2 ~]# nslookup
> www.zhang.com
Server:        192.168.231.140
Address:    192.168.231.140#53

Name:    www.zhang.com
Address: 192.168.231.140
> ns.zhang.com
Server:        192.168.231.140
Address:    192.168.231.140#53

Name:    ns.zhang.com
Address: 192.168.231.140

四、反向解析实验

1.编辑区域配置文件

[root@admin2 ~]# vim /etc/named.rfc1912.zones  添加结尾处

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

2.从/var/named目录中复制一项反向解析的模板文件( named.loopback),然后对文件进行编辑。复制时也需要加-a,同上。

[root@admin2 named]# cp -a named.loopback  192.168.231.arpa

[root@admin2 named]# vim 192.168.231.arpa

$TTL 1D
@       IN SOA  zhang.com. root.zhang.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.zhang.com.
ns      A       192.168.231.140
140     PTR       ns.zhang.com.    #PTR为指针记录,只用于反向解析中
140     PTR       www.zhang.com.

3.检验分析结果。

[root@admin2 named]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]

[root@admin2 named]# nslookup
> 192.168.231.140
Server:        192.168.231.140
Address:    192.168.231.140#53

140.231.168.192.in-addr.arpa    name = ns.zhang.com.
140.231.168.192.in-addr.arpa    name = www.zhang.com.
>

五、部署从服务器

主服务器admin2,192.168.231.140;

从服务器admin3,192.168.231.132

1.在主服务器中编辑区域配置文件,允许从服务器的更新请求。即修改allow-update{从服务器IP地址;};

[root@admin2 ~]# vim /etc/named.rfc1912.zones

zone "zhang.com" IN{
        type master;
        file "zhang.com.zone";
        allow-update { 192.168.231.132; };
};

zone "231.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.231.arpa";
        allow-update { 192.168.231.132;};
};

2.在从服务器中编辑区域配置文件

[root@admin3 ~]# vim /etc/named.rfc1912.zones    添加或重新创建一个named.rfc1912.zones

zone "zhang.com" IN {
        type slave;
        masters { 192.168.231.140;};
        file "slaves/zhang.com.zone";   #域名与IP地址解析规则保存的文件位置,从服务器放在/var/named/slaves下
};
zone "231.168.192.in-addr.arpa" IN{
        type slave;
        masters {192.168.231.140;};
        file "slaves/192.168.231.arpa";  
};

3.检验解析结果。把从服务器DNS修改为本机IP地址,这样即可使用从服务器自身提供的DNS域名解析服务,当从服务器重新启动后,主服务器的数据配置文件已经同步到从服务器上,默认在/var/named/slaves下。

[root@admin3 ~]# vim /etc/resolv.conf

nameserver 192.168.231.132

[root@admin3 ~]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]
[root@admin3 ~]# ls /var/named/slaves/
192.168.231.arpa  zhang.com.zone   #数据已经同步到从服务器

[root@admin3 ~]# nslookup
> www.zhang.com
Server:        192.168.231.132   #域名服务器,即/etc/reslove.conf中的第一个DNS地址
Address:    192.168.231.132#53

Name:    www.zhang.com
Address: 192.168.231.140

六、安全的加密传输

互联网中的绝大多数DNS服务器都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。

1.在主服务器上生成密钥,并把私钥后面的值记录下来。dnssec-keygen命令用于生成DNS服务密钥

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

密钥的类型(HOST表示与主机相关)

[root@admin2 ~]# dnssec-key -a HMAC-MD5 -b 128 -n HOST master-slave

 Kmaster-slave.+157+43267

[root@admin2 ~]# ls -al Kmaster-slave.+157+43267.*
-rw-------. 1 root root  56 9月   4 19:48 Kmaster-slave.+157+43267.key
-rw-------. 1 root root 165 9月   4 19:48 Kmaster-slave.+157+43267.private

[root@admin2 ~]# cat  Kmaster-slave.+157+43267.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: VZ5lF/Kl85tXAD4S+0xyDw==
Bits: AAA=
Created: 20180904114817
Publish: 20180904114817
Activate: 20180904114817

2.在主服务中创建密钥验证文件。进入bind服务程序用于保存配置文件目录,把私钥(Kmaster-slave.+157+43267.private)中的密钥名称,加密算法和私钥机密字符串按照下面格式写入transfer.key传输配置文件中。为了安全起见,把文件数组修改为named,并将文件权限设置得要小一些,然后把该文件做成一个硬链接到/etc目录中。

[root@admin2 ~]# cd /var/named/chroot/etc/

[root@admin2 etc]# vim transfer.key

key "master-slave" {
algorithm hmac-md5;
secret "VZ5lF/Kl85tXAD4S+0xyDw==";
};

[root@admin2 etc]# chown root:named transfer.key

[root@admin2 etc]# chmod 640 transfer.key

[root@admin2 etc]# ln transfer.key  /etc/transfer.key

3.开启并加载Bind服务的密钥验证功能。在主服务器的主配置文件中加载密钥文件,然后设置,使只允许带有master-slave密钥认证的DNS服务器同步数据配置文件。

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";
        allow-query     { any; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        allow-transfer { key master-slave;};
};

此时,DNS主服务器的TSIG密钥加密传输功能配置完成。清空DNS从服务器下/var/named/slaves下的文件,再次重启Bind服务时,已经不能自动获取数据配置文件了。

[root@admin3 ~]# clear
[root@admin3 ~]# cd /var/named/slaves/
[root@admin3 slaves]# rm -f *

[root@admin3 slaves]# service named restart

[root@admin3 slaves]# ls

4.配置从服务器,使其支持密钥验证。配置DNS从服务器同DNS主服务器基本相同,到/var/named/chroot/etc目录下,创建transfer.key文件,然后修改属组,修改文件权限,把文件链接到/etc目录下。

[root@admin3 ~]# cd /var/named/chroot/etc/

[root@admin3 etc]# vim transfer.key

key "master-slave"{
algorithm hmac-md5;
secret "VZ5lF/Kl85tXAD4S+0xyDw==";
};

[root@admin3 etc]# chown root:named transfer.key

[root@admin3 etc]# chmod 640 transfer.key

[root@admin3 etc]# ls transfer.key /etc/transfer.key

5.开启并加载从服务器的密钥验证功能。编辑/etc/named.conf文件,在第9行位置添加加载密钥配置文件,并且写上主服务器的IP地址和密钥名称。

9 include "/etc/transfer.key";
 10 options {
 11         listen-on port 53 { any; };
 12         listen-on-v6 port 53 { ::1; };
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         allow-query     { any; };
 18         recursion yes;
 19
 20         dnssec-enable yes;
 21         dnssec-validation yes;
 22
 23         /* Path to ISC DLV key */
 24         bindkeys-file "/etc/named.iscdlv.key";
 25
 26         managed-keys-directory "/var/named/dynamic";
 27 };
 28
 29 logging {
 30         channel default_debug {
 31                 file "data/named.run";
 32                 severity dynamic;
 33         };
 34 };
 35 server 192.168.231.140
 36 {
 37 keys { master-slave };
 38 };

6.重启bind服务程序,发现可以同步到数据配置文件了。

[root@admin3 ~]# ls /var/named/slaves/
192.168.231.arpa  zhang.com.zone

七、部署DNS缓存服务器

DNS缓存服务器就是把用户经常用到的IP地址和域名的解析记录保存在本地主机,提高下次解析的效率。简答来说就是当我们使用电脑访问某个网址的时候,需要DNS服务器解析,并且把这个网址的ip临时储存起来,这样你下次访问这个网址的时候就可以直接解析,提高了访问速度,这就是DNS缓存。

1.配置双网卡参数。使之更加接近真实的网络环境,实现外网查询,一块网卡设置为NAT模式,一块网卡设置为桥接模式,配置文件根据windows主机IP设置。

windows主机:

  IPv4 地址 . . . . . . . . . . . . : 192.168.43.180
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.43.1

虚拟机:

br0   inet addr:192.168.43.191  Bcast:192.168.43.255  Mask:255.255.255.0 桥接网卡

eth0  inet addr:192.168.231.140  Bcast:192.168.231.255  Mask:255.255.255.0

2.在bind服务程序的主配置文件中添加缓存转发参数。在/var/named.conf中添加"forwarders{上级DNS服务器地址;};",上级服务器地址是指获取数据配置文件的服务器,这里使用114.114.114.114,是国内移动、电信和联通通用的DNS。

[root@admin2 ~]# vim /etc/named.conf

....

options{

....

forwarders{ 114.114.114.114; };

......

};

......

3.客户端修改DNS地址为缓存服务器IP地址

[root@admin3 ~]# vim /etc/resolv.conf

nameserver 192.168.231.140

3.测试。

[root@admin3 ~]# nslookup
> www.zhang.com
Server:        192.168.231.140
Address:    192.168.231.140#53

Name:    www.zhang.com
Address: 192.168.231.140
> www.baidu.com   
Server:        192.168.231.140
Address:    192.168.231.140#53

Non-authoritative answer:
www.baidu.com    canonical name = www.a.shifen.com.
Name:    www.a.shifen.com
Address: 111.13.100.91
Name:    www.a.shifen.com
Address: 111.13.100.92

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值