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; }; 分配的会更均匀。

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

 

 

 

 

 

相关文章
|
16天前
|
Prometheus 监控 关系型数据库
数据库同步革命:MySQL GTID模式下主从配置的全面解析
数据库同步革命:MySQL GTID模式下主从配置的全面解析
63 0
|
13天前
|
NoSQL 关系型数据库 应用服务中间件
jdk1.8、mysql、redis、nginx centos云服务器安装配置
jdk1.8、mysql、redis、nginx centos云服务器安装配置
|
23天前
|
域名解析 缓存 监控
【域名解析 DNS 专栏】解析失败的 DNS 重试策略与配置优化
【5月更文挑战第28天】DNS解析在数字化时代关键但常遇失败,可能由网络、服务器或域名错误引起。实施智能重试策略(如指数级增长的重试间隔)和配置优化(如选用可靠DNS服务器、设置缓存、监控预警)能提高成功率和系统稳定性。示例代码展示基本DNS重试函数,强调需按业务需求调整策略并配合监控以保证高效稳定的DNS解析。
|
24天前
|
域名解析 监控 负载均衡
【域名解析DNS专栏】智能DNS解析:自动选择最快服务器的奥秘
【5月更文挑战第27天】智能DNS解析是动态根据用户网络环境和服务器负载,选择最佳服务器的技术,提升用户体验。它通过实时监控服务器负载、网络延迟,运用负载均衡算法、地理位置识别和实时测试,自动选择最快服务器。伪代码展示了其基本工作流程,包括获取用户位置、计算服务器权重并选择最佳服务器进行域名解析。智能DNS解析优化了网络服务的稳定性和效率。
|
25天前
|
域名解析 网络协议 Ubuntu
【域名解析DNS专栏】搭建私有DNS服务器:从BIND到CoreDNS的选择
【5月更文挑战第26天】本文对比了两种流行的DNS服务器软件BIND和CoreDNS。BIND以其稳定性及丰富功能著称,广泛兼容各类平台,适合复杂环境;CoreDNS则以其高性能、模块化设计和易用性脱颖而出。根据需求、资源和技术水平,用户可选择适合自己的DNS服务器。安装示例包括BIND在Ubuntu上的apt安装及基本配置,以及CoreDNS的snap安装和YAML配置。
|
27天前
|
域名解析 缓存 网络协议
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器
【5月更文挑战第24天】DNS的根服务器和顶级域服务器在域名解析中起关键作用。根服务器是核心,负责提供顶级域服务器引用,维护顶级域列表;顶级域服务器管理如.com的域名,处理二级域名解析和管理。这两者影响解析速度、可靠性和安全性。了解它们有助于优化DNS配置和提升网站访问体验。
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器
|
29天前
|
域名解析 存储 缓存
【域名解析DNS专栏】动手实践:手动配置DNS解析记录
【5月更文挑战第22天】本文介绍了DNS解析记录的概念及其手动配置步骤。DNS解析记录是将域名映射到IP地址的数据,常见类型包括A(IPv4)、AAAA(IPv6)和CNAME(别名)。配置步骤包括登录DNS管理平台,添加记录,选择记录类型,填写主机记录和记录值,设置TTL值,并保存。以阿里云为例的A记录配置示例也提供了具体操作。了解这些有助于更好地管理域名。
【域名解析DNS专栏】动手实践:手动配置DNS解析记录
|
1月前
|
网络协议
阿里云服务器搭建DNS解析服务步骤
在阿里云搭建DNS解析服务,首先注册阿里云账号并购买适合的云服务器。获取服务器公网IP后,配置服务器并安装DNS软件如Bind9。接着设置DNS解析,包括定义顶级和子域名的指向。最后,通过ping测试或浏览器访问验证DNS解析功能是否正常。
|
1月前
|
Linux 网络安全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
|
1月前
|
网络协议 物联网 Linux
你不能不知道的:无公网IP,SSH远程连接CentOS服务器【内网穿透】
你不能不知道的:无公网IP,SSH远程连接CentOS服务器【内网穿透】

相关产品

  • 云解析DNS