Linux 自动化部署DNS服务器
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服务器的更多相关文章
- Linux 自动化部署Rsyslog服务
Linux 自动化部署Rsyslog服务 源码如下: #/bin/bash #该脚本用于自动化部署Ryslog服务配置 #作者:雨中落叶 #博客:https://www.cnblogs.com/yuz ...
- Linux自动化部署尝试
Linux自动化部署尝试 最近做一个项目临近测试,购买的是阿里云的服务器,每次部署都是手动打包war,然后上传到服务器,然后修改配置文件,不仅繁琐,而且费时,就思索着找一个一键式的部署方式,今天终 ...
- Linux下部署FTP服务器
Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...
- Linux安装部署FTP服务器
Linux安装部署FTP服务器 本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚 ...
- Linux上部署web服务器并发布web项目-转
Linux上部署web服务器并发布web项目 近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...
- centos7 部署dns服务器
=============================================== 2017/12/6_第2次修改 ccb_warlock 20 ...
- Linux 学习之DNS服务器
概念: DNS:Domain Name System 域名系统 FQDN:Fully Qualified Domain Name 完整主机名 正向解析:由主机名查IP地址 SOA:开始验证(Start ...
- Linux 自动化部署
1.pexpect Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Py ...
- Linux上部署web服务器并发布web项目
近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一 ...
随机推荐
- iOS学习——图片压缩到指定大小以内
一.图片压缩简述 在我们开发过程中,有可能会遇到拍照.或者从相册中选择图片,要么单选或者多选,然后上传图片到服务器,一般情况下一张图片可能3-4M,如果类似微信朋友圈上传9张图片大约是 35M左右,如 ...
- 关于 redis.properties配置文件及rule
当你配置的 FinanceRlue 的path为/count/users时,redis.properties中就必须也配置一个/users=redis://localhost:6379/2?keyle ...
- 心路历程(一)-自学java两个月心得
这是我的第一条博文,在敲这些文字的时候我已经是一名大四的"老者".说自己"老者"确实如此,因为以前每当这个时候大一新学妹有上架了,哈哈,每当这个时候我们就想了很 ...
- 说一说MVC的过滤器(一)
在MVC项目中过滤器,最好把这些过滤器类放到一个文件夹中(Filters),然后过滤器文件的名称也是有规定的,格式应该为xxxAttribute,否则在控制器或控制器的方法中是无法进行调用过滤器的, ...
- Java 多线程(四)—— 单例模式
这篇博客介绍线程安全的应用——单例模式. 单例模式 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一 ...
- 关于ML.NET v0.7的发布说明
我们很高兴宣布推出ML.NET 0.7--面向.NET开发人员的最新版本的跨平台和开源机器学习框架(ML.NET 0.1发布于// Build 2018).此版本侧重于为基于推荐的ML任务提供更好的支 ...
- Android 开发工具类 19_NetworkStateReceiver
检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...
- 你安装的是SUN/Oracle JDK还是OpenJDK?
目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 2 什么是 OpenJDK 2.1 OpenJDK 的来历 2.2 Oracle JDK的来历 3 Orac ...
- C语言实现循环队列的初始化&进队&出队&读取队头元素&判空-2
/*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Si ...
- PE知识复习之PE的两种状态
PE知识复习之PE的两种状态 一丶熟悉PE的整体结构 从下面依次网上看.可以得出PE结构 其中DOS头有DOS头结构 也就是 IMAGE_DOS_HEADER 关于结构体的各项属性.前边已经写过了.本 ...