bind部署和添加解析记录为一体,一键执行脚本,这是重新写了一个脚本,之前那个不能兼容Ubuntu,现在可以了
还支持后续添加域名解析,但不支持批量
脚本下载链接
#!/bin/bash
#
#********************************************************************
#Author: chenjiahao
#QQ: 1938191576
#Date: 2022-11-06
#FileName: install_DNS.sh
#URL: https://www.placjh.com
#Description: The deploy script
#Copyright (C): 2022 All rights reserved
#********************************************************************
RECORD=www
DOMAIN_NAME=chen.com
VLUE=10.0.0.11
LOCALHOST=`hostname -I|awk '{print $1}'`
TIME=`date +%F:%T|sed -e 's/-//g' -e 's/://g'`
NUMBER=`echo ${TIME:2:10}`
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
. /etc/os-release
install(){
if [ $ID = "centos" -o $ID = "rocky" ];then
if [ ! -f /etc/named.rfc1912.zones ];then
echo "安装bind"
yum -y install bind bind-utils &>/dev/null
systemctl enable --now named &>/dev/null
if [ $? -eq 0 ];then
color 安装完毕 0
else
color 安装失败,请重试 1
fi
fi
elif [ $ID = "ubuntu" ];then
if [ ! -f /etc/bind/named.conf.default-zones ];then
echo "安装bind"
apt update &>/dev/null
apt -y install bind9 bind9-utils &>/dev/null
if [ $? -eq 0 ];then
color 安装完毕 0
else
color 安装失败,请重试 1
fi
fi
else
color 不支持的OS 1
exit
fi
}
configuration(){
if [ $ID = "centos" -o $ID = "rocky" ];then
sed -i '/listen-on port 53/s/127.0.0.1/localhost/' /etc/named.conf
sed -i '/allow-query/s/localhost/any/' /etc/named.conf
sed -i '/dnssec/s/yes/no/' /etc/named.conf
elif [ $ID = "ubuntu" ];then
sed -i '/dnssec-validation/s/auto/no/' /etc/bind/named.conf.options
fi
}
add(){
if [ $ID = "centos" -o $ID = "rocky" ];then
grep $DOMAIN_NAME /etc/named.rfc1912.zones &>/dev/null
if [ ! $? -eq 0 ];then
echo "定义区域解析库文件"
cat >> /etc/named.rfc1912.zones <<-EOF
zone "$DOMAIN_NAME" IN {
type master;
file "$DOMAIN_NAME.zone";
};
EOF
fi
if [ ! -f /var/named/$DOMAIN_NAME.zone ];then
echo "创建区域数据库"
cat > /var/named/$DOMAIN_NAME.zone <<-EOF
\$TTL 600
@ 600 IN SOA master dns.$DOMAIN_NAME. ( $NUMBER 3H 10M 1D 1W )
@ 600 IN NS master
master A $LOCALHOST
$RECORD 600 IN A $VLUE
EOF
chgrp named /var/named/$DOMAIN_NAME.zone
else
echo "添加记录"
cat >> /var/named/$DOMAIN_NAME.zone <<-EOF
$RECORD 600 IN A $VLUE
EOF
sed -i "s/`sed -n '/SOA/p' /var/named/$DOMAIN_NAME.zone|awk '{print $8}'`/$NUMBER/" /var/named/$DOMAIN_NAME.zone
fi
elif [ $ID = "ubuntu" ];then
grep $DOMAIN_NAME /etc/bind/named.conf.default-zones &>/dev/null
if [ ! $? -eq 0 ];then
echo "定义区域解析库文件"
cat >> /etc/bind/named.conf.default-zones <<-EOF
zone "$DOMAIN_NAME" IN {
type master;
file "/etc/bind/$DOMAIN_NAME.zone";
};
EOF
fi
if [ ! -f /etc/bind/$DOMAIN_NAME.zone ];then
echo "创建区域数据库"
cat > /etc/bind/$DOMAIN_NAME.zone <<-EOF
\$TTL 600
@ 600 IN SOA master dns.$DOMAIN_NAME. ( $NUMBER 3H 10M 1D 1W )
@ 600 IN NS master
master A $LOCALHOST
$RECORD 600 IN A $VLUE
EOF
chgrp bind /etc/bind/$DOMAIN_NAME.zone
else
echo "添加记录"
cat >> /etc/bind/$DOMAIN_NAME.zone <<-EOF
$RECORD 600 IN A $VLUE
EOF
sed -i "s/`sed -n '/SOA/p' /etc/bind/$DOMAIN_NAME.zone|awk '{print $8}'`/$NUMBER/" /etc/bind/$DOMAIN_NAME.zone
fi
fi
}
check(){
echo "检查语法"
named-checkconf &>/dev/null
if [ $ID = "centos" -o $ID = "rocky" ];then
named-checkzone $DOMAIN_NAME /var/named/$DOMAIN_NAME.zone &>/dev/null
elif [ $ID = "ubuntu" ];then
named-checkzone $DOMAIN_NAME /etc/bind/$DOMAIN_NAME.zone &>/dev/null
fi
if [ $? -eq 0 ];then
color 完成 0
else
color 配置解析失败 1
exit
fi
rndc reload &>/dev/null
}
install
configuration
add