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 "****************************
.部署主dns服务器
.部署从dns服务器
****************************"
read -p "请输入部署选项:" Num
case $Num in
)
#关闭防火墙,避免影响实验
service iptables stop &>/dev/null
setenforce &>/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 { $lIP; };
listen-on-v6 port { ::; };
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
@ IN SOA $AreaName. admin.$AreaName. (
; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.$AreaName.
IN NS ns2.$AreaName.
IN MX 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
@ IN SOA $AreaName. admin.$AreaName. (
; 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=
gpgcheck=
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
;;
)
#关闭防火墙
service iptables stop &>/dev/null
setenforce &>/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 { $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=
gpgcheck=
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服务配置:https://www.cnblogs.com/yuzly/p/10581688.html 

Linux 自动化部署DNS服务器的更多相关文章

  1. Linux 自动化部署Rsyslog服务

    Linux 自动化部署Rsyslog服务 源码如下: #/bin/bash #该脚本用于自动化部署Ryslog服务配置 #作者:雨中落叶 #博客:https://www.cnblogs.com/yuz ...

  2. Linux自动化部署尝试

    Linux自动化部署尝试   最近做一个项目临近测试,购买的是阿里云的服务器,每次部署都是手动打包war,然后上传到服务器,然后修改配置文件,不仅繁琐,而且费时,就思索着找一个一键式的部署方式,今天终 ...

  3. Linux下部署FTP服务器

    Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...

  4. Linux安装部署FTP服务器

    Linux安装部署FTP服务器   本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚 ...

  5. Linux上部署web服务器并发布web项目-转

    Linux上部署web服务器并发布web项目   近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...

  6. centos7 部署dns服务器

    =============================================== 2017/12/6_第2次修改                       ccb_warlock 20 ...

  7. Linux 学习之DNS服务器

    概念: DNS:Domain Name System 域名系统 FQDN:Fully Qualified Domain Name 完整主机名 正向解析:由主机名查IP地址 SOA:开始验证(Start ...

  8. Linux 自动化部署

    1.pexpect Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Py ...

  9. Linux上部署web服务器并发布web项目

    近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一 ...

随机推荐

  1. Mac下 .bash_profile 和 .zshrc 两者之间的区别

    这是我碰到的需要 source 之后才能使用环境变量的问题,我就不细究了,说说我的看法. .bash_profile 中修改环境变量只对当前窗口有效,而且需要 source ~/.bash_profi ...

  2. PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘

    5 月 19.20 日,行业精英齐聚的 WebRTCon 2018 在上海举办.又拍云 PrismCDN 项目负责人凌建发在大会做了<又拍云低延时的 WebP2P 直播实践>的精彩分享. ...

  3. curl zip上传并且解压

     上传文件: /** * 上传文件 * @param string $file 文件路径 */ function FileUpload($file){ $data = array('file'=> ...

  4. 华为oj之字符串反转

    题目: 字符串反转 热度指数:4940 时间限制:1秒 空间限制:32768K 本题知识点: 字符串 题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如: 输入描述: 输入N ...

  5. peewee insert 数据时报错:'buffer' object has no attribute 'translate'

    错误信息: "'buffer' object has no attribute 'translate'" 场景:使用peewee insert 数据时,BlobField 字段存储 ...

  6. Paramiko模块简单使用

    介绍 Paramiko 一个第三方包,需要单独安装我们知道远程批量主机管理,比如ansible.Fabric,不需要安装客户端的远程执行命令等,这些都是基于Python原生的SSH,相当于模拟了一个S ...

  7. Spring Boot分布式系统实践【2】-框架搭建

    前言 技术选型已经做完,那就来搭建框架了. 首先基于mvc思想,设计这套框架也是基于此,也会设计Dao层.Service层.Controller层.视图层等,同时也要考虑到dubbo的调用原理.   ...

  8. 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)

    本文主要介绍了自适应的中值滤波器,并基于OpenCV实现了该滤波器,并且将自适应的中值滤波器和常规的中值滤波器对不同概率的椒盐噪声的过滤效果进行了对比.最后,对中值滤波器的优缺点了进行了总结. 空间滤 ...

  9. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  10. Go语言系列文章

    这个系列写的不是很好,未来重构. Go基础系列 Go基础 Go基础 1.Go简介 2.Go数据结构struct 3.构建Go程序 4.import导包和初始化阶段 5.array 6.Slice详解 ...