【Linux网络】1分钟使用shell脚本完成DNS主从解析服务器部署(适用于centos主机)
【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
从服务器脚本
#!/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.zonessystemctl 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、实验测试
最新文章
- 解决因为LSP问题而导致的无法上网故障的方法
- win7系统如何关闭开机自动启动的放大镜
- 【第2章 Node.js基础】2.4 Node.js 全局对象(二) process 对象
- tcpdump wireshark简单使用
- CPD:使用restAPI和cpd
- Python实现WOA智能鲸鱼优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战
- 数据结构和算法八股与手撕
- 【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效
- 一款IT团队都在用的私有化知识库,技术开放,还开源了!
- 设计大咖亲授:Figma中文环境设置全攻略!
- hadoop 大数据环境配置 rsync命令 hadoop(三)
- ios 对话框UIAlertController放 tableview
- ElasticSearch简单操作
- Android 11.0 系统sim卡5G 信号格数对应的信号强度值修改
- 10 Go的映射
- Linux的root用户
- 【KCC@南京】KCC南京数字经济