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


    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    从服务器脚本

    #!/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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2、编写脚本步骤

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

    3、语法新发现及易错点

    ##当脚本执行出现故障时,再次使用脚本,会在区域配置文件/etc/named.rfc1912.zones中重复添加对应关系,这是不行的,不可重复添加
    解决思路:每次跑脚本前保证环境干净,卸载bind从头开始
    
    ##关于数据库文件的语法新发现
    第一行其实可以不改,两个@可以并存,都表示域名本身,也可以用sed -i '2s/@/master/2'替换第二个@为master
    关于NS slave,这里是NS前面必须必须有空格!!,sed -i '9a \   NS  slave  \nslave A '$slaveIP''中的\  表示空格
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、知识盲区与改进方向

    ##该脚本缺少对交互输入的变量值进行判断,万一写错了咋办?(不会判断)
    
    ##关于数据库用sed输入的时候有个知识点
    sed -i '9a \   NS  slave  \nslave A '$slaveIP'' /var/named/$NS.zone 
    为什么改为10a就不行,后来测试的原因判断是因为当时文本只有9行,从第10行的下一行写就不可以
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、实验测试

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

  • 相关阅读:
    21.8 Python 使用BeautifulSoup库
    LeetCode //C - 190. Reverse Bits
    前端面试题第六天
    Raft协议浅析
    VMware 三种网络连接模式
    java集成WebSocket
    2022年都在说软件测试饱和了?都在担心面试不上。
    C语言8道大厂指针笔试题——拿捏指针
    基数排序(Radix Sort)
    谷歌api站长批量翻译工具
  • 原文地址:https://blog.csdn.net/liu_xueyin/article/details/134393555