1. 安装BIND9
Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain,它是目前世界上使用最为广泛的DNS
1.1 配置yum源
使用centos6.5自带的yum源即可,同时确保机器可以解析外网域名,并能连接公网
1.2 yum安装bind
在生产环境中如果有防火墙等设备限制时,DNS的53端口TCP和UDP要同时都打开,解析外网穿透出去时,UDP有可能被某些网络设备截断,此时DNS会转成TCP协议出去。
[root@master ~]# yum install bind-utils bind bind-devel bind-chroot -y
[root@master ~]# rpm -qa | grep ^bind
bind-utils-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-libs-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-devel-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-chroot-9.8.2-0.47.rc1.el6_8.4.x86_64
2. 单机DNS部署
编辑/etc/named.conf(bind主配置文件),全删ggdG,写入如下内容
options {
version "1.1.1";
listen-on port 53 {any;}; #监控端口
directory "/var/named/chroot/etc/"; #zone文件的配置目录
pid-file "/var/named/chroot/var/run/named/named.pid";
allow-query { any; }; #允许解析访问源,可以配置IP或IP段
Dump-file "/var/named/chroot/var/log/binddump.db";
Statistics-file "/var/named/chroot/var/log/named_stats"; #查看DNS状态,可用来做监控
zone-statistics yes; #配成yes才能往里写
memstatistics-file "log/mem_stats"; #内存状态
empty-zones-enable no;
forwarders {202.106.196.115;8.8.8.8; }; #转发,没有记录则转发去请求
};
key "rndc-key" { #rndc连接bind实现reload,动态加载等操作
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定义,访问日志走general
warning;
};
category queries {
general_dns;
};
};
include "/var/named/chroot/etc/view.conf"; #引入其它域的文件,为实现智能dns功能作预留编辑/etc/rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};编辑/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;
};编辑/var/named/chroot/etc/view.conf(现在开始真正的配置A记录等配置)
[root@master ~]# vim /var/named/chroot/etc/view.conf
view "View" { #zone的标记说明
zone "example.com" { #域名的zone
type master; #类型主dns
file "example.com.zone"; #引入的zone文件,通过lnh.com这个zone进入的解析要找的文件
allow-transfer { #允许10.255.253.211过来同步数据
10.255.253.211;
};
notify yes; #master文件变更时发送通知给10.255.253.211
also-notify {
10.255.253.211;
};
};编辑zone文件
[root@master ~]# vim /var/named/chroot/etc/example.com.zone
$ORIGIN . #zone生效的域
$TTL 3600 ; 1 hour #域名变更的生效周期,内网可以调短,外网一般20钟
example.com IN SOA op.example.com. dns.example.com. ( #SOA标记
2000 ; serial #手动自增数,以些数字是否自增判断是否有变更
900 ; refresh (15 minutes) #超过此设定时间slave没来同步,判定slave已脱离
600 ; retry (10 minutes) #15分钟后隔10分钟给slave发现探测
86400 ; expire (1 day) #1天slave没找我,判断slave已经完蛋了
3600 ; minimum (1 hour)
)
NS op.example.com. #申明我是example.com这个zone的nameserver,告诉别人我有example这个zone下的所有解析记录,必须有一条A记录对应op.example.com
$ORIGIN example.com.
op A 1.2.3.4
a A 1.2.3.4 #建立一条A记录,解析a.example.com修改目录权限,并启动服务
[root@master ~]# cd /var && chown -R named.named named/ [root@master var]# /etc/init.d/named start [root@master ~]# chkconfig named on #查看named监听端口 [root@master ~]# netstat -tunpl |grep named tcp 0 0 192.168.56.13:53 0.0.0.0:* LISTEN 5428/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5428/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 5428/named udp 0 0 192.168.56.13:53 0.0.0.0:* 5428/named udp 0 0 127.0.0.1:53 0.0.0.0:* 5428/named
192.168.56.13:53和127.0.0.1:53是对外提供服务 ,953端口是rndc监听bind的端口
检测DNS解析结果
[root@master ~]# dig @127.0.0.1 a.example.com
#指定用127.0.0.1的dns去解析a.example.com的域名
如果dig没有加@,则系统会根据/etc/resolv.conf下nameserver去解析域名
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.4 <<>> @127.0.0.1 a.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61078
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;a.example.com. IN A
;; ANSWER SECTION:
a.example.com. 3600 IN A 1.2.3.4
;; AUTHORITY SECTION:
example.com. 3600 IN NS op.example.com.
;; ADDITIONAL SECTION:
op.example.com. 3600 IN A 1.2.3.4
;; Query time: 39 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Mar 16 04:08:16 2017
;; MSG SIZE rcvd: 80yum安装bind9.8版本有个漏洞,推荐使用源码包编译安装。DNS是基础服务,除非必要升级轻易不要动!