【Linux网络】1分钟使用shell脚本完成DNS主从解析服务器部署(适用于centos主机)

news2024/11/22 10:41:59

DNS正向解析+主从解析服务器脚本

1、脚本内容

主服务器脚本

#!/bin/bash
##先修改本地DNS缓存服务器
read -p "请输入主服务器ip地址:" masterIP
sed -i '/DNS/d' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "DNS=$masterIP" >> /etc/sysconfig/network-scripts/ifcfg-ens33 
systemctl restart network

##安装
yum install bind bind-utils -y
##修改主配置文件
sed -i '13s/^/\/\//' /etc/named.conf
sed -i '21s/localhost/any/g' /etc/named.conf

##修改区域配置文件
read -p "请输入您需要解析的域名:"  NS
sed -i '24azone "'$NS'" IN {\n    type master;\n    file "'$NS'.zone";\n};' /etc/named.rfc1912.zones

##修改区域数据库配置文件
cd /var/named/
cp -a named.localhost $NS.zone
sed -i '2s/@/master/2' /var/named/$NS.zone
sed -i '/NS/s/@/master/g' /var/named/$NS.zone
sed -i '9s/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/'$masterIP'/' /var/named/$NS.zone
sed -i '/AAAA/d' /var/named/$NS.zone
read -p "请输入slave主机ip地址:" slaveIP
sed -i '9a \   NS  slave  \nslave A '$slaveIP'' /var/named/$NS.zone 
sed -i '11awww A  '$masterIP'\n\*  A    '$masterIP'' /var/named/$NS.zone
systemctl start named

从服务器脚本

#!/bin/bash
##先修改本地DNS缓存服务器
read -p "请输入主服务器ip地址:" masterIP
read -p "请输入从服务器ip地址:" slaveIP
sed -i '/DNS/d' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "DNS1=$masterIP" >> /etc/sysconfig/network-scripts/ifcfg-ens33 
echo "DNS2=$slaveIP" >> /etc/sysconfig/network-scripts/ifcfg-ens33 
systemctl restart network

##安装
yum install bind bind-utils -y
##修改主配置文件
sed -i '13s/^/\/\//' /etc/named.conf
sed -i '21s/localhost/any/g' /etc/named.conf

##修改区域配置文件
read -p "请输入您需要解析的域名:"  NS
sed -i '24azone "'$NS'" IN {\n    type slave;\n    file "slaves/'$NS'.zone";\n  masters { '$masterIP'; };\n};' /etc/named.rfc1912.zones

systemctl start named

2、编写脚本步骤

第一遍:先手动敲一遍,测试命令是否正确,并思考如何转化为脚本;
第二遍:用sed流编辑器,一句一句将上诉的vim替换成sed命令实现,进行记录;
第三遍:把第二遍的命令结合组合起来,进行测试;

3、语法新发现及易错点

##当脚本执行出现故障时,再次使用脚本,会在区域配置文件/etc/named.rfc1912.zones中重复添加对应关系,这是不行的,不可重复添加
解决思路:每次跑脚本前保证环境干净,卸载bind从头开始

##关于数据库文件的语法新发现
第一行其实可以不改,两个@可以并存,都表示域名本身,也可以用sed -i '2s/@/master/2'替换第二个@为master
关于NS slave,这里是NS前面必须必须有空格!!,sed -i '9a \   NS  slave  \nslave A '$slaveIP''中的\  表示空格

4、知识盲区与改进方向

##该脚本缺少对交互输入的变量值进行判断,万一写错了咋办?(不会判断)

##关于数据库用sed输入的时候有个知识点
sed -i '9a \   NS  slave  \nslave A '$slaveIP'' /var/named/$NS.zone 
为什么改为10a就不行,后来测试的原因判断是因为当时文本只有9行,从第10行的下一行写就不可以

5、实验测试

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1209476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

electronjs入门-编辑器应用程序

我们将在Electron中创建一个新项目,如我们在第1章中所示,名为“编辑器”,我们将在下一章中使用它来创建编辑器;在index.js中,这是我们的主要过程;请记住为Electron软件包放置必要的依赖项: npm…

【MediaFoundation】相关的概念

MF 概览 Media Foundation 提供了两种不同的编程模型,左边展示的是端到端的媒体数据模型,主要用在:播放URL或者文件,以及控制流。 在图表右侧展示的第二种模型中,应用程序可以从源头拉取数据,也可以将数据…

代号:408 —— 1000道精心打磨的计算机考研题

文章目录 📋前言🎯计算机科学与技术专业介绍(14年发布)🧩培养目标🧩毕业生应具备的知识和能力🧩主要课程 🎯代号:408🔥文末送书🧩有什么优势&…

量化交易:使用 python 进行股票交易回测

执行环境: Google Colab 1. 下载数据 import yfinance as yfticker ZM df yf.download(ticker) df2. 数据预处理 df df.loc[2020-01-01:].copy()使用了 .loc 方法来选择索引为 ‘2020-01-01’ 以后的所有行数据。通过 .copy() 方法创建了一个这些数据的副本,确…

PCA9698的IIC转接GPIO控制N路灯

