linux 自动化部署dns服务器
1.首先配置主dns服务器的ip地址,dns地址一个写主dns的ip地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加记录。
2.配置从dns的ip地址
3.运行脚本,选择1,部署主dns服务器
4.运行完脚本之后,主dns就部署完成了,查看配置文件 /etc/named.conf
5.查看区域文件 区域文件在 /var/named/
6.本地测试主dns服务器是否部署成功
7.在从dns服务器上运行脚本,选择2,部署从dns服务
8.查看
9.查看 /var/named/slaves/目录下,可以看到生成两个文件,说明从dns配置成功,从主dns获得区域文件
10.在另一个客户端测试,在/etc/resolv.conf添加如下两条记录
11.测试,下图可以看到主、从dns都正常
源码如下:
#!/bin/bash
#该脚本用于自动化部署主dns服务器与从dns服务器
#作者:雨中落叶
#博客:https://www.cnblogs.com/yuzly/
echo "****************************
1.部署主dns服务器
2.部署从dns服务器
****************************"
read -p "请输入部署选项:" num
case $num in
1)
#关闭防火墙,避免影响实验
service iptables stop &>/dev/null
setenforce 0 &>/dev/null
named="/etc/named.conf"
#定义函数
alterdns(){
#配置主文件
rm -fr $named
touch $named
#获得本机ip
eth=$(ifconfig |grep "^eth" |awk '{print $1}')
lip=$(ifconfig $eth |grep "inet addr"|awk '{print $2}'|awk -f: '{print $2}')
read -p "请输入你要创建的正向区域名:" areaname
read -p "请输入从dns服务器的ip地址:" slaveip
fan=$(echo $lip |awk -f. '{print $3"."$2"."$1}')
cat >>$named<
options {
listen-on port 53 { $lip; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
allow-query { any; };
};
zone "." in {
type hint;
file "named.ca";
};
zone "$areaname" in {
type master;
file "$areaname.zone";
allow-transfer { $slaveip; };
};
zone "$fan.in-addr.arpa" in {
type master;
file "$fan.in-addr.arpa.zone";
allow-transfer { $slaveip; };
};
ok
#配置正向解析文件
touch /var/named/$areaname.zone
cat >>/var/named/$areaname.zone<
\$ttl 86400
@ in soa $areaname. admin.$areaname. (
2019032211 ; serial
1d ; refresh
1h ; retry
1w ; expire
3h ) ; minimum
@ in ns ns1.$areaname.
in ns ns2.$areaname.
in mx 10 mail.$areaname.
ns1 in a $lip
ns2 in a $slaveip
www in a $lip
mail in a $lip
news in cname www.$areaname.
ok
#配置反向解析文件
touch /var/named/$fan.in-addr.arpa.zone
fourthlip=$(echo $lip |awk -f. '{print $4}')
fourthslaveip=$(echo $slaveip |awk -f. '{print $4}')
cat >>/var/named/$fan.in-addr.arpa.zone<
\$ttl 86400
@ in soa $areaname. admin.$areaname. (
2019032211 ; serial
1d ; refresh
1h ; retry
1w ; expire
3h ) ; minimum
@ in ns ns1.$areaname.
in ns ns2.$areaname.
$fourthlip in ptr ns1.$areaname.
$fourthslaveip in ptr ns2.$areaname.
$fourthlip in ptr www.$areaname.
$fourthlip in ptr mail.$areaname.
$fourthlip in ptr news.$areaname.
ok
}
if [ ! -f $named ]
then
echo "当前电脑没有安装dns服务,正在安装,请稍等....."
mount /dev/sr0 /mnt &>/dev/null
#搭建本地yum仓库
cd /etc/yum.repos.d
cat >>yuzly.repo<
[yuzly]
name=yuzly
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-redhat-release
ok
yum install bind -y &>/dev/null
#调用函数
alterdns
service named start &>/dev/null
else
alterdns
service named start &>/dev/null
fi
;;
2)
#关闭防火墙
service iptables stop &>/dev/null
setenforce 0 &>/dev/null
#修改配置文件
#获得本机ip
eth=$(ifconfig |grep "^eth" |awk '{print $1}')
lip=$(ifconfig $eth |grep "inet addr"|awk '{print $2}'|awk -f: '{print $2}')
named="/etc/named.conf"
read -p "请输入主服务器创建的正向区域名:" areaname
read -p "请输入主dns服务器的ip地址:" ip
fan=$(echo $ip |awk -f. '{print $3"."$2"."$1}')
setarea(){
cat >>$named<
options {
listen-on port 53 { $lip; };
directory "/var/named";
allow-query { any; };
};
zone "$areaname" in {
type slave;
masters { $ip; };
file "slaves/$areaname.zone";
};
zone "$fan.in-addr.arpa" in {
type slave;
masters { $ip; };
file "slaves/$fan.in-addr.arpa.zone";
};
ok
service named start &>/dev/null
}
if [ ! -f $named ]
then
echo "当前电脑没有安装dns服务,正在安装,请稍等....."
mount /dev/sr0 /mnt &>/dev/null
#搭建本地yum仓库
cd /etc/yum.repos.d
cat >>yuzly.repo<
[yuzly]
name=yuzly
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-redhat-release
ok
yum install bind -y &>/dev/null
rm -fr $named
touch $named
#调用函数
setarea
else
rm -fr $named
touch $named
setarea
fi
;;
*)
echo "请输入正确的数字!"
;;
esac
-------------------------------------------------------------------------------------------------------
linux dns服务配置: