zoukankan      html  css  js  c++  java
  • 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设置修改脚本中的三个变量

    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 2>&1 && echo connect || exit 1
    }
     
    #用来删除DNS记录
    function del_record(){
    /usr/local/bind/bin/nsupdate <<EOF
    key $keyname $keysecret
    update delete $domain A $1
    send
    quit
    EOF
    }
     
    #用来增加DNS记录
    function add_record(){
    /usr/local/bind/bin/nsupdate <<EOF
    key $keyname $keysecret
    update add $domain 3600 A $1
    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 2>&1
    ###判断状态码是否为200
    if [ -s /tmp/curl.txt ] && grep '200 OK' /tmp/curl.txt >/dev/null 2>&1;then
    echo "OK"
    ###清空故障次数
    rm -f /tmp/${server_ip}_cur_time.txt
    ###状态码非200时
    else
    ###开始计算故障次数
    cur_time=0
    [ -s /tmp/${server_ip}_cur_time.txt ] && cur_time=`cat /tmp/${server_ip}_cur_time.txt`
    cur_time=`expr $cur_time + 1`
     
    ###当故障次数大于等于3时
    if [ $cur_time -gt 3 ];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 2>&1
    if [ -s /tmp/curl.txt ] && grep '200 OK' /tmp/curl.txt >/dev/null 2>&1;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
  • 相关阅读:
    sitemap
    sitemap
    sitemap
    微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
    微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
    微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
    微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
    HTML5 & CSS3初学者指南(2) – 样式化第一个网页
    HTML5 & CSS3初学者指南(2) – 样式化第一个网页
    django 登陆
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/3277740.html
Copyright © 2011-2022 走看看