CentOS7自动安装Bind服务器shell脚本

#!/bin/bash
####################################################################
# Auto install bind
# Create Date :  2018-05-31
# Written by :风花
# Organization:  hbgslz.com
####################################################################

DOMAIN_NAME=`hostname|  awk -F. '{print $2"."$3}'`
HOSTNAME=`hostname|awk -F. '{print $1}'`
IN_Face=`route -n |awk '{if($4~/UG/){print $8}}'|head -n 1`
Local_IP=`nmcli device show "$IN_Face" | grep IP4.ADDRESS | awk '{print $2}' | awk -F/ '{print $1}'`
IP_Arp_01=`echo $Local_IP |  awk -F. '{print $3}'`
IP_Arp_02=`echo $Local_IP |  awk -F. '{print $2}'`
IP_Arp_03=`echo $Local_IP |  awk -F. '{print $1}'`

cd /tmp/
yum -y install bind-utils bind  >>/tmp/init_sn.log -y || exit 1
  # ***config /etc/named.conf***
cat << named_conf  > /etc/named.conf
options {
        //listen-on port 53 { 192.168.100.27; };  #指定监听IP和端口,可以指定多个IP
        //listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };       #允许查询的客户端列表
        //allow-recursion { localhost;192.168.100.0/24;192.168.200.0/24; };       #运行通过本服务器递归查询的客户端列表
        //forward first;          #转发模式,first选项代表首先查询forwarders中的DNS服务器,如果查询失败,则从根服务器开始递归查询(需要定义zone "."区域),only选项代表只查询forwarders中的服务>器,如果查询失败也不会继续从根服务器进行递归查询
        forwarders { 114.114.114.114;8.8.8.8; };

/* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;          #允许递归查询,如果删除该行,即为迭代查询

dnssec-enable yes;      #DNSSEC相关选项,国内的DNS服务器基本没有配置DNSSEC,因此关闭,保持默认开启也没影响
        dnssec-validation yes;

/* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";

pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "/var/log/named/named.log" versions 55 size 10m;
                severity dynamic;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category queries { default_debug; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

named_conf

# ***config /etc/named.rfc1912.zones***
cat << named_rfc1912_zones  > /etc/named.rfc1912.zones
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; };
};

//正向解析
zone "$DOMAIN_NAME" IN {
        type master;    #主服务器
        file "$DOMAIN_NAME.zone";         #区域解析文件,位于CHROOT-PATH/var/named/
        notify yes;     #定时通知从服务器刷新区域信息,时间间隔为区域解析文件中的refresh值
};

//反向解析
zone "$IP_Arp_01.$IP_Arp_02.$IP_Arp_03.in-addr.arpa" IN {
        type master;
        file "$IP_Arp_01.$IP_Arp_02.$IP_Arp_03.in-addr.arpa.zone";
        notify yes;
};

named_rfc1912_zones

# ***config  /var/named/hbgsyl.com.zone***
cat << domain_com_zone  >  /var/named/hbgsyl.com.zone
\$TTL 1D
@       IN SOA  @ $DOMAIN_NAME. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       $Local_IP

domain_com_zone

# ***config  /var/named/`$IP_Arp_01`.`$IP_Arp_02`.`$IP_Arp_03`.in-addr.arpa.zone***
cat << arpa_zone  >  /var/named/$IP_Arp_01.$IP_Arp_02.$IP_Arp_03.in-addr.arpa.zone
\$TTL 1D
@       IN SOA  @ $DOMAIN_NAME. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       $Local_IP
        PTR     $HOSTNAME. 
arpa_zone

if [ ! -d "/var/log/named" ];
    then
        mkdir /var/log/named
else
    break
fi

chown -R named.named  /var/log/named
chown -R named.named  /var/named
systemctl enable named.service
systemctl start named.service

#check install status.
check_cmd=`nslookup "$DOMAIN_NAME" | echo $?`
if [ "${check_cmd}" == "0" ];
then
  echo "<OK!> install bind successful!"
  /etc/init.d/network restart 
  exit 5
else
  echo "<ERROR!> Please install bind again!"
fi

原文地址:http://blog.51cto.com/hbgslz/2122383

时间: 2024-11-08 17:39:15

CentOS7自动安装Bind服务器shell脚本的相关文章

RHEL自动安装zookeeper的shell脚本

RHEL自动安装zookeeper的shell脚本 A:本脚本运行的机器,Linux RHEL6 B,C,D,...:待安装zookeeper cluster的机器, Linux RHEL6 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装zk的机器B,C,D,...上,然后就可以在A上运行本脚本: $ ./install_zookeeper 前提: B, C, D机器必须配置好repo,本脚本使用的是cdh5的repo, 下面的内容保存到:/etc/yum.repos.d/cloude

Linux自动安装JDK的shell脚本

Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本: $ ./install-jdk.sh B的IP or: $ ./install-jdk.sh "B的IP" "JDK的URI" 就可以在机器B上安装JDK.jdk使用的tar包需要用户自己设定DEFAULT_JDK_SRC=?,保证可以wget得到即可

自动安装zabbix客户端shell脚本

一般工作中要部署新服务器,部署完成还要添加zabbix监控,所以安装zabbix客户端是很频繁的,我这里写了一个简单的自动安装脚本,不是很完善,但也可以平时拿来用. 脚本运行的时候可能会出来一些错误,可以看终止时的错误信息,很可能是缺少相关的包,根据信息安装包再重新运行即可. 注意修改配置的内容,要根据实际情况做相应的修改,比如server和hostname,server是服务端的ip,根据实际情况配置,hostname我这里设置的是客户端自己的ip,也可以根据自身情况修改.在获取本地ip时,这

Linux生产服务器Shell脚本分享

Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于PHP这些开发语言而言,shell主要用于数据库备份(SVN备份).计划任务(crontab).服务状态监控.FTP远程备份等.对于这些任务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一.现在在Windows 2008里也出现了Power

一个简单的监控网站是否正常并自动重启服务的shell脚本

#!/bin/sh if [ -z "`curl --connect-timeout 15 --max-time 20 --head --silent http://localhost/index.php|head -n 1|grep '200'`" ];then echo -e "$(date +%Y-%m-%d)\n" killall nginx killall php-fpm /usr/local/nginx/sbin/nginx -c conf/nginx.

一键安装MySQL 主从复制SHELL脚本

脚本思路: 在从库上远程备份主库数据,再在从库上进行数据恢复,同时启动从库. 环境: CentOS6.5 已安装MySQL多实例,端口为3306 ,3307. 现通过自动安装主从脚本将两实例做主从复制. #!/bin/bash . /etc/rc.d/init.d/functions if [ $# -ne 0 ];then    echo "Usage:sh `basename $0`"    exit 1 fi #MASTER VARIABLES MASTER_USER=root

linux (centos) 安装tomcat (用shell脚本安装为服务)

1.下载tomcat 从http://tomcat.apache.org/download-70.cgi链接下载linux版本(tar.gz) 2.解压,上传及赋权限 解压,用WinSCP把解压的安装文件上传到/home/software/tomcat目录 并用   chmod -R 755 /home/software/tomcat命令账权限. 3.编写安装为服务的脚本并运行 shell脚本如下: #! /bin/sh #shell script takes care of starting

ping主机的ip地址,判断以及自动安装sysstat软件包 等脚本

ping主机的ip地址.返回结果 vi pinghost.sh #!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is up." else echo "Host $1 is down." fi sh pinghost.sh ip地址 判断分数所在的区间,给出不同的分档结果 #!/bin/bash read -p "请输入您的

在CentOS7上安装ftp服务器用于保存服务端上传的图片。

1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftpd服务 [[email protected] /]# rpm -aq vsftpd 返回结果显示: vsftpd-3.0.2-21.el7.x86_64 #此处是查找vsftpd的返回结果 表示此服务期之前已经安装过vsftpd服务. 1.2 删除查找到的vsftpd服务 注:在卸载vsftpd之前,先停止vsftpd [[email protected] /