DNS(Domain Name System,域名系统),其主要作用是将主机名解析为IP地址的过程,完成了从域名到主机识别ip地址之间的转换
- DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网;
- DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这就减轻了DNS服务器的负载,同时也方便记录的更新同步
脚本内容
#!/bin/bash
#function: DNS服务部署
#author: tommyxie 20230328
############防火墙与高级权限##########
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && echo "关闭selinux"
##安装##
yum -y install bind*
##################判断安装是否成功########################
if
[ $? = 0 ]
then
echo "dns安装成功!"
else
echo "dns安装失败,即将退出!"
exit 0
fi
##########################配置文件########################
cp /etc/named.conf /etc/named.conf.bak
sed -i '13s/{ 127.0.0.1; }/{ any; }/g' /etc/named.conf
sed -i '21s/{ localhost; }/{ any; }/g' /etc/named.conf
########################################################
a=$(ip a | grep "inet "|grep "ens33" | awk '{print $2}' | awk -F / '{print $1}')
b=$(ip route | awk '/default/ {print $3}')
read -ep "请输入域名:" c
read -ep "请输入反向解析域名:" d
e=$(echo $a | awk -F '.' '{print $3"."$2"."$1}')
f=$(echo $a | awk -F '.' '{print $1"."$2"."$3}')
##########################配置文件########################
mv /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
cat >> /etc/named.rfc1912.zones << EOF
zone "$e.in-addr.arpa" IN {
type master;
file "$d.com.zone";
};
zone "$c.com" IN {
type master;
file "$c.com.zone";
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
EOF
#######################服务端网卡配置###################
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
cat >> /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9c870e77-cb8f-41fa-bac7-570bc2e2e342
DEVICE=ens33
ONBOOT=yes
IPV6_PRIVACY=no
IPADDR=$a
PREFIX=24
GATEWAY=$b
DNS1=$a
EOF
################################配置文件##########################
cat >> /var/named/$c.com.zone << EOF
\$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A $a
www A $f.80
ftp A $f.21
mail A $f.25
EOF
############################反向解析文件配置#########################
cat >> /var/named/$d.com.zone << EOF
\$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A $a
80 IN PTR www.$d.com.
21 IN PTR ftp.$d.com.
25 IN PTR mail.$d.com.
EOF
#####开启服务#####
systemctl start named && systemctl enable named
if
[ $? = 0 ]
then
echo "dns服务成功开启!"
else
echo "dns服务开启失败,即将退出!"
exit 0
fi
systemctl restart network