本文主要包含centos bind部署,centos bind,centos安装bind,centos 7 bind,bind dns等服务器相关知识,网友希望可以进行参考
最近研究DNS主从服务,也是参考了很多文章,这里记录一下,方便大家少走弯路,DNS服务可以算是Linux服务中比较难的一个了,尤其是配置文件书写,少一个字符都有可能造成错误。
那什么是DNS呢?简单的说就是完成域名到IP的解析过程。简洁的域名能让人们更方便记忆,不需要记那么长的IP访问某一个网站。
DNS解析过程到底是怎样的呢?
第一步:客户机访问某个网站,请求域名解析,首先查找本地HOST文件,如果有对应域名、IP记录,直接返回给客户机。如果没有则将该请求发送给本地的域名服务器:
第二步:本地DNS服务器能够解析客户端发来的请求,服务器直接将答案返回给客户机。
第三步:本地DNS服务器不能解析客户端发来的请求,分为两种解析方法
1、采用递归解析:本地DNS服务器向根域名服务器发出请求,根域名服务器对本地域名服务的请求进行解析,得到记录再给本地DNS服务器,本地DNS服务器将记录缓存,并将记录返给客户机。
2、采用迭代解析:本地DNS服务器向根域名服务器发出请求,根域名服务器返回给本地域名服务器一个能够解析请求的根的下一级域名服务器的地址,本地域名服务器在向根返回的IP地址发出请求,最终得到域名解析记录。
如上只是简单介绍了一下DNS相关知识,言归正传,如下通过脚本自动安装并添加域名解析,脚本可以根据自己的需求修改:脚本适用于CentOS x86_64 5.8系列)
#!/bin/sh
#auto install config bind server
#wugk 2013-08-28
#定义变量
BND_ETC=/var/named/chroot/etc
BND_VAR=/var/named/chroot/var/named
BAK_DIR=/data/backup/dns_`date +%Y%m%d-%H%M`
##Backup named server
if
[ ! -d $BAK_DIR ];then
echo "Please waiting Backup Named Config ............"
mkdir -p $BAK_DIR
cp -a /var/named/chroot/{etc,var} $BAK_DIR
cp -a /etc/named.* $BAK_DIR
fi
##Define Shell Install Function
Install ()
{
if
[ ! -e /etc/init.d/named ];then
rpm -e --nodeps bind-utils
rpm -e --nodeps bind-libs
rpm -e --nodeps bind
rpm -e bind-chroot
rpm -e caching-nameserver
rpm -ivh --nodeps bind-9.3.6-20.P1.el5_8.6.x86_64.rpm bind-chroot-9.3.6-20.P1.el5_8.6.x86_64.rpm bind-libs-9.3.6-20.P1.el5_8.6.x86_64.rpm bind-utils-9.3.6-20.P1.el5_8.6.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.6.x86_64.rpm
else
echo -------------------------------------------------
echo "The Named Server is exists ,Please exit ........."
sleep 1
fi
}
##Define Shell Init Function
Init_Config ()
{
cd $BND_ETC ;ls ./*
cp -p named.caching-nameserver.conf named.conf
sed -i -e 's/localhost;/any;/g' -e '/port/s/127.0.0.1/any/g' named.conf
echo -------------------------------------------------
sleep 2
echo "The named.conf config Init success !"
}
##Define Shell Add Name Function
Add_named ()
{
##DNS name
read -p "Please Insert Into Your Add Name ,Example 51cto.com :" NAME
echo $NAME |grep -E "com|cn|net|org"
while
[ "$?" -ne 0 ]
do
read -p "Please reInsert Into Your Add Name ,Example 51cto.com :" NAME
echo $NAME |grep -E "com|cn|net|org"
done
## IP address
read -p "Please Insert Into Your Name Server IP ADDress:" IP
echo $IP |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
while
[ "$?" -ne "0" ]
do
read -p "Please reInsert Into Your Name Server IP ADDress:" IP
echo $IP |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
done
ARPA_IP=`echo $IP|awk -F. '{print $3"."$2"."$1}'`
ARPA_IP1=`echo $IP|awk -F. '{print $4}'`
cd $BND_ETC
grep "$NAME" named.rfc1912.zones
if
[ $? -eq 0 ];then
echo "The $NAME IS exist named.rfc1912.zones conf ,please exit ..."
exit
else
read -p "Please Insert Into SLAVE Name Server IP ADDress:" SLAVE
echo $SLAVE |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
while
[ "$?" -ne "0" ]
do
read -p "Please Insert Into SLAVE Name Server IP ADDress:" SLAVE
echo $SLAVE |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
done
grep "rev" named.rfc1912.zones
if
[ $? -ne 0 ];then
cat >>named.rfc1912.zones <<EOF
#`date +%Y-%m-%d` Add $NAME CONFIG
zone "$NAME" IN {
type master;
file "$NAME.zone";
allow-transfer { $SLAVE; };
also-notify { $SLAVE; };
allow-update { none; };
};
zone "$ARPA_IP.in-addr.arpa" IN {
type master;
file "$ARPA_IP.rev";
allow-transfer { $SLAVE; };
also-notify { $SLAVE; };
allow-update { none; };
};
EOF
else
cat >>named.rfc1912.zones <<EOF
#`date +%Y-%m-%d` Add $NAME CONFIG
zone "$NAME" IN {
type master;
file "$NAME.zone";
allow-transfer { $SLAVE; };
also-notify { $SLAVE; };
allow-update { none; };
};
EOF
fi
fi
[ $? -eq 0 ]&& echo "The $NAME config name.rfc1912.zones success !"
sleep 3 ;echo "Please waiting config $NAME zone File ............."
cd $BND_VAR
read -p "Please insert Name DNS A HOST ,EXample www or mail :" HOST
read -p "Please insert Name DNS A NS IP ADDR ,EXample 192.168.111.130 :" IP_HOST
echo $IP_HOST |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
ARPA_IP2=`echo $IP_HOST|awk -F. '{print $3"."$2"."$1}'`
ARPA_IP3=`echo $IP_HOST|awk -F. '{print $4}'`
while
[ "$?" -ne "0" ]
do
read -p "Please Reinsert Name DNS A IPADDRESS ,EXample 192.168.111.130 :" IP_HOST
echo $IP_HOST |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
done
cat >$NAME.zone <<EOF
\$TTL 86400
@ IN SOA localhost. root.localhost. (
43 ; serial (d. adams)
1H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS $NAME.
EOF
REV=`ls *.rev`
ls *.rev >>/dev/null
if
[ $? -ne 0 ];then
cat >>$ARPA_IP.rev <<EOF
\$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022703 ; Ser

