CentOS 7 安装配置本地DNS (BIND) 服务器(Master-Slave)

域名系统(英文:Domain Name System,DNS)是因特网的一项服务,它作为将域名和IP地址相互映射的
一个分布式数据库,能够使人更方便的访问互联网。BIND是开源软件,它允许人们在Internet上发布域名
系统(DNS)信息,并为用户解决DNS查询。BIND全称是“Berkeley Internet name Domain”,因为该软件
起源于上世纪80年代初的加州大学伯克利分校(University of California at Berkeley)。
BIND是目前Internet上使用最广泛的DNS软件,它提供了一个健壮且稳定的平台,在此基础上,组织可以构
建分布式计算系统,并且知道这些系统完全符合发布的DNS标准。BIND实现了DNS协议。DNS协议是核心互联
网标准的一部分。它们指定了一个计算机根据其名称找到另一台计算机的过程。BIND软件发行版包含询问和
回答名称服务问题所需的所有软件。

BIND可以配置为主或从,以服务于每个区域的DNS请求,我们首先需要配置一台主DNS服务器,主服务器将作
为从服务器的源。当BIND配置为从时,它使用区域传输方法从主服务器获取区域数据的副本。
安装规划
我们将搭建两个名为primary和secondary的服务器,其中primary将被配置为kclouder域的主服务器。
secondary服务器将作为一个从DNS服务器。系统采用CentOS 7.5
Domain Name: kclouder.local DNS servers: NS1: primary.kclouder.local IP: 192.168.17.5 NS2: secondary.kclouder.local IP: 192.168.17.6
www.kclouder.local
192.168.17.100
mail.kclouder.local
192.168.17.99
配置主DNS
1,安装 BIND
yum -y install bind bind-utils
2,配置 BIND
编辑配置文件/etc/named.conf,注释掉下面一行,使BIND能够侦听所有ip地址。
# listen-on port 53 { 127.0.0.1; }; # listen-on-v6 port 53 { ::1; };
添加允许访问DNS的地址段
allow-query { localhost;192.168.17.0/24; };
配置将所有区域由主DNS传输到从DNS(192.168.17.6)
allow-transfer { localhost;192.168.17.6; };
3,创建区域(Zones)-- 正向查询
vi /etc/named.conf zone "kclouder.local" IN { type master; file "fwd.kclouder.local.db"; allow-update { none; }; };
解释:
kclouder.local -- 本地域名
type master -- 主DNS
fwd.kclouder.local.db -- 正向查询文件
allow-update -- 主DNS不需要设置传输,所以设置为none
4,创建区域(Zones)-- 反向查询
vi /etc/named.conf
zone "17.168.192.in-addr.arpa" IN { type master; file "17.168.192.db"; allow-update { none; }; };
解释:
17.168.192.in-addr.arpa -- 反向查询名称 type master -- 主DNS 12.168.192.db -- 反向查询文件 allow-update -- 主DNS不需要设置传输,所以设置为none
5,创建区域文件
默认情况下,区域查询文件放在/var/named目录下。在/var/named目录下创建一个名为
fwd.kclouder.local.db的文件用于进行正向查找。所有域名都应该以点(.)结尾。
名词解释:
A -A记录 NS -名称服务器 MX -交换邮件 CNAME -规范名称
执行以下操作:
vi /var/named/fwd.kclouder.local.db
$TTL 86400 @ IN SOA primary.kclouder.local. root.kclouder.local ( 2014112511 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS primary.kclouder.local. ;Secondary Name server @ IN NS secondary.kclouder.local. ;IP address of Name Server primary IN A 192.168.17.5 ;IP address of secondary server secondary IN A 192.168.17.6 ;Mail exchanger kclouder.local. IN MX 10 mail.kclouder.local. ;A - Record HostName To Ip Address www IN A 192.168.17.100 mail IN A 192.168.17.99 ;CNAME record ftp IN CNAME www.kclouder.local
6,在/var/named目录下创建一个名为17.168.192.db的反向区域文件。创建一个指向上述正向区域条
目的反向指针。
名词解释:
PTR – Pointer 指针 SOA – Start of Authority 起始授权机构
执行以下操作:
vi /var/named/17.168.192.db
$TTL 86400 @ IN SOA primary.kclouder.local. root.kclouder.local ( 2014112511 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS primary.kclouder.local. ;Reverse lookup for Name Server 5 IN PTR primary.kclouder.local. ;PTR Record IP address to HostName 100 IN PTR www.kclouder.local. 99 IN PTR mail.kclouder.local.
7,重启BIND服务并设置自动启动
systemctl restart named.service
systemctl enable named.service
配置从DNS
1,安装 BIND yum -y install bind bind-utils 2,配置 BIND 编辑配置文件/etc/named.conf,注释掉下面一行,使BIND能够侦听所有ip地址。 # listen-on port 53 { 127.0.0.1; }; # listen-on-v6 port 53 { ::1; }; 添加允许访问DNS的地址段 allow-query { localhost;192.168.17.0/24; };
3,创建区域(Zones)
vi /etc/named.conf
zone "kclouder.local" IN { type slave; masters { 192.168.17.6; }; file "slaves/fwd.kclouder.local.db"; };
解释:
kclouder.local -- 本地域名
type slave -- 从DNS
fwd.kclouder.local.db -- 查询文件
4,重启BIND服务并设置自动启动
systemctl restart named.service systemctl enable named.service
从DNS自动更新
当主DNS服务器上的区域发生更改时,必须在所有从DNS服务器上进行更新。我们通过配置主DNS服务器
named.conf文件来实现当主DNS服务器上的区域发生更改时通知从DNS服务器进行区域更新。
在主DNS上编辑named.conf,在正向查询区域下添加如下两行:
notify yes; also-notify { 192.168.17.6; };
安全加密传输
BIND服务程序支持TSIG( RFC 2845)加密机制,TSIG 主要是利用了密码编码的方式来保护区域信息的
传输( Zone Transfer),即 TSIG 加密机制保证了 DNS 服务器之间传输域名区域信息的安全性。
1,在主DNS服务器上安装chroot
yum install -y bind-chroot
2,使用下述命令生成一个主机名称为 master-slave 的 128 位 HMAC-MD5 算法的密钥文件。在执行该命
令后默认会在当前目录中生成公钥和私钥文件,我们需要把私钥文件中 Key 参数后面的值记录下来,一会儿
要将其写入传输配置文件中
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
3,查看生成的KEY
cat Kmaster-slave.+157+23290.private
Private-key-format: v1.3 Algorithm: 157 (HMAC_MD5) Key: C52JJ0UXSgQ1FHAW3SavKw== Bits: AAA= Created: 20181007144131 Publish: 20181007144131 Activate: 20181007144131
4,创建密钥验证文件
cd /var/named/chroot/etc/
vi transfer.key
key "master-slave" { algorithm hmac-md5; secret "C52JJ0UXSgQ1FHAW3SavKw=="; };
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key
5,开启并加载 Bind 服务的密钥验证功能
在配置文件中添加红色部份:
vi /etc/named.conf // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html include "/etc/transfer.key"; options { #listen-on port 53 { 127.0.0.1; }; #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 { localhost;192.168.17.0/24; }; allow-transfer { key master-slave; };
6,重启BIND服务
systemctl restart named
7,配置从DNS服务器,使其支持密钥验证
cd /var/named/chroot/etc
vi transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q=="; };
chown root:named transfer.key chmod 640 transfer.key ln transfer.key /etc/transfer.key
8,开启并加载从DNS服务器的密钥验证功能
在配置文件中添加红色部份:
vi /etc/named.conf // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html include "/etc/transfer.key"; options { #listen-on port 53 { 127.0.0.1; }; #listen-on-v6 port 53 { ::1; };

………………省略部分输出信息………………

pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; server 192.168.10.10 { keys { master-slave; }; }; logging { channel default_debug { file "data/named.run";

验证DNS解析服务
1,在一台客户端上将DNS配置为:
192.168.17.5
2,使用dig命令验证正向查询
确认主DNS域名正向解析服务正常
dig mail.kclouder.local
确认从DNS域名正向解析服务正常
dig @192.168.17.6 mail.kclouder.local
3,使用dig命令验证反向查询
   确认主DNS域名反向解析服务正常
   dig -x 192.168.17.99
   确认从DNS域名反向解析服务正常
   dig -x @192.168.17.6 192.168.17.99
4,使用nslookup进行验证

发表评论