CentOS6.4 配置DNS服务器
1、安装bind
yum install -y bind bind-chroot bind-utis
2、配置named.conf
[root@dns /]# vi /etc/named.conf

注:在options中增加 rrset-order { order cyclic; }; 分配的会更均匀。
3、配置named.rfc1912.zones
[root@dns /]# vi /etc/named.rfc1912.zones

4、配置正向解析
[root@dns /]# cd /var/named/
[root@dns named]# cp named.localhost test.com.zone(一定要和主配置文件里面定义的zone文件名一致)
[root@dns named]# vi test.com.zone

zone配置文件简单说明:
常见的正解文件 RR 相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4 的 IP 地址
主机名. IN AAAA IPv6 的 IP 地址
领域名. IN NS 管理这个领域名的服务器主机名字.
领域名. IN SOA 管理这个领域名的七个重要参数(如上说明)
领域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字.
单位:W= 周、D= 日、H= 小时、M= 分钟。
$TTL 86400
@ IN SOA ns.helome.com. root ( # ns.test.web. 是DNS服务器的名称
0 ; serial (d. adams) 仅作为序列号而已
1D ; refresh 服务器的更新时间
15M ; retry 重新更新时间间隔
1W ; expiry 多久之后宣布失败
1H ) ; minimum 相当于缓存记忆时间
@ IN NS ns.helome.com.
@ IN MX 5 mail.helome.com. (5为优先级别)
ns IN A 192.168.32.131
www IN A 192.168.32.131
mail IN A 192.168.32.131
5、关闭iptables
service iptables stop
6、看配置文件有没有读取权限
[root@dns /]# ll /var/named/
如果没有 chmod +r /var/named/* 即可

7、设置rndc.key
rndc-confgen -r /dev/urandom -a
8、启动bind
service named start
bind dns 宕机检测 故障切换shell脚本
www.test.com解析有多个A记录,下面是实现故障切换的脚本:
通过检测网站的返回状态码来确定服务器的健康状况,如果不返回或返回的状态非200,则开始记录一次故障,连续三次故障后开始删除此域名的故障ip A记录,如果之后的检测发现服务器已经恢复,则重新添加此ip的A记录。
要正常使用下面脚本,需要注意以下事项:
1、把域名的A记录IP写入/tmp/online_ip.txt文件,格式为每行一个IP。
2、根据bind设置修改脚本中的三个变量
- domain=www.test.com
- keyname=rndc-key
- keysecret=PwLjE4wQaXHnt/yQi+lY6g==
(vi /etc/rndc.key , 可获取keyname和keysecret)
3、在named.conf文件中的zone添加如下代码:
vi /etc/named.rfc1912.zones中增加
allow-update {key rndc-key;};

rndc-key修改为自己的。
#!/bin/bash
#===============================================================================
#Description: this script is to automactic update dns record when website is down.
#Author : www.centos.bz
#文件说明:
# /tmp/online_ip.txt 记录在线的服务器ip,需要提前写入IP,每行一个IP
# /tmp/down_ip.txt 记录有故障的服务器ip
# /tmp/curl.txt 记录curl获取的http状态码
# /tmp/${server_ip}_cur_time.txt 记录服务器出现故障的次数
#=============================================================================== #设置一些必要的变量
domain=www.test.com
keyname=rndc-key
keysecret=PwLjE4wQaXHnt/yQi+lY6g== #用来检测本机网络是否正常
function network_detect(){
ping -c1 8.8.8.8 >/dev/null >& && echo connect || exit
} #用来删除DNS记录
function del_record(){
/usr/local/bind/bin/nsupdate <<EOF
key $keyname $keysecret
update delete $domain A $
send
quit
EOF
} #用来增加DNS记录
function add_record(){
/usr/local/bind/bin/nsupdate <<EOF
key $keyname $keysecret
update add $domain A $
send
quit
EOF
} #用来检测在线ip列表健康状态
function online_detect(){
if [ -s /tmp/online_ip.txt ] ;then
for server_ip in `cat /tmp/online_ip.txt` ;
do
curl -I -l -H "Host:$domain" $server_ip -o "/tmp/curl.txt" >/dev/null >&
###判断状态码是否为200
if [ -s /tmp/curl.txt ] && grep '200 OK' /tmp/curl.txt >/dev/null >&;then
echo "OK"
###清空故障次数
rm -f /tmp/${server_ip}_cur_time.txt
###状态码非200时
else
###开始计算故障次数
cur_time=
[ -s /tmp/${server_ip}_cur_time.txt ] && cur_time=`cat /tmp/${server_ip}_cur_time.txt`
cur_time=`expr $cur_time + ` ###当故障次数大于等于3时
if [ $cur_time -gt ];then
###删除故障ip记录
del_record $server_ip
###从在线ip列表中删除故障ip
sed -i "/$server_ip/d" /tmp/online_ip.txt
###记录故障ip到文件
echo $server_ip >> /tmp/down_ip.txt
###删除记录此ip的故障文件
rm -f /tmp/${server_ip}_cur_time.txt else
###记录故障次数
echo $cur_time > /tmp/${server_ip}_cur_time.txt
fi
fi
rm -f /tmp/curl.txt done
fi
} #用来检测故障ip列表健康状态
function down_detect(){
if [ -s /tmp/down_ip.txt ];then
for server_ip in `cat /tmp/down_ip.txt` ;
do
curl -I -l -H "Host:$domain" $server_ip -o "/tmp/curl.txt" >/dev/null >&
if [ -s /tmp/curl.txt ] && grep '200 OK' /tmp/curl.txt >/dev/null >&;then
###添加A记录
add_record $server_ip
###从down_ip.txt删除故障ip
sed -i "/$server_ip/d" /tmp/down_ip.txt
###重新添加此ip到online_ip.txt
echo $server_ip >> /tmp/online_ip.txt
fi
rm -f /tmp/curl.txt
done
fi
}
network_detect
online_detect
down_detect
CentOS6.4 配置DNS服务器的更多相关文章
- 烂泥:centos安装及配置DNS服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要在centos配置DNS服务器,要先安装DNS软件BIND.当然我们也可以安装其他的DNS软件,比如国内的开源DNS软件DNSPod. 在此我们以通过 ...
- 在Debian上用Bind 配置DNS服务器
1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...
- 如何配置DNS服务器(局域网——域名指向某个IP地址)
单击“开始”,指向“管理工具”,然后单击“DNS”,打开 DNS 管理器. 如有必要,向管理单元添加适用的服务器,然后连接该服务器.在控制台树中,单击适用的 DNS 服务器. 在“操作”菜单上 ...
- 配置DNS服务器IP
#############################脚本功能及说明#################### #该脚本用来在本地服务器上配置DNS服务器IP #创建时间:2014-10-22 ## ...
- Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析
从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP ...
- centOS7配置DNS服务器
世上无难事只怕有心人,遇事千万千万不要抵触,消极的情绪是失败之母,一点一滴,踏踏实实是通往幸福的捷径. 历经激动,受挫,抵触和鼓励以及征服,终于配好了让我欢喜让我忧的dns.在这里记录下来,希望能够给 ...
- CentOS7安装和配置dns服务器
(1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...
- CentOS6.5下DNS服务器搭建与配置
一.安装机器情况 192.168.1.70(dns 主节点) 192.168.1.71(dns 从节点) 二.主节点DNS的安装及配置 1. DNS服务器所需的软件包安装 yum -y install ...
- 配置DNS服务器
一.配置基本的DNS 服务器(包含正向解析和反向解析)域名:abc.com服务器IP:10.1.2.11 1. 编辑主配置文件/etc/named.conf---------------------- ...
随机推荐
- LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in super-block while)
LVM XFS增加硬盘分区容量(resize2fs: Bad magic number -- :: 分类: Linux LVM XFS增加硬盘分区容量(resize2fs: Bad magic num ...
- CSS3弹性盒模型flexbox完整版教程
http://caibaojian.com/flexbox-guide.html 来自CSS Tricks上的一个教程,原文为:A Complete Guide to Flexbox.文中详细的介绍了 ...
- C/C++程序终止时执行的函数——atexit()函数详解
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束.在程序的某个地方用exit()结束程序.用户通过Ctrl+C或Ctrl+break操作 ...
- js 去掉input标签中的百分号【%】
parseInt("100%") --100 parseFloat("17%") --17
- eclipse workspace 共享配置文件
eclipse workspace 共享设置 配置文件记录了原来工程的使用习惯,如字体.编码格式等等,通过拷贝替换达到共享配置的目的. 总结一下,复制工作空间配置步骤如下: 1 使用eclipse新建 ...
- 2.16 最长递增子序列 LIS
[本文链接] http://www.cnblogs.com/hellogiser/p/dp-of-LIS.html [分析] 思路一:设序列为A,对序列进行排序后得到B,那么A的最长递增子序列LIS就 ...
- 26.打印所有和为S的连续正整数序列[FindContinuousSequencesWithSumS]
[题目] 输入一个正数n,输出所有和为n连续正数序列.例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. [分析] 这是网易的一道面试题.这道 ...
- poj2778
题意:给出字符串长度n(<=2000000000),给出不可以包含的序列,最多10个,每个长度最大是10.问长度为n的合法序列有多少个?序列中只可能包含ACTG四个字符. 分析:AC自动机(DF ...
- 利用gitbash上传项目到github
GitHub主要是用作基于Git的分布式版本管理系统的库,可以保存和管理自己的代码,而且主要用作代码的合作开发.不过对于我来说,Git控制系统还比较难以掌握,或者开发小系统还不太用得着,因此我把Git ...
- Win7中打开chm文件内容无法显示问题
今天下载了一个linux的2.6.22.14中文文档,下载后发现显示异常 www.2cto.com 怀疑是API的问题,连续从几个网站下来了很多版本,发现都存在这个问题,然后就开始自己的身上找原 ...