Linux 搭建dns主域解析,和反向解析

#!/bin/bash
# DNS主域名服务
# user li 20250325# 检查当前用户是否为root用户
# 因为配置DNS服务通常需要较高的权限,只有root用户才能进行一些关键操作
if [ "$USER" != "root" ]; then# 如果不是root用户,输出错误信息echo "错误:非root用户,权限不足!"# 退出脚本,返回状态码0exit 0
fi# 防火墙与高级权限部分
# 停止并禁用防火墙服务,因为防火墙可能会阻止DNS服务的网络通信
# 使用 && 连接命令,只有前一个命令执行成功才会执行下一个命令
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"# 修改SELinux配置文件,将SELinux设置为禁用状态
# sed -i 表示直接在原文件上进行修改
# s/SELINUX=*/SELINUX=disabled/g 是sed的替换命令,将SELINUX= 开头的内容替换为SELINUX=disabled
# setenforce 0 是临时禁用SELinux
sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"# 安装BIND相关工具
# BIND(Berkeley Internet Name Domain)是常用的DNS服务器软件
yum install -y bind
# 检查上一个命令(yum install -y bind)的执行结果
if [ $? = 0 ]; then# 如果执行成功,输出安装成功的信息echo "安装成功"
else# 如果执行失败,输出安装失败的信息echo "安装失败"# 脚本暂停5秒,方便用户查看错误信息sleep 5# 退出脚本,返回状态码0exit 0
fi# 设置变量部分
# 提示用户输入DNS区域名,例如 xiaomao.com
# -e 选项允许使用反斜杠转义字符,-p 选项用于指定提示信息
read -ep "请设置DNS区域名(如xiaomao.com):" a
# 提示用户输入本机IP地址
read -ep "请输入本机IP地址:" b
# 提示用户输入反向解析的IP地址,例如 1.168.192
read -ep "请输入反向解析的IP地址(如1.168.192):" c
# 将用户输入的本机IP地址赋值给变量 ip
ip="$b"
# 从本机IP地址中提取最后一段数字,用于反向解析
# cut -d '.' -f 4 表示以点号为分隔符,提取第4个字段
d=$(echo "$ip" | cut -d '.' -f 4)# 配置BIND主配置文件部分
# 备份原有的BIND主配置文件
cp /etc/named.conf /etc/named/conf.bak
# 修改BIND主配置文件,将监听地址从 127.0.0.1 改为 any
# 这样可以让DNS服务器监听所有可用的网络接口
sed -i 's/listen-on port 53 { 127.0.0.1; };/listen-on port 53 { any; };/g' /etc/named.conf
# 修改BIND主配置文件,将允许查询的地址从 localhost 改为 any
# 这样可以让任何客户端都可以向该DNS服务器发起查询请求
sed -i 's/allow-query     { localhost; }/allow-query     { any; }/g' /etc/named.conf# 向 /etc/named.rfc1912.zones 文件中追加正向和反向解析区域的配置信息
# 正向解析区域配置指定了域名对应的文件路径
# 反向解析区域配置指定了反向解析对应的文件路径
echo "zone "$a" IN {type master;file \"/var/named/$a.zone\";
};zone "$c.in-addr.arpa" IN {type master;file \"/var/named/$c.rev\";
};" >> /etc/named.rfc1912.zones# 创建正向解析区域文件
# 正向解析区域文件定义了域名到IP地址的映射关系
echo "\$TTL 86400
@   IN  SOA  ns.$a. admin.$a. (2025032501 ; Serial3600       ; Refresh1800       ; Retry604800     ; Expire86400      ; Minimum TTL
)
@   IN  NS   ns.$a.
$a. IN  A       $b
ns       IN  A       $b
" > /var/named/$a.zone# 创建反向解析区域文件
# 反向解析区域文件定义了IP地址到域名的映射关系
echo "\$TTL 86400
@   IN  SOA  ns.$a. admin.$a. (2025032501 ; Serial3600       ; Refresh1800       ; Retry604800     ; Expire86400      ; Minimum TTL
)
@       IN  NS   ns.$a.
$d     IN  PTR  $a.
" > /var/named/$c.rev# 调整权限部分
# 将正向和反向解析区域文件的所有者和所属组设置为 named
# named 是BIND服务运行的用户
chown named:named /var/named/$a.zone /var/named/$c.rev
# 设置正向和反向解析区域文件的权限为 640
# 即所有者有读写权限,所属组有读权限,其他用户没有权限
chmod 640 /var/named/$a.zone /var/named/$c.rev# 启动BIND服务并设置为开机自启
# systemctl enable named 用于设置BIND服务开机自启
# systemctl start named 用于启动BIND服务
systemctl enable named && systemctl start named
# 检查上一个命令(启动BIND服务)的执行结果
if [ $? = 0 ]; then# 如果执行成功,输出服务启动成功的信息echo "服务启动成功"
else# 如果执行失败,输出失败信息echo "破产,10秒后退出"# 脚本暂停10秒,方便用户查看错误信息sleep 10# 退出脚本,返回状态码0exit 0
fi

