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.pswp.cn/pingmian/73724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73724.shtml
英文地址,請注明出處:http://en.pswp.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…