1、配置正反解析
2、配置从属关系
目录
一、命令行配置
1、准备
下载bind 服务
关闭其他设置
2、修改配置文件
1、修改主配置
vim /etc/named.conf
2、修改辅助配置文件
vim /etc/named.rfc1912.zones
3、正向解析
1、将反向解析也注释掉
vim /etc/named.rfc1912.zones
2、生成正向解析文件
在 /var/named/ 中 将named.empty 模板文件复制并保留属主属组
3、编辑文件
vim wezzer.com.zones
4、运行DNS服务
5、修改DNS配置
vim /etc/resolv.conf
6、查看结果
使用另一台同一网段的主机
正向解析正确,反向解析(因为被注释,所以解析不了)
4、反向解析
vim /etc/named.rfc1912.zones 取消注释
1、生成反向解析文件
在 /var/named/ 中 将named.empty 模板文件复制并保留属主属组
2、配置反向解析文件
vim 192.168.11.zones
3、运行DNS服务
4、查看结果
使用另一台主机进行访问
正反解析均正确
5、从属配置
1、主配置
vim /etc/named.rfc1912.zones
2、从配置(另台主机)
vim /etc/named.conf
vim /etc/named.rfc1912.zones
重启服务
会生成相应的配置文件
3、测试
1、修改测试的DNS
2、将主的服务给关闭
3、使用测试机测试
结果成功
二、使用脚本配置
1、正反解析
DNS部署脚本
#!/bin/bash
# 检测是否安装服务
fun1(){
rpm -q bind >/dev/null
if ! [ $? -eq 0 ];then
echo "未安装bind,正在启动安装" >&2
yum install -y bind
fi
}
#关闭其他服务
systemctl disable --now firewalld >/dev/null
setenforce 0 >/dev/null
iptables -F >/dev/null
#获取要配置的IP区域
fun1
read -p "请输入要设置为域的IP:" ip_n
while true;do
#检测是不是可用ip
a=$(echo $ip_n | awk -F "." '!(NF==4 && $1>0 && $1<255 && $2>0 && $2<255 && $3>0 && $3<255 &&$4>0 && $4<255){print "无效ip"}')
if ! [[ -z "$a" ]];then
echo "无效ip,请重新输入" >&2
continue
else
break
fi
done
#将设置写入配置文件中
sed -i "s/allow-query { localhost; };/allow-query { any; };/g" /etc/named.conf
sed -i "s/listen-on port 53 { \([0-9.]\+\); };/listen-on port 53 { $ip_n; };/g" /etc/named.conf
echo "配置文件/etc/named.conf设置成功" >&2
#将IP拆分,方便写入配置文件中
ip_a=$(echo "$ip_n"| awk -F"." '{print $1}')
ip_b=$(echo "$ip_n"| awk -F"." '{print $2}')
ip_c=$(echo "$ip_n"| awk -F"." '{print $3}')
ip_d=$(echo "$ip_n" | awk -F"." '{print $4}')
#获取配置的域名服务器名称
read -p "请输入设置的域名服务器名称:" dns
#将DNS拆分,方便写入配置文件中
dns_a=$(echo "$name"| awk -F"." '{print $1}')
dns_b=$(echo "$name"| awk -F"." '{print $2}')
dns_c=$(echo "$name"| awk -F"." '{print $3}')
#将获得的配置写入文件中
echo -e "zone \""$dns_b"."$dns_c".\" IN {
type master;
file \""$dns_b"."$dns_c".zones\";
allow-update { none; };
};
zone \""$ip_c"."$ip_b"."$ip_a".in-addr.arpa\" IN {
type master;
file \""$ip_a"."$ip_b"."$ip_c".zones\";
allow-update { none; };
};" > /etc/named.rfc1912.zones
echo "配置文件/etc/named.rfc1912.zones 设置成功" >&2
#将模板复制,生成正向与反向解析文件
cp -p /var/named/named.empty /var/named/"$ip_a"."$ip_b"."$ip_c".zones
cp -p /var/named/named.empty /var/named/"$dns_b"."$dns_c".zones
#获取域名称别名
read -p "请输入域别名名称:" name
name_a=$(echo "$dns"| awk -F"." '{print $1}')
name_b=$(echo "$dns"| awk -F"." '{print $2}')
name_c=$(echo "$dns"| awk -F"." '{print $3}')
#获取邮箱ip
read -p "请输入邮箱ip地址:" ip_m
while true;do
#检测ip是否可用
b=$(echo $ip_m | awk -F "." '!(NF==4 && $1>0 && $1<255 && $2>0 && $2<255 && $3>0 && $3<255 &&$4>0 && $4<255){print "无效ip"}')
if ! [[ -z "$b" ]];then
echo "无效ip,请重新输入" >&2
continue
else
break
fi
done
ip_e=$(echo "$ip_m"| awk -F"." '{print $1}')
ip_f=$(echo "$ip_m"| awk -F"." '{print $2}')
ip_g=$(echo "$ip_m"| awk -F"." '{print $3}')
ip_h=$(echo "$ip_m"| awk -F"." '{print $4}')
echo "邮箱为:mail."$dns_b".com"
echo "其ip地址为:$ip_m"
#将结果写入正向解析文件
echo -e "\$TTL 3H
@ IN SOA "$dns_b"."$dns_c". mail."$dns_b".com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@\tNS\t"$dns".
"$dns_a"\tA\t"$ip_n"
"$name_a"\tCNAME\t"$dns".
mail\tA\t"$ip_m"
mail\tMX 10\tmail."$dns_b".com." > /var/named/"$dns_b"."$dns_c".zones
echo "正向解析文件/var/named/"$dns_b"."$dns_c".zones ,已生成" >&2
#将结果写入反向解析文件
echo -e "\$TTL 3H
@ IN SOA "$dns_b"."$dns_c". mail."$dns_b".com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@\tNS\t"$dns".
"$ip_d"\tPTR\t"$dns".
"$ip_d"\tPTR\t"$name".
"$ip_h"\tPTR\tmail."$dns_b".com."> /var/named/"$ip_a"."$ip_b"."$ip_c".zones
echo "反向解析文件/var/named/"$ip_a"."$ip_b"."$ip_c".zones,已生成" >&2
#中继配置
read -p "是否开启组从配置(y/n)" zi
case $zi in
y)
read -p "请输入从属ip地址" ip_pp
while true;do
#检测ip是否可用
c=$(echo $ip_pp | awk -F "." '!(NF==4 && $1>0 && $1<255 && $2>0 && $2<255 && $3>0 && $3<255 &&$4>0 && $4<255){print "无效ip"}')
if ! [[ -z "$c" ]];then
echo "无效ip,请重新输入" >&2
continue
else
break
fi
done
sed -i '/};/ {N; s/};\n};/};\n\tallow-transfer { $ip_pp; };\n};/; }' /etc/named.rfc1912.zones
echo "配置文件/etc/named.rfc1912.zones以修改"
;;
n)
;;
*)
;;
esac
#重启bind服务
systemctl restart named
echo "服务已重启" >&2
运行结果
要修改测试机的DNS,进行测试,结果
2、主从配置
从配置文件
#!/bin/bash
#关闭其他服务
systemctl disable --now firewalld >/dev/null
setenforce 0 >/dev/null
iptables -F >/dev/null
#获取要从的ip的区域
read -p "请输入要设置从的IP:" ip_n
while true;do
#检测是不是可用ip
a=$(echo $ip_n | awk -F "." '!(NF==4 && $1>0 && $1<255 && $2>0 && $2<255 && $3>0 && $3<255 &&$4>0 && $4<255){print "无效ip"}')
if ! [[ -z "$a" ]];then
echo "无效ip,请重新输入" >&2
continue
else
break
fi
done
#修改配置文件
sed -i "s/allow-query { localhost; };/allow-query { any; };/g" /etc/named.conf
sed -i "s/listen-on port 53 { \([0-9.]\+\); };/listen-on port 53 { $ip_n; };/g" /etc/named.conf
echo "配置文件/etc/named.conf设置成功" >&2
#获取主的ip及域名
read -p "请输入主的IP:" ip_m
read -p "请输入主的域名称:" dns_m
#将IP拆分,方便写入配置文件中
ip_a=$(echo "$ip_m"| awk -F"." '{print $1}')
ip_b=$(echo "$ip_m"| awk -F"." '{print $2}')
ip_c=$(echo "$ip_m"| awk -F"." '{print $3}')
ip_d=$(echo "$ip_m" | awk -F"." '{print $4}')
#将DNS拆分,方便写入配置文件中
dns_a=$(echo "$dns_m"| awk -F"." '{print $1}')
dns_b=$(echo "$dns_m"| awk -F"." '{print $2}')
dns_c=$(echo "$dns_m"| awk -F"." '{print $3}')
echo -e "zone \""$dns_b"."$dns_c".\" IN {
type slave;
file \"slaves/"$dns_b"."$dns_c".zones\";
masters { $ip_m; };
};
zone \""$ip_c"."$ip_b"."$ip_a".in-addr.arpa\" IN {
type slave;
file \"slave/"$ip_a"."$ip_b"."$ip_c".zones\";
masters { $ip_m; };
};" > /etc/named.rfc1912.zones
echo "配置文件/etc/named.rfc1912.zones修改成功" >&2
systemctl restart named
echo "DNS服务已经重启" >&2
配置结果
暂停主的DNS功能
测试结果