测试结果

现实中做dns 一般都是为了提升效率,只借助路由器的解析人多了会变得很慢。 

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

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

相关文章

GenBI 中如何引入 LLM 做意图路由,区分查数据还是闲聊

写在前面 生成式商业智能(Generative BI, GenBI)的魅力在于其能够理解用户的自然语言,并将复杂的数据查询和分析过程自动化。用户不再需要学习 SQL 或操作复杂的界面,只需像与同事交谈一样提出问题,就能获得数据洞察。然而,一个现实的挑战是:用户的输入并非总是明确的数…

OmniPlan Pro for Mac 项目管理流程

OmniPlan Pro for Mac 项目管理流程 文章目录 OmniPlan Pro for Mac 项目管理流程一、介绍二、效果三、下载 一、介绍 OmniPlan Pro mac是一款项目管理流程软件。能被用来优化资源、精简预算快速共享或添加任务,旨在能够帮助您可视化维护和简化项目,包含…

人工智能之数学基础:矩阵的相似变换

本文重点 矩阵的相似变换是线性代数中一个至关重要的概念,它揭示了矩阵之间的一种特殊关系,并通过可逆矩阵将一个矩阵转化为另一个相似矩阵,同时保持矩阵的某些本质特征不变。在机器学习领域,矩阵的相似变换发挥着不可或缺的作用,广泛应用于数据降维、聚类分析、分类推荐…

2025蓝桥杯备赛Day12——P8598 [蓝桥杯 2013 省 AB] 错误票据

🔍 2025蓝桥杯备赛Day12——P8598 [蓝桥杯 2013 省 AB] 错误票据 🚀 题目速览 题目难度:⭐️(适合掌握基础字符串处理与数组操作) 考察重点:输入处理、数组排序、逻辑判断 P8598 [蓝桥杯 2013 省 AB] 错…

3.28日,NBA,欧篮联全扫盘,太阳VS森林狼

3.28日欧篮联扫盘 301费内巴切 vs 巴斯克 (-10.5),总分预设:170.5 背景:比赛于2025年3月28日在费内巴切的乌尔克体育馆举行,费内巴切为主队。根据EuroLeague排名,费内巴切位列第二(21胜10负)&am…

【动态编译】Roslyn中 SyntaxKind 枚举类型

在 Roslyn(.NET 的编译器平台)中,SyntaxKind 是一个枚举类型,定义了 C# 语言中所有可能的语法节点类型。它是 Roslyn 抽象语法树(AST)的基础,用于标识每个 SyntaxNode 的具体种类。SyntaxKind 的…

【SpringCloud】Eureka的使用

3. Eureka 3.1 Eureka 介绍 Eureka主要分为两个部分: EurekaServer: 作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。 EurekaClient: 服务提供者,服务启动时,会向 EurekaS…

前端知识点---window.location.assign() 和 window.location.href 的区别(javascript)

