当前位置: 首页 > ops >正文

Linux系统管理与编程19:自动部署dns

兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。

#!/bin/bash

#-----------------------------------------------------------

#前提条件:准备好虚拟机,①外网内网畅通,②yum源搭建好

# File Name: myDns.sh

# Version: 1.0

# Created: 2025-05-12 13:51:58

# Author:  网工xxx

# Contact:  QQ15523232551

# Copyright(R):CQIE

# Description: 我的虚拟机上有网络接口卡为ens36,ip地址为

#192.168.100.66,我想在上边做本地主dns服务,目前规划该dns

#域名为dns.wuzz.cqie,想规划ftp.wuzz.cqie和www.wuzz.cqie,其ip

#分别是192.168.100.23和192.168.100.120。

#===========================================================

# 我色彩斑斓的化妆盒

RED='\033[31m'

GREEN='\033[32m'

YELLOW='\033[43m'

BLUE='\033[94m'

RedBlink="\e[5;31m"     #5是闪烁,31m是红色

UL='\033[4m'          #下划线::

RESET='\033[0m'       #复位

# DNS服务自动部署脚本(适用于CentOS7)

# 检查root权限

if [ "$EUID" -ne 0 ]; then

  echo "请使用root权限执行该脚本"

  exit 1

fi

# 配置变量

DOMAIN="wuzz.cqie"

DNS_IP="192.168.100.66"

NS_HOST="dns"

FTP_IP="192.168.100.23"

WWW_IP="192.168.100.120"

# 安装BIND及相关工具

yum install -y bind bind-utils

# 备份原始配置文件

cp /etc/named.conf /etc/named.conf.bak

# 生成新的named.conf配置

cat > /etc/named.conf <<EOF

options {

    listen-on port 53 { 127.0.0.1; ${DNS_IP}; };

    directory       "/var/named";

    dump-file       "/var/named/data/cache_dump.db";

    statistics-file "/var/named/data/named_stats.txt";

    memstatistics-file "/var/named/data/named_mem_stats.txt";

    recursing-file  "/var/named/data/named.recursing";

    secroots-file   "/var/named/data/named.secroots";

    allow-query     { localhost; 192.168.100.0/24; };

    recursion yes;

    dnssec-enable yes;

    dnssec-validation yes;

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";

    session-keyfile "/run/named/session.key";

};

logging {

    channel default_debug {

        file "data/named.run";

        severity dynamic;

    };

};

zone "${DOMAIN}" IN {

    type master;

    file "${DOMAIN}.zone";

    allow-update { none; };

};

zone "100.168.192.in-addr.arpa" IN {

    type master;

    file "100.168.192.zone";

    allow-update { none; };

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

EOF

# 创建正向区域文件

cat > /var/named/${DOMAIN}.zone <<EOF

\$TTL 86400

@   IN  SOA     ${NS_HOST}.${DOMAIN}. admin.${DOMAIN}. (

        2024052001  ; Serial

        3600        ; Refresh

        1800        ; Retry

        604800      ; Expire

        86400       ; Minimum TTL

)

@       IN  NS      ${NS_HOST}.${DOMAIN}.

${NS_HOST}  IN  A    ${DNS_IP}

ftp     IN  A    ${FTP_IP}

www     IN  A    ${WWW_IP}

EOF

# 创建反向区域文件

cat > /var/named/100.168.192.zone <<EOF

\$TTL 86400

@  IN  SOA  ${NS_HOST}.${DOMAIN}. admin.${DOMAIN}. (

        2024052001  ; Serial

        3600        ; Refresh

        1800        ; Retry

        604800      ; Expire

        86400       ; Minimum TTL

)

@       IN  NS  ${NS_HOST}.${DOMAIN}.

66      IN  PTR ${NS_HOST}.${DOMAIN}.

23      IN  PTR ftp.${DOMAIN}.

120     IN  PTR www.${DOMAIN}.

EOF

# 设置文件权限

chown root:named /var/named/${DOMAIN}.zone

chown root:named /var/named/100.168.192.zone

chmod 640 /var/named/*.zone

# 检查配置语法

named-checkconf

named-checkzone ${DOMAIN} /var/named/${DOMAIN}.zone

named-checkzone 100.168.192.in-addr.arpa /var/named/100.168.192.zone

# 配置防火墙

firewall-cmd --permanent --add-service=dns

firewall-cmd --reload

# 设置SELinux上下文

restorecon -Rv /var/named

# 启动服务

systemctl enable --now named

# 配置本地DNS

nmcli con mod ens36 ipv4.dns "${DNS_IP}"

nmcli con up ens36

echo "DNS服务部署完成,请验证以下测试命令:"

echo "正向解析测试:nslookup ftp.${DOMAIN} ${DNS_IP}"

echo "反向解析测试:nslookup ${FTP_IP} ${DNS_IP}"

检查一下:cat /etc/resolv.conf

图19- 1

本地dns应该放在前面。

修改etc/resolv.conf

[root@pxedns shell]# cat /etc/resolv.conf

# Generated by NetworkManager

search localdomain

nameserver 192.168.100.66

nameserver 192.168.137.2

保证你的ftp虚拟机开启,测试一下:

图19- 2

http://www.xdnf.cn/news/5692.html

相关文章:

  • 十二、操作符重载
  • 多媒体预研
  • 基于STM32、HAL库的BME680气压传感器 驱动程序设计
  • 如何找正常运行虚拟机
  • 【Kubernetes】初识基础理论(第一篇)
  • OSCP - Hack The Box - Sau
  • 【面试真题】王者荣耀亿级排行榜,如何设计?
  • 项目售后服务承诺书,软件售后服务方案,软件安装文档,操作文档,维护文档(Word原件)
  • MySQL性能调优探秘:我的实战笔记 (下篇:深入内核、锁与监控)
  • java反序列化commons-collections链1
  • 如何使用 WMIC 命令在 Windows 11 或 10 上卸载软件
  • 每周靶点分享:CD20、GIPR及文献分享
  • el-table滚动条,都悬浮在页面的底层显示,表格吸底滚动条效果
  • bootstrap自助(抽样)法
  • 机器学习实战:归一化与标准化的选择指南
  • Spring Boot 参数验证
  • 【TTS学习笔记】:语音合成领域基本术语
  • 关系型数据库和非关系型数据库
  • Redis数据类型
  • 结合 GWAS 和 TWAS 鉴定玉米籽粒中生育色醇水平的候选致病基因
  • Java Spring Boot项目目录规范示例
  • 【Python训练营打卡】day23 @浙大疏锦行
  • 基于Backtrader库的实时回测与模拟交易策略实战
  • day06_java中的流程控制语句
  • Milvus 2.4 使用详解:从零构建向量数据库并实现搜索功能(Python 实战)
  • 力扣-138.随机链表的复制
  • js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
  • 个人博客系统测试报告
  • 常用激活函数总结
  • websocketpp 安装及使用