PCA9698验证灯的办法和PCA9535验证6路数字继电器,编译成ko直接Insmod,然后查看/dev/节点有了吗?然后用iictool命令往对应iic地址上面写数据,看看灯亮灭或者听继电器开关声响,至于写多少,研究芯片手册上面参…

Spark SQL编程

1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息来执行额外的优化。与Spa…

Mac M2/M3 芯片环境配置以及常用软件安装-前端

最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。 一、环境配置 1. 安装 Homebrew 安装 Homebrew【Mac 安装 Homebrew】 通过国内镜像安装会比较快 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Ho…

IDEA接口调试插件不好找?这款免费用!

IDEA插件市场中的API调试插件不是收费(Fast Request )就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用! 这款插件由Apipost团队开发的…

【Qt之QWizard】使用2,示例分析

效果图 根据首页的选择不同&#xff0c;进入不同的选项。 以下是代码。 示例 .h #ifndef LICENSEWIZARD_H #define LICENSEWIZARD_H#include <QWizard>QT_BEGIN_NAMESPACE class QCheckBox; class QLabel; class QLineEdit; class QRadioButton; QT_END_NAMESPACEcla…

C/C++轻量级并发TCP服务器框架Zinx-框架开发001: 读取标准输入,回显到标准输出

文章目录 完整代码实现参考-非项目使用项目使用的代码 - 乱-但是思路与上面的相同创建Kernel类添加删除修改epoll&#xff0c;才能写run方法创建stdin_Channel类在Kernel类中实现run方法 完整代码实现参考-非项目使用 #include <errno.h> #include <signal.h> #in…

科学上网导致Adobe软件运行弹出This non-genuine Adobe app will be disabled soon,尝试解决办法

之前介绍用防火墙拦截Adobe软件的出站规则可以解决软件的非正版弹窗&#xff0c;但是有的用户却不行是为什么&#xff0c;原因是使用了代理网络。因为Adobe此时跑的不是本地的流量而是代理的流量。所以防火墙拦截就不起作用了。 首先是之前介绍过的拦截方法&#xff0c;如果你没…

网络安全-学习手册

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习…

Spring-Spring之AOP底层原理解析---实践(动态代理)

动态代理 代理模式的解释&#xff1a;为其他对象提供一种代理以控制对这个对象的访问&#xff0c;增强一个类中的某个方法&#xff0c;对程序进行扩展。 cglib动态代理 方式一&#xff1a; public class UserService {public void test() {System.out.println("test..…

k8s自定义Endpoint实现内部pod访问外部应用

自定义endpoint实现内部pod访问外部应用 endpoint除了可以暴露pod的IP和端口还可以代理到外部的ip和端口 使用场景 公司业务还还没有完成上云&#xff0c; 一部分云原生的&#xff0c;一部分是实体的 业务上云期间逐步实现上云&#xff0c;保证各个模块之间的解耦性 比如使…

IEEE--DSConv: Efficient Convolution Operator 论文翻译

论文地址:https://arxiv.org/pdf/1901.01928v1.pdf 目录 摘要 1 介绍 2 相关工作 3 DSConv层 4 量化过程 5 分布偏移 6 优化推断 7 训练 8 结果 8.1 ImageNet 8.2 内存和计算负载 8.3 转移性 9 结论 摘要 我们引入了一种卷积层的变体&#xff0c;称为DSConv&…

网络编程 —— TCP 和 UDP 编程详解

目录 网络编程主要函数介绍 1. socket 函数 2. bind 函数 3. listen 函数 4. accept 函数 5. connect 函数 6. send 函数 7. recv 函数 8. recvfrom 函数 9. sendto 函数 TCP 和 UDP 原理上的区别 TCP 编程 服务端代码&#xff1a; 客户端代码&#xff1a; UDP 编…

如何进行iOS技术博客的备案?

​ 如何进行iOS技术博客的备案&#xff1f; 标题&#xff1a;iOS技术博客备案流程及要求解析 摘要&#xff1a; 在本篇问答中&#xff0c;我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面&#xff0c;并通过蓝牙进行数据采集和传输&#xff0c;那么你…

0基础学习VR全景平台篇第121篇:认识视频剪辑软件Premiere

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 大家好&#xff0c;这节课是带领大家认识认识我们的剪辑软件Premiere&#xff0c;一般简称是PR。 &#xff08;PR界面&#xff09; 我们首先打开PR&#xff0c;第一步就是要创建…

LeetCode【238】除自身意外的数组的乘积

题目&#xff1a; 思路&#xff1a; https://zhuanlan.zhihu.com/p/109306706?utm_id0 代码&#xff1a; int n nums.length;int[] l new int[nums.length];int[] r new int[nums.length];l[0] 1;r[n-1] 1;for (int i1;i<nums.length;i) {l[i] l[i-1] * nums[i-1]…

python数据处理作业4:使用numpy数组对象,随机创建4*4的矩阵,并提取其对角元素

每日小语 真理诚然是一个崇高的字眼&#xff0c;然而更是一桩崇高的业绩。如果人的心灵与情感依然健康&#xff0c;则其心潮必将为之激荡不已。——黑格尔 难点&#xff1a;如何创建&#xff1f;取对角元素的函数是什么&#xff1f; gpt代码学习 import numpy as np# 随机创…