window.location.assign() 和 window.location.href 的主要区别: 读取和设置 window.location.href:既可以读取当前 URL,也可以通过赋值更改 URL。 window.location.assign():只能用于跳转到新的 URL,不能读取当前地…

OpenCV图像拼接(3)图像拼接类cv::detail::MultiBandBlender

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::MultiBandBlender 是 OpenCV 中用于图像拼接(stitching)模块的一个类,主要用于将多张重叠的图像…

王者荣耀服务器突然崩了

就在刚刚王者荣耀服务器突然崩了 #王者荣耀崩了#的话题毫无预兆地冲上热搜,许多玩家发现游戏登录界面反复弹出异常提示,匹配成功后卡在加载界面,甚至出现对局数据丢失的情况。根据官方公告,目前技术团队已在全力抢修服务器 #王者…

【JavaScript】JavaScript Promises实践指南

【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗?这是一个很多人一开始就放弃的主题,但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么? “Promise”是异步编程中的一个基本概念,特别是在J…

计算机视觉总结

以下是针对上述问题的详细解答,并结合代码示例进行说明: 1. 改进YOLOv5人脸检测模块,复杂光照场景准确率从98.2%提升至99.5% 优化具体过程: 光照补偿:在数据预处理阶段,采用自适应光照补偿算法,对图像进行实时增强,以减少光照变化对人脸检测的影响。数据增强:在训练…

ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer

第一部分: VOID ExpTimerApcRoutine ( IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2 ) /* Routine Description: This function is the special …

算法分析与设计 专题三

目录 一、实验目的 二、实验内容 三、问题分析与求解 四、AC源代码、截图 五、实验小结 一、实验目的 1、了解贪心算法的分析过程,学会用贪心算法解决一些具体的问题。 2、了解广度优先算法和深度优先算法。 二、实验内容 1992 当然,我们的收藏中…

1688商品详情接口:深度解析与应用实践

在电商领域,1688作为中国领先的B2B平台,拥有海量的商品信息。对于开发者、商家和数据分析师来说,获取1688商品的详细信息是实现数据分析、竞品研究、自动化管理和精准营销的重要手段。本文将详细介绍1688商品详情接口的使用方法、技术细节以及…

每日算法-250328

记录今天学习和解决的LeetCode算法题。 92. 反转链表 II 题目 思路 本题要求反转链表中从 left 到 right 位置的节点。我们可以采用 头插法 的思路来反转指定区间的链表。 具体来说,我们首先定位到 left 位置节点的前一个节点 prev。然后,从 left 位置…

C语言中的位域:节省内存的标志位管理技术

位域(Bit-field) 是 C 语言中的一种特性,允许在结构体(struct)中定义占用特定位数的成员变量。通过位域,可以更精细地控制内存的使用,尤其是在需要存储多个布尔值或小范围整数时,可以…

【AI编程学习之Python】第一天:Python的介绍

Python介绍 简介 Python是一种解释型、面向对象的语言。由吉多范罗苏姆(Guido van Rossum)于1989年发明,1991年正式公布。官网:www.python.org Python单词是"大蟒蛇”的意思。但是龟叔不是喜欢蟒蛇才起这个名字,而是正在追剧:英国电视喜剧片《蒙提派森的飞行马戏团》(Mo…

【openstack系列】虚拟化技术

OpenStack 是一个开源的云计算管理平台,它本身并不直接提供虚拟化技术,而是通过集成不同的虚拟化解决方案来管理和编排计算、存储和网络资源。OpenStack 的核心优势在于其灵活性和可扩展性,支持多种虚拟化技术(Hypervisor),使企业可以根据需求选择合适的底层虚拟化方案。…

保姆级教程:Vue3 + Django + MySQL 前后端联调(PyCharm+VSCode版)

一、环境准备与验证 这里为减少篇幅,默认大家都安装好了这些软件。不会下载安装的,教程也很多,这里不再做赘述。话不多说,咱们开始: 1. 安装验证 确保已安装以下软件并验证版本: # 验证Node.js node -v…