欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux 自动化部署DNS服务器

程序员文章站 2022-06-11 08:45:32
Linux 自动化部署DNS服务器 1.首先配置主DNS服务器的IP地址,DNS地址一个写主dns的IP地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加记录。 2.配置从dns的IP地址 3. 运行脚本,选择1,部署主DNS服务器 4.运行完脚本之后, ......

linux 自动化部署dns服务器

1.首先配置主dns服务器的ip地址,dns地址一个写主dns的ip地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加记录。 Linux 自动化部署DNS服务器

2.配置从dns的ip地址

Linux 自动化部署DNS服务器

3. 运行脚本,选择1,部署主dns服务器 Linux 自动化部署DNS服务器  

4.运行完脚本之后,主dns就部署完成了,查看配置文件 /etc/named.conf Linux 自动化部署DNS服务器

5. 查看区域文件 区域文件在 /var/named/  Linux 自动化部署DNS服务器Linux 自动化部署DNS服务器

6.本地测试主dns服务器是否部署成功

 Linux 自动化部署DNS服务器

7. 在从dns服务器上运行脚本,选择2,部署从dns服务Linux 自动化部署DNS服务器

8.查看 Linux 自动化部署DNS服务器

9.查看 /var/named/slaves/目录下,可以看到生成两个文件,说明从dns配置成功,从主dns获得区域文件Linux 自动化部署DNS服务器

10.在另一个客户端测试,在/etc/resolv.conf添加如下两条记录

Linux 自动化部署DNS服务器

11. 测试,下图可以看到主、从dns都正常 Linux 自动化部署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<<ok
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<<ok
\$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<<ok
\$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<<ok
[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<<ok  
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<<ok
[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服务配置: