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都正常 

源码如下:  

  1. #!/bin/bash
  2. #该脚本用于自动化部署主DNS服务器与从DNS服务器
  3. #作者:雨中落叶
  4. #博客:https://www.cnblogs.com/yuzly/
  5. echo "****************************
  6. .部署主dns服务器
  7. .部署从dns服务器
  8. ****************************"
  9. read -p "请输入部署选项:" Num
  10. case $Num in
  11. )
  12. #关闭防火墙,避免影响实验
  13. service iptables stop &>/dev/null
  14. setenforce &>/dev/null
  15. named="/etc/named.conf"
  16. #定义函数
  17. alterDNS(){
  18. #配置主文件
  19. rm -fr $named
  20. touch $named
  21. #获得本机IP
  22. ETH=$(ifconfig |grep "^eth" |awk '{print $1}')
  23. lIP=$(ifconfig $ETH |grep "inet addr"|awk '{print $2}'|awk -F: '{print $2}')
  24. read -p "请输入你要创建的正向区域名:" AreaName
  25. read -p "请输入从DNS服务器的IP地址:" slaveIP
  26. fan=$(echo $lIP |awk -F. '{print $3"."$2"."$1}')
  27. cat >>$named<<OK
  28. options {
  29. listen-on port { $lIP; };
  30. listen-on-v6 port { ::; };
  31. directory "/var/named";
  32. allow-query { any; };
  33. };
  34. zone "." IN {
  35. type hint;
  36. file "named.ca";
  37. };
  38. zone "$AreaName" IN {
  39. type master;
  40. file "$AreaName.zone";
  41. allow-transfer { $slaveIP; };
  42. };
  43. zone "$fan.in-addr.arpa" IN {
  44. type master;
  45. file "$fan.in-addr.arpa.zone";
  46. allow-transfer { $slaveIP; };
  47. };
  48. OK
  49. #配置正向解析文件
  50. touch /var/named/$AreaName.zone
  51. cat >>/var/named/$AreaName.zone<<OK
  52. \$TTL
  53. @ IN SOA $AreaName. admin.$AreaName. (
  54. ; serial
  55. 1D ; refresh
  56. 1H ; retry
  57. 1W ; expire
  58. 3H ) ; minimum
  59. @ IN NS ns1.$AreaName.
  60. IN NS ns2.$AreaName.
  61. IN MX mail.$AreaName.
  62. ns1 IN A $lIP
  63. ns2 IN A $slaveIP
  64. www IN A $lIP
  65. mail IN A $lIP
  66. news IN CNAME www.$AreaName.
  67. OK
  68. #配置反向解析文件
  69. touch /var/named/$fan.in-addr.arpa.zone
  70. fourthlIP=$(echo $lIP |awk -F. '{print $4}')
  71. fourthslaveIP=$(echo $slaveIP |awk -F. '{print $4}')
  72. cat >>/var/named/$fan.in-addr.arpa.zone<<OK
  73. \$TTL
  74. @ IN SOA $AreaName. admin.$AreaName. (
  75. ; serial
  76. 1D ; refresh
  77. 1H ; retry
  78. 1W ; expire
  79. 3H ) ; minimum
  80. @ IN NS ns1.$AreaName.
  81. IN NS ns2.$AreaName.
  82. $fourthlIP IN PTR ns1.$AreaName.
  83. $fourthslaveIP IN PTR ns2.$AreaName.
  84. $fourthlIP IN PTR www.$AreaName.
  85. $fourthlIP IN PTR mail.$AreaName.
  86. $fourthlIP IN PTR news.$AreaName.
  87. OK
  88. }
  89. if [ ! -f $named ]
  90. then
  91. echo "当前电脑没有安装DNS服务,正在安装,请稍等....."
  92. mount /dev/sr0 /mnt &>/dev/null
  93. #搭建本地yum仓库
  94. cd /etc/yum.repos.d
  95. cat >>yuzly.repo<<OK
  96. [yuzly]
  97. name=yuzly
  98. baseurl=file:///mnt
  99. enabled=
  100. gpgcheck=
  101. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  102. OK
  103. yum install bind -y &>/dev/null
  104. #调用函数
  105. alterDNS
  106. service named start &>/dev/null
  107. else
  108. alterDNS
  109. service named start &>/dev/null
  110. fi
  111. ;;
  112. )
  113. #关闭防火墙
  114. service iptables stop &>/dev/null
  115. setenforce &>/dev/null
  116. #修改配置文件
  117. #获得本机IP
  118. ETH=$(ifconfig |grep "^eth" |awk '{print $1}')
  119. lIP=$(ifconfig $ETH |grep "inet addr"|awk '{print $2}'|awk -F: '{print $2}')
  120.  
  121. named="/etc/named.conf"
  122. read -p "请输入主服务器创建的正向区域名:" AreaName
  123. read -p "请输入主DNS服务器的IP地址:" IP
  124. fan=$(echo $IP |awk -F. '{print $3"."$2"."$1}')
  125. setArea(){
  126. cat >>$named<<OK
  127. options {
  128. listen-on port { $lIP; };
  129. directory "/var/named";
  130. allow-query { any; };
  131. };
  132. zone "$AreaName" IN {
  133. type slave;
  134. masters { $IP; };
  135. file "slaves/$AreaName.zone";
  136. };
  137. zone "$fan.in-addr.arpa" IN {
  138. type slave;
  139. masters { $IP; };
  140. file "slaves/$fan.in-addr.arpa.zone";
  141. };
  142. OK
  143. service named start &>/dev/null
  144. }
  145. if [ ! -f $named ]
  146. then
  147. echo "当前电脑没有安装DNS服务,正在安装,请稍等....."
  148. mount /dev/sr0 /mnt &>/dev/null
  149. #搭建本地yum仓库
  150. cd /etc/yum.repos.d
  151. cat >>yuzly.repo<<OK
  152. [yuzly]
  153. name=yuzly
  154. baseurl=file:///mnt
  155. enabled=
  156. gpgcheck=
  157. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  158. OK
  159. yum install bind -y &>/dev/null
  160. rm -fr $named
  161. touch $named
  162. #调用函数
  163. setArea
  164. else
  165. rm -fr $named
  166. touch $named
  167. setArea
  168. fi
  169. ;;
  170. *)
  171. echo "请输入正确的数字!"
  172. ;;
  173. 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. SCOI2019 退役记

    退役了.D2没有翻盘,愉快出队,文化课见. 19年4月14日:某校第一届的最后一名OIer退出竞赛. 留坑. 万一退役失败了呢

  2. 【从零开始自制CPU之学习篇04】电容

    电解电容: 多数在1μF以上,直接用数字表示.如:4.7μF.100μF.220μF等等.这种电容的两极有正负之分,长脚是正极. 独石电容: 独石电容器是多层陶瓷电容器的别称, 简称MLCC 读数方法 ...

  3. 说一说MVC的CSRF(三)

    用途:防止CSRF(跨网站请求伪造). 用法:在View->Form表单中:<%:Html.AntiForgeryToken()%> 在Controller->Action动作 ...

  4. 关于ML.NET v1.0 RC的发布说明

    ML.NET是面向.NET开发人员的开源和跨平台机器学习框架(Windows,Linux,macOS).使用ML.NET,开发人员可以利用他们现有的工具和技能组,通过为情感分析,推荐,图像分类等常见场 ...

  5. [MySQL]支持 emoji(字符集问题)

    问题的根源 主要问题就是在字符集,一般解决这种问题都是靠试验.我实验了一通,得出的结论和大家分享一下(如有错误,还望指正): 数据库的字符集 数据库连接的字符集 配置方法 设置数据库的字符集为utf8 ...

  6. dnSpy 强大的.Net反编译软件

    作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy ...

  7. 海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践

    1. 概述 数据服务(https://ds-cn-shanghai.data.aliyun.com)  是DataWorks产品家族的一员,提供了快速将数据表生成API的能力,通过可视化的向导,一分钟 ...

  8. Docker Compose 引用环境变量

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...

  9. InterLocked学习笔记

    在进行多线程编程的时候特别重要的一点就是多线程的同步,什么是同步呢?字面意思就是使多个不在同一线程执行的代码统一到一个线程中执行,但是对执行中的线程过程却无法控制,这就造成了多个线程可能同时操作同一个 ...

  10. Php中的goto用法

    我们先举个简单示例: <?php goto LABEL; //这个标签自定义 echo '乔峰'; LABEL: echo '鸠摩智'; 以上例程会输出:鸠摩智 解释:goto 操作符可以用来跳 ...