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设置修改脚本中的三个变量

  1. domain=www.test.com
  2. keyname=rndc-key
  3. 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服务器的更多相关文章

  1. 烂泥:centos安装及配置DNS服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要在centos配置DNS服务器,要先安装DNS软件BIND.当然我们也可以安装其他的DNS软件,比如国内的开源DNS软件DNSPod. 在此我们以通过 ...

  2. 在Debian上用Bind 配置DNS服务器

    1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...

  3. 如何配置DNS服务器(局域网——域名指向某个IP地址)

    单击“开始”,指向“管理工具”,然后单击“DNS”,打开 DNS 管理器.   如有必要,向管理单元添加适用的服务器,然后连接该服务器.在控制台树中,单击适用的 DNS 服务器.   在“操作”菜单上 ...

  4. 配置DNS服务器IP

    #############################脚本功能及说明#################### #该脚本用来在本地服务器上配置DNS服务器IP #创建时间:2014-10-22 ## ...

  5. Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析

    从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP  ...

  6. centOS7配置DNS服务器

    世上无难事只怕有心人,遇事千万千万不要抵触,消极的情绪是失败之母,一点一滴,踏踏实实是通往幸福的捷径. 历经激动,受挫,抵触和鼓励以及征服,终于配好了让我欢喜让我忧的dns.在这里记录下来,希望能够给 ...

  7. CentOS7安装和配置dns服务器

    (1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...

  8. CentOS6.5下DNS服务器搭建与配置

    一.安装机器情况 192.168.1.70(dns 主节点) 192.168.1.71(dns 从节点) 二.主节点DNS的安装及配置 1. DNS服务器所需的软件包安装 yum -y install ...

  9. 配置DNS服务器

    一.配置基本的DNS 服务器(包含正向解析和反向解析)域名:abc.com服务器IP:10.1.2.11 1. 编辑主配置文件/etc/named.conf---------------------- ...

随机推荐

  1. Nmap备忘单:从探索到漏洞利用(Part 5)

    这是备忘单的最后一部分,在这里主要讲述漏洞评估和渗透测试. 数据库审计 列出数据库名称 nmap -sV --script=mysql-databases 192.168.195.130 上图并没有显 ...

  2. Java和Python运行速度对比

    Java和Python运行速度对比:同一个函数运行一百万次,Java耗时0.577秒,Python耗时78秒--135倍的差距. 版本:Java 8,Python 2.7.10 Java测试代码: i ...

  3. mysql如何用order by 自定义排序

    mysql如何用order by 自定义排序 id name roleId aaa bbb ccc ddd eee ,MySQL可以通过field()函数自定义排序,格式:field(value,st ...

  4. Unable to mount the CD/DVD image virtualbox解决方法

    转自: http://askubuntu.com/questions/321589/unable-to-mount-the-cd-dvd-image-on-the-machine-sandbox

  5. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  6. 《ASP.NET MVC4 WEB编程》学习笔记------Web API

    本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...

  7. 58. 分析、测试与总结:罗马数字和阿拉伯数字的转换[roman to integer and integer to roman in c++]

    [本文链接] http://www.cnblogs.com/hellogiser/p/roman-to-integer-and-integer-to-roman.html [题目] 给出一个罗马数字, ...

  8. 【JAVA、C++】LeetCode 010 Regular Expression Matching

    Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...

  9. Auguse 2nd, Week 32nd Tuesday, 2016

    Love me little and love me long.不求情意绵绵,但愿天长地久. Friends are relatives you make for yourself.朋友是你自己结交的 ...

  10. 【读书笔记】读《JavaScript设计模式》之桥接模式

    桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化. 一.使用场景 使用场景一:事件监控 对于前端而言,最典型的使用场景——事件监控.如—— addEvent(element ...