部署DNS服务(BIND)
一、学习部署BIND
Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界使用最广泛的DNS
二、环境准备
# uname -r 2.6.32-696.16.1.el6.x86_64 # uname -m x86_64 # cat /etc/redhat-release CentOS release 6.9 (Final)
使用CentOS 6 自带yum源即可,机器可连接公网。
三、部署单台DNS
# yum install bind-utils bind bind-devel bind-chroot -y
备注:dns 9.8 据报道有大漏洞,可远程控制你的主DNS。部署需慎重。
查看软件包安装情况:
# rpm -qa bind-utils bind bind-devel bind-chroot bind-chroot-9.8.2-0.62.rc1.el6_9.4.x86_64 bind-devel-9.8.2-0.62.rc1.el6_9.4.x86_64 bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64 bind-9.8.2-0.62.rc1.el6_9.4.x86_64
编辑/etc/named.conf:
# cat > /etc/named.conf << eof 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/cohroot/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"; eof
备注:
options { version "1.1.1"; listen-on port 53 {any;}; #监控端口 directory "/var/named/chroot/etc/"; #A记录等配置文件所在的目录 pid-file "/var/named/chroot/var/run/named/named.pid"; #服务起来的进程号 allow-query { any; }; #允许谁访问{}可以写IP Dump-file "/var/named/chroot/var/log/binddump.db"; Statistics-file "/var/named/chroot/var/log/named_stats"; #可以看到DNS解析记录的数量,成功率有多少域(可以做监控)DNS状态等 默认是不会生成该文件,执行命令:rndc stats 之后会生成该文件 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" { #认证的密钥 algorithm hmac-md5; secret "Eqw4hClGExUWeDkKBX/pBg=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; logging { #日志 警告路径 (日志分2种) 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"; 其他域的配置文件目录(view.conf可以实现简单的智能DNS的功能,为以后的智能DNS做准备)
认证配置文件编辑:
vim /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:
view "View" { zone "lnh.com" { type master; file "lnh.com.zone"; allow-transfer { 192.168.85.32; }; notify yes; also-notify { 192.168.85.32; }; }; };
备注:
view "View" { #“View 说明 以后可以修改为电信 联通” zone "lnh.com" { #zone配置 type master; #此处为master 还有一个slave file "lnh.com.zone"; #通过这个view进行来找file 找哪一个 allow-transfer { #允许谁来找我要数据(在named.conf(allow-quey)配置) 允许谁来向我发送请求 192.168.85.32; }; notify yes; #当我的master文件发生变更了,去通知下面的IP also-notify { 192.168.85.32; }; }; }; 如果有多个需要一zone"lnh.com开头"以};结尾
编辑 /var/named/chroot/etc/lnh.com.zone:
简单的对a.lnh.com实现负载均衡,优于dns是轮询解析,在这个配置文件里边为三条a.lhn.com所以会实现对该域名的负载均衡。。
$ORIGIN .
$TTL 3600 ; 1 hour
lnh.com IN SOA op.lnh.com. dns.lnh.com. (
2008 ; serial #该值每次修改该配置文件必须增加,否则slave DNS不会同步
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS op.lnh.com.
$ORIGIN lnh.com.
shanks A 1.2.3.4
op A 1.2.3.4
a A 1.2.3.5
a A 192.168.85.188
a A 192.168.85.189
cname CNAME a.lnh.com.
mx MX 5 192.168.85.88
备注:
$ORIGIN . #zone文件生效的域 $TTL 3600 ; 1 hour #域名生存周期(内网可以调节端,外网长) lnh.com 对外说明我是那个zone IN SOA op.lnh.com. dns.lnh.com. ( 对 2000 ; serial #如果新同步数据需要调节此处的大小 900 ; refresh (15 minutes) #当我slave向我同步数据,同步失败多久响应 600 ; retry (10 minutes) #10分钟之后我在发出请求 86400 ; expire (1 day) 1年没有响应我就认为他宕机了 3600 ; minimum (1 hour) ) NS op.lnh.com. 此处A记录的相关信息 $ORIGIN lnh.com. #上面NS配置的域名在下面一定要有一个A记录 shanks A 1.2.3.4 op A 1.2.3.4
相关解释:
1、Serial:只是一个序号,但这个序号可被用来作为slave与master更新的依据。举例来说,master序号为100但slave序号为90时,那么这个zone file的资料就会被传送到slave来更新了。由于这个序号代表新旧资料,通常我们建立你可以利用日期来设定!
举例来说,上面的资料是在2016/01/01所修改的第一次,所以用2016010101作为序号代表!(yyymmddnn,nn代表这一天是第几次修改)
2、Refresh:除了根据Serial来判断新旧之外,我们可以利用这个refresh(更新)命令slave多久进行一次主动更新;
3、Retry:如果到了Refresh的时间,但是slave却无法连接到master时,那么在多久之后,slave会再次的主动尝试与主机连线;
4、Expire:如果slave一直无法与master连接上,那么经过多久的时间之后,则命令slave不要再连接master了!也就是说,此时我们假设master DNS可能遇到重大问题而无法上线,则等待系统管理员处理完毕后,再重新来到slave DNS重新启动bind吧!
5、Minimun:这个就有点像是TTL
修改目录权限,启动服务:
cd /var && chown -R named.named named/ /etc/init.d/named start chkconfig named on
检查服务启动情况:
# netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1269/nginx tcp 0 0 172.16.1.2:53 0.0.0.0:* LISTEN 2641/named tcp 0 0 192.168.85.88:53 0.0.0.0:* LISTEN 2641/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2641/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1249/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2641/named tcp 0 0 :::22 :::* LISTEN 1249/sshd
测试解析结果:
# dig @127.0.0.1 a.lnh.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> @127.0.0.1 a.lnh.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13736 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;a.lnh.com. IN A ;; ANSWER SECTION: a.lnh.com. 3600 IN A 192.168.85.188 a.lnh.com. 3600 IN A 192.168.85.189 a.lnh.com. 3600 IN A 1.2.3.5 ;; AUTHORITY SECTION: lnh.com. 3600 IN NS op.lnh.com. ;; ADDITIONAL SECTION: op.lnh.com. 3600 IN A 1.2.3.4 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jan 17 02:41:50 2018 ;; MSG SIZE rcvd: 108
如果不指定解析的dns服务器,可以修改/etc/resolv.conf文件:
# cat /etc/resolv.conf nameserver 127.0.0.1 nameserver 1.2.4.8 nameserver 8.8.8.8
以上便是单节点DNS服务器的搭建。
本文来自博客园, 作者:Star-Hitian, 转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/articles/8298222.html

浙公网安备 33010602011771号