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.rhkb.cn/news/41371.html

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

相关文章

Leetcode 二进制求和

java solution class Solution {public String addBinary(String a, String b) {StringBuilder result new StringBuilder();//首先设置2个指针, 从右往左处理int i a.length() - 1;int j b.length() - 1;int carry 0; //设置进位标志位//从2个字符串的末尾向前遍历while(…

【NLP 49、提示工程 prompt engineering】

目录 一、基本介绍 语言模型生成文本的基本特点 提示工程 prompt engineering 提示工程的优势 使用注意事项 ① 安全问题 ② 可信度问题 ③ 时效性与专业性 二、应用场景 能 ≠ 适合 应用场景 —— 百科知识 应用场景 —— 写文案 应用场景 —— 解释 / 编写…

【NLP 43、文本生成任务】

目录 一、生成式任务 二、seq2seq任务 1.模型结构 2.工作原理 3.局限性 三、自回归语言模型训练 Decoder only 四、自回归模型结构:文本生成任务 —— Embedding LSTM 代码示例 🚀 数据文件 代码流程 Ⅰ、模型初始化 Ⅱ、前向计算 代码运行流程 Ⅲ、加载…

vscode 通过Remote-ssh远程连接服务器报错 could not establish connection to ubuntu

vscode 通过Remote-ssh插件远程连接服务器报错 could not establish connection to ubuntu,并且出现下面的错误打印: [21:00:57.307] Log Level: 2 [21:00:57.350] SSH Resolver called for "ssh-remoteubuntu", attempt 1 [21:00:57.359] r…

Linux之编辑器vim命令

vi/vim命令: 终端下编辑文件的首选工具,号称编辑器之神 基本上分为三种模式,分别是 命令模式(command mode)>输入vi的命令和快捷键,默认打开文件的时候的模式插入模式(insert mode&#x…

第一天学爬虫

阅读提示:我今天才开始尝试爬虫,写的不好请见谅。 一、准备工具 requests库:发送HTTP请求并获取网页内容。BeautifulSoup库:解析HTML页面并提取数据。pandas库:保存抓取到的数据到CSV文件中。 二、爬取步骤 发送请求…

MySQL实战(尚硅谷)

要求 代码 # 准备数据 CREATE DATABASE IF NOT EXISTS company;USE company;CREATE TABLE IF NOT EXISTS employees(employee_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT );DESC employees;CREATE TABLE IF NOT EXISTS departments…

windows下安装sublime

sublime4 alpha 4098 版本 下载 可以根据待破解的版本选择下载 https://www.sublimetext.com/dev crack alpha4098 的licence 在----- BEGIN LICENSE ----- TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D…

激光线检测算法的FPGA实现

激光线检测算法的FPGA实现 1. 常见的激光线检测算法 激光线检测中常用的三种算法 MAX(最大值法)、THRESH(阈值法)、COG(灰度重心法) 分别具有以下特点和工作原理: 1.1 MAX(最大值法…

小样本微调大模型

一、环境搭建 conda create -n dseek python=3.10 conda activate dseek pip install bitsandbytes Pip install numpy python -m pip install --upgrade pip setuptools wheel 安装cuda,torch,Unsloth, huggingface,wandb等,见前述章节; 微调服务器配置:单机笔记本显卡4…

深入理解指针(2)(C语言版)

文章目录 前言一、数组名的理解二、使用指针访问数组三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组七、指针数组模拟二维数组总结 前言 在上一篇文章中,我们初步了解了指针的基本概念和用法。今天,我们将继续深入探索指针在数组、函数传…

高效内存管理:x86-64架构中的分页机制

在 x86-64 架构的世界里,内存分页机制扮演着举足轻重的角色,它就像是一座桥梁,连接着虚拟地址与物理地址。简单来说,内存分页机制就是将线性地址(也就是虚拟地址)切分成一个个固定大小的页,并把…

统一开放世界与开放词汇检测:YOLO-UniOW无需增量学习的高效通用开放世界目标检测框架

目录 一、摘要 二、引言 三、相关工作 开放词汇对象检测 开放世界目标检测 参数高效学习 四、高效通用的开放世界目标检测 问题定义 高效的自适应决策学习 开放世界通配符学习 五、Coovally AI模型训练与应用平台 六、实验 数据集 评价指标 实施细节 定量结果 …

fileinclude

##解题思路 场景首页没有什么提示,只有个flag在flag.php中,而且需要更改language,还有个index.php的路径,先记住它 习惯性查看源代码,得到了题目真正的内容,关键在于lan变量读取我们传入的Cookie值中的lang…

链表-LeetCode

这里写目录标题 1 排序链表1.1 插入法 O(n)1.2 归并排序 1 排序链表 1.1 插入法 O(n) /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullpt…

计算机网络基础:WiFi 与蓝牙的原理与应用

计算机网络基础:WiFi 与蓝牙的原理与应用 一、前言二、WiFi 原理2.1 概述2.2 工作频段2.2.1 2.4GHz 频段2.2.2 5GHz 频段2.3 调制技术2.3.1 正交频分复用(OFDM)2.3.2 直接序列扩频(DSSS)2.4 通信协议2.5 网络架构2.5.1 独立基本服务集(IBSS)2.5.2 基础服务集(BSS)2.5.…

深入解析 Java 类加载机制及双亲委派模型

🔍 Java的类加载机制是确保应用程序正确运行的基础,特别是双亲委派模型,它通过父类加载器逐层加载类,避免冲突和重复加载。但在某些特殊场景下,破坏双亲委派模型会带来意想不到的效果。本文将深入解析Java类加载机制、…

【数据可视化艺术·进阶篇】热力图探秘:用色彩演绎场馆和景区的人流奥秘

假期出游,你是不是也遇到过这样的状况:想去的热门景点,放眼望去全是攒动的人头,根本没法好好欣赏风景;而景区里一些小众角落,却冷冷清清,鲜有人至。还有在轨道交通枢纽、大型体育场这些地方&…

理解文字识别:一文读懂OCR商业化产品的算法逻辑

文字识别是一项“历久弥新”的技术。早在上世纪初,工程师们就开始尝试使用当时有限的硬件设备扫描并识别微缩胶片、纸张上的字符。随着时代和技术的发展,人们在日常生活中使用的电子设备不断更新换代,文字识别的需求成为一项必备的技术基础&a…

智能监控视频聚合平台,GB28181/RTSP/SIP/RTMP直播会议融合方案

全场景智能监控聚合平台:打破边界,赋能高效协同 在数字化转型加速的今天,海量视频监控设备、多样化的编码协议与复杂的业务场景,让企业面临跨系统整合难、资源调度效率低、协作响应慢等痛点。我们的智能监控聚合平台以技术创新为…