CentOS 6.8使用bind搭建内网DNS主从服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 6.8使用bind搭建内网DNS主从服务相关的知识,希望对你有一定的参考价值。
1、DNS域名解析服务说明
> DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:
正向解析:根据主机名(域名)查找对应的IP地址。
反向解析:根据IP地址查找对应的主机名(域名)。工作形式上又分主服务器、从服务器和缓存服务器。
主服务器:在特定区域内具有唯一性、负责维护该区域内的域名与IP地址对应关系。
从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址对应关系,提高重复查询时的效率
2、Bind介绍
Bind是一款开放源代码的DNS服务器软件,bind由美国大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain ,是目前世界上使用最为广泛的DNS;
3、搭建环境说明及准备
主机名 | IP地址 | 系统 | 角色 |
---|---|---|---|
node1 | 192.168.56.21 | CentOS 6.8 x86_64 | DNS主 |
node2 | 192.168.56.22 | CentOS 6.8 x86_64 | DNS从 |
两台服务器都关闭iptables和selinux
# /etc/init.d/iptables stop
# chkconfig iptables off
# setenforce 0
# sed -i.ori ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config
4、node1安装DNS主并配置
(1)yum安装bind
# yum install -y bind-utils bind bind-devel bind-chroot
(2)node1配置named.conf配置文件
# cat /etc/named.conf
options { #基础服务配置
version "1.1.1"; #版本信息
listen-on port 53 {any;}; #监听的端口 {any;}可以配成ip,无特殊需求建议是any,可以是多个用分号分隔
directory "/var/named/chroot/etc/"; #安全控制的路径
pid-file "/var/named/chroot/var/run/named/named.pid"; #pid文件
allow-query { any; }; #谁可以在本DNS发起ip请求
Dump-file "/var/named/chroot/var/log/binddump.db";
Statistics-file "/var/named/chroot/var/log/named_stats"; #DNS的链接状态信息文件**
zone-statistics yes; #开启DNS的链接状态信息,和上一条相关联
memstatistics-file "log/mem_stats"; #内存状态信息
empty-zones-enable no; #禁止A记录为空
forwarders {202.106.196.115;8.8.8.8; }; #遇到解析不了的域名,实现跳转到的地址
};
key "rndc-key" { #rndc的key
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging { #日志(两种日志)
channel warning { #解析过程中遇到的问题的日志
file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns { #解析记录的日志
file "/var/named/chroot/var/log/dns_log" versions 10 size 100m; #日志文件超过100m,最多记录10个
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default {
warning;
};
category queries {
general_dns;
};
};
include "/var/named/chroot/etc/view.conf";
(2)node1编辑rndc.key文件
cat /etc/rndc.key #和named.conf配置文件里的rndc.key配置要一样
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
(3)node1配置rndc.conf配置文件
cat /etc/rndc.conf #告诉rndc.key链接那个DNS
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
(4)node1配置view.conf配置文件
# cat /var/named/chroot/etc/view.conf
view "View" { #"View" 为备注
zone "zain.com" { #zone表示为那个域名做解析,这里是为zain.com做解析
type master; #本台DNS的类型
file "zain.com.zone"; #指定文件,可以自定义
allow-transfer { #允许那个服务器来同步本台DNS的数据,一般配置从DNS
192.168.56.22;
};
notify yes; #主DNS配置做了变更后通知那些从DNS来同步数据
also-notify {
192.168.56.22;
};
};
};
(5)node1配置zain.com.zone这个配置文件
# cat /var/named/chroot/etc/zain.com.zone
$ORIGIN . #.的意思和zain.com的意思一样(即写.和写zain.com都可以),
$TTL 3600 ; 1 hour #生存周期(内网建议一分钟,外网可以长一点1小时)
zain.com IN SOA op.zain.com. dns.zain.com. ( #zain.com的SOA类型(说明)解析
2000 ; serial #管理员可修改的序列号(从DNS和主DNS的这个号码一致,当主DNS数据变更后,修改此序列号,从DNS发现此序列号和主不一样则实现拉取主的数据)
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS op.zain.com.
$ORIGIN zain.com. #可以用当前的DNS服务器做当前域名的解析了。
shanks A 1.2.3.4
op A 1.2.3.4
zone文件说明:
? Serial:只是一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。 举例来说, master 序号为 100 但 slave 序号为 90 时,那么这个 zone file 的资料就会被传送到 slave 来更新了。由于这个序号代表新旧资料,通常我们建议你可以利用日期来设定!举例来说,上面的资料是在 2006/10/20 所写的第一次,所以用 2006102001 作为序号代表!(yyyymmddnn,nn代表这一天是第几次修改)
? Refresh:除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;
? Retry:如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;
? Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 也就是说,此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后, 再重新来到 slave DNS 重新启动 bind 吧!
? Minimun:这个就有点象是 TTL !
? NS:DNS服务器做声明的配置,一般建议和SOA做成一样就可以了
5、修改目录权限并启动DNS服务
# cd /var && chown -R named:named named/
# /etc/init.d/named start
Starting named: [ OK ]
# chkconfig named on
6、测试是否能做解析
# dig @127.0.0.1 op.zain.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> @127.0.0.1 op.zain.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10701
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;op.zain.com. IN A
;; ANSWER SECTION:
op.zain.com. 3600 IN A 1.2.3.4 #可以解析
;; AUTHORITY SECTION:
zain.com. 3600 IN NS op.zain.com. #可以解析
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Sep 6 12:52:34 2017
;; MSG SIZE rcvd: 58
# dig @127.0.0.1 shanks.zain.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> @127.0.0.1 shanks.zain.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17550
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;shanks.zain.com. IN A
;; ANSWER SECTION:
shanks.zain.com. 3600 IN A 1.2.3.4 #这里
;; AUTHORITY SECTION:
zain.com. 3600 IN NS op.zain.com.
;; ADDITIONAL SECTION:
op.zain.com. 3600 IN A 1.2.3.4
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Sep 6 12:53:22 2017
;; MSG SIZE rcvd: 81
7、node2配置DNS从服务器
(1)yum安装bind
# yum install bind-utils bind bind-devel bind-chroot
node2配置named.conf
# cat /etc/named.conf
options {
version "1.1.1";
listen-on port 53 {any;};
directory "/var/named/chroot/etc/";
pid-file "/var/named/chroot/var/run/named/named.pid";
allow-query { any; };
Dump-file "/var/named/chroot/var/log/binddump.db";
Statistics-file "/var/named/chroot/var/log/named_stats";
zone-statistics yes;
memstatistics-file "log/mem_stats";
empty-zones-enable no;
forwarders {202.106.196.115;8.8.8.8; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging {
channel warning {
file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns {
file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default {
warning;
};
category queries {
general_dns;
};
};
include "/var/named/chroot/etc/view.conf";
(2)node2配置rndc.key配置文件
# cat /etc/rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
(3)node2配置rndc.conf
# cat /etc/rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
(4)配置view.conf
~]# cat /var/named/chroot/etc/view.conf
view "SlaveView" {
zone "zain.com" {
type slave;
masters {192.168.56.21; }; #主DNS的ip地址
file "slave.zain.com.zone";
};
};
8、node2上修改目录权限并启动从DNS服务
# cd /var && chown -R named.named named/
# /etc/init.d/named start
Starting named: [ OK ]
# chkconfig on
9、同步数据
到master(node1)节点上执行:rndc reload并重启主从(node1、node2)的named服务:/etc/init.d/named reload
到从DNS查看数据是否同步成功
# ll /var/named/chroot/etc
total 680
-rw-r--r--. 1 root root 388 Sep 6 09:40 localtime
drwxr-x---. 2 root named 4096 Jul 5 17:55 named
-rw-r-----. 1 root named 1125 Sep 6 12:57 named.conf
-rw-r--r--. 1 root named 3923 Jul 5 17:55 named.iscdlv.key
-rw-r-----. 1 root named 931 Jun 21 2007 named.rfc1912.zones
-rw-r--r--. 1 root named 1587 May 30 21:38 named.root.key
drwxr-x---. 3 named named 4096 Sep 6 11:37 pki
-rw-r--r--. 1 root root 6455 Jan 12 2010 protocols
-rw-r--r--. 1 root root 197 Sep 6 13:00 rndc.conf
-rw-r--r--. 1 root root 91 Sep 6 13:00 rndc.key
-rw-r--r--. 1 root root 641020 Oct 2 2013 services
-rw-r--r--. 1 named named 312 Sep 6 13:27 slave.zain.com.zone #出现这个表示数据同步成功
-rw-r--r--. 1 named named 169 Sep 6 13:25 view.conf
至此使用bind搭建DNS主从就成功了,以后再需要改A记录就可以到主DNS的/var/named/chroot/etc/zain.com.zone里去添加记录即可。
以上是关于CentOS 6.8使用bind搭建内网DNS主从服务的主要内容,如果未能解决你的问题,请参考以下文章