DNS域名解析服務器搭建

基礎介紹

DNS 從哪里獲取 IP 地址?
  1. 本地緩存: DNS服務器會將先前查詢過的域名和對應的IP地址存儲在本地緩存中,以便在后續查詢中加快響應速度。如果之前已經查詢過某個域名,DNS服務器會直接從本地緩存中獲取對應的IP地址。
  2. 遞歸查詢: 如果本地緩存中沒有目標域名的IP地址,DNS服務器會發起遞歸查詢。它首先向根域名服務器發送查詢請求,根域名服務器會返回指向負責頂級域(如.com、.net、.org等)的權威域名服務器的IP地址。然后,DNS服務器會向權威域名服務器發送查詢請求,直到獲取到目標域名的IP地址或者查詢失敗。
  3. 轉發查詢: DNS服務器還可以配置為轉發查詢,即將未命中本地緩存的查詢請求轉發給其他DNS服務器處理。通常情況下,本地DNS服務器會將這些請求發送給ISP(Internet Service Provider,互聯網服務提供商)提供的DNS服務器或者其他可靠的DNS服務器進行處理。
DNS的作用
  1. 域名解析: DNS最主要的作用是將域名解析為對應的IP地址。當用戶在瀏覽器中輸入一個域名時,DNS系統會將這個域名轉換為相應的IP地址,然后瀏覽器才能通過IP地址找到并訪問目標網站。
  2. 負載均衡: 通過DNS解析可以實現負載均衡,即將多個服務器的域名解析為不同的IP地址并在不同的時間將其返回給用戶。這樣可以分散流量到多臺服務器上,提高網站的訪問速度和穩定性。
  3. 郵箱服務器定位: DNS也用于指定郵件服務器的IP地址。當發送電子郵件時,郵件服務器通過DNS解析找到收件人域名的郵件服務器IP地址,然后發送郵件。
  4. 防止DNS劫持: DNS還能夠通過各種方式來防止DNS劫持,即惡意修改DNS解析結果以實施網絡攻擊或監視用戶活動的行為。例如,DNSSEC(DNS Security Extensions)可以通過數字簽名來保護DNS解析結果的完整性和真實性。
  5. 提供其他網絡服務: DNS還可以用于提供其他網絡服務,如反向DNS解析(將IP地址解析為域名)、動態域名解析(將動態IP地址映射到域名)、域名注冊等。

BIND 簡介:
BIND 全稱為 Berkeley Internet Name Domain(伯克利因特網名稱域系統),BIND 主要有三個版本:BIND4、BIND8、BIND9
BIND8 版本:融合了許多提高效率、穩定性和安全性的技術,而 BIND9 增加了一些超前的理念:IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等等

基礎環境

mv /etc/yum.repos.d/CentOS-* /tmp/
systemctl disable firewalld --now && setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
curl -o /etc/yum.repos.d/centos.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安裝DNS服務

[root@dns ~]# cat /etc/named.confyum install -y bind bind-chroot bind-utilsbind-9.9.4-50.el7.x86_64				# 該包為 DNS 服務的主程序包。
bind-chroot-9.9.4-50.el7.x86_64 # 提高安全性。
#bind-chroot 是 bind 的一個功能,使 bind 可以在一個 chroot 的模式下運行,也就是說,bind 運行時的/(根)目錄,并不是系統真正的/(根)目錄,只是系統中的一個子目錄而已,這樣做的目的是為了提高安全性,因為在 chroot 的模式下,bind 可以訪問的范圍僅限于這個子目錄的范圍里,無法進一步提升,進入到系統的其他目錄中。
bind-utils-9.9.4-50.el7.x86_64.rpm #該包為客戶端工具,系統默認已經安裝的了,它用于搜索域名指令。

DNS 相關配置文件

[root@dns ~]# ll /etc/named.conf`named.conf 是 BIND 的核心配置文件,它包含了 BIND 的基本配置,但其并不包括區域數據`
`/var/named/ 目錄為 DNS 數據庫文件存放目錄,每一個域文件都放在這里`

修改配置文件

[root@dns ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {# listen-on port 53 { 127.0.0.1; }; 修改為anylisten-on port 53 { any; };listen-on-v6 port 53 { ::1; };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; };allow-query     { any; };/* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatlyreduce such attack surface */recursion yes;dnssec-enable yes;dnssec-validation yes;/* Path to ISC DLV key */bindkeys-file "/etc/named.root.key";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 "gxl.com" IN {type master;file "gxl.com.zone";allow-update { none; };
};
zone "169.168.192.in-addr.arpa" IN {type master;file "gxl.com.arpa";allow-update { none; };
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
以下是詳細配置解釋:
  1. options 這個部分包含了DNS服務器的一般選項設置
  2. listen-on port 53 { any; } 指定DNS服務器監聽的端口。在這個示例中,DNS服務器監聽在53端口,允許任何IP地址連接到該端口。這意味著DNS服務器會接受來自任何IP地址的DNS查詢請求
  3. listen-on-v6 port 53 { ::1; } 指定IPv6地址的監聽端口。在這個示例中,DNS服務器監聽IPv6地址的53端口,只允許本地IPv6地址(::1)連接到該端口
  4. directory "/var/named"; 指定存儲DNS服務器相關數據文件的目錄路徑。在這個示例中,數據文件存儲在/var/named目錄下
  5. dump-file "/var/named/data/cache_dump.db"; 指定DNS服務器在關閉時將緩存內容寫入的文件路徑。這個文件通常用于調試和故障排除
  6. statistics-file "/var/named/data/named_stats.txt"; 指定DNS服務器的統計信息輸出文件路徑,用于記錄DNS服務器的運行統計數據
  7. memstatistics-file "/var/named/data/named_mem_stats.txt"; 指定DNS服務器的內存使用統計輸出文件路徑,用于記錄DNS服務器的內存使用情況
  8. recursing-file "/var/named/data/named.recursing"; 指定DNS服務器遞歸查詢的記錄文件路徑
  9. secroots-file "/var/named/data/named.secroots"; 指定DNS服務器的安全根文件路徑
  10. allow-query { any; }; 指定允許查詢的IP地址范圍。在這個示例中,允許任何IP地址進行DNS查詢

定義正向查詢

正向查詢是最常見的DNS查詢方式之一

正向查詢用于將域名解析為IP地址,這樣用戶就可以使用易記的域名來訪問互聯網上的各種網絡資源,而不需要記憶IP地址

在dns配置文件中加入如下信息:

[root@dns ~]# cat /etc/named.conf
zone "gxl.com" IN {type master;file "gxl.com.zone";allow-update { none; };
};
以下是配置詳解:
### 需要強調的是file指定的是文件路徑
`type master;` 表明這是主 DNS 服務器,負責提供 "example.com" 區域的數據`file "example.com.zone";` 指定了包含 "example.com" 區域數據的文件的路徑`allow-update { none; };` 指定了允許對區域進行動態更新的權限。在這種情況下,none 表示不允許任何動態更新,因此區域數據只能通過手動編輯區域文件來更新

定義反向查詢

反向查詢是一種從IP地址到域名的查詢方式之一

反向查詢主要用于安全審計、網絡管理和驗證IP地址歸屬等方面。例如,當收到來自某個IP地址的網絡流量時,可以通過反向查詢確認該IP地址對應的域名,從而了解到流量的來源

[root@dns ~]# cat /etc/named.conf
zone "169.168.192.in-addr.arpa" IN {type master;file "gxl.com.arpa";allow-update { none; };
};

檢測是否語法錯誤

[root@dns ~]# named-checkconf /etc/named.conf

修改正反區域文件(重點)

進入到DNS服務器相關文件存儲目錄 /var/named/

named.emptynamed.localhost觀察這兩個文件 其實是一個實例文件接下來我們復制兩份用(找任意一個都可以)

[root@dns ~]# cd /var/named/[root@dns named]# ll
total 24
drwxr-x---. 7 root  named   61 Apr 17 03:28 chroot
drwxrwx---. 2 named named   23 Apr 17 04:31 data
drwxrwx---. 2 named named   60 Apr 17 04:32 dynamic
-rw-r-----. 1 root  named 2253 Apr  5  2018 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named    6 Oct 16  2023 slaves
[root@dns named]# cp -p named.localhost gxl.com.zone	### 當做正向查詢解析來使用
[root@dns named]# cp -p named.localhost gxl.com.arpa	### 當做反向查詢解析來使用

修改解析信息(正向)

[root@dns named]# cat gxl.com.zone
$TTL 1D
@       IN SOA  gxl.com. admin.gxl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN NS   dns.gxl.com.
dns     IN A    192.168.169.204
exam    IN A    192.168.169.204
www     IN A    192.168.169.204
mail    IN A    192.168.169.205
ftp     IN A    192.168.169.204
*       IN A    192.168.169.204    
  1. gxl.com.: 指定了主域名為 gxl.com
  2. admin.gxl.com.: 這個字段指定了負責管理該域名的DNS服務器的郵箱地址,形式為 admin@gxl.comadmin 是指定了這個域名的管理員(或者叫根管理員),而 gxl.com 是該管理員的郵箱地址的域名部分
  3. @ IN NS dns.gxl.com.:這行指定了域名 gxl.com 的DNS服務器是 dns.gxl.com。NS記錄(Name Server)指定了管理特定區域的DNS服務器
  4. dns IN A 192.168.169.204:這行指定了主機名 dns 對應的IP地址是 192.168.169.204。A記錄(Address Record)用于將域名解析為IPv4地址
  5. exam IN A 192.168.169.204:這行指定了主機名 exam 對應的IP地址是 192.168.169.204
  6. www IN A 192.168.169.204:這行指定了主機名 www 對應的IP地址是 192.168.169.204
  7. mail IN A 192.168.169.204:這行指定了主機名 mail 對應的IP地址是 192.168.169.204
  8. ftp IN A 192.168.169.204:這行指定了主機名 ftp 對應的IP地址是 192.168.169.204
  9. sun IN A 192.168.169.204:這行指定了主機名 sun 對應的IP地址是 192.168.169.204
  10. * IN A 192.168.169.204:這行指定了主機名 * 泛域名解析代表任意主機名

修改解析信息(反向)

[root@dns named]# cat gxl.com.arpa 
$TTL 1D
@       IN SOA gxl.com. admin.gxl.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum
@       IN NS   dns.gxl.com.
204     IN PTR  dns.gxl.com.
204     IN PTR  www.gxl.com.
204     IN PTR  exam.gxl.com.
204     IN PTR  ftp.gxl.com.
204     IN PTR  sun.gxl.com.

PTR 記錄將 IP 地址映射到相應的域名

@ IN NS dns.example.com.:這行指定了該反向區域的DNS服務器是 dns.gxl.com。NS記錄(Name Server)指定了管理特定區域的DNS服務器。

  1. 204 IN PTR dns.example.com.:這行指定了IP地址以 204 結尾的主機對應的域名是 dns.gxl.com。PTR記錄(Pointer Record)用于將IP地址解析為域名
  2. 204 IN PTR www.gxl.com.:這行指定了IP地址以 204 結尾的主機對應的域名是 www.gxl.com
  3. 204 IN PTR exam.gxl.com.:這行指定了IP地址以 204 結尾的主機對應的域名是 exam.gxl.com
  4. 204 IN PTR ftp.gxl.com.:這行指定了IP地址以 204 結尾的主機對應的域名是 ftp.gxl.com
  5. 204 IN PTR sun.gxl.com.:這行指定了IP地址以 204 結尾的主機對應的域名是 sun.gxl.com

客戶機測試

[root@dns ~]# vim /etc/resolv.conf
[root@dns ~]# cat /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114
#nameserver 8.8.8.8
nameserver 192.168.169.204

正向解析

[root@dns ~]# nslookup www.gxl.com
Server:         192.168.169.204
Address:        192.168.169.204#53Name:   www.gxl.com
Address: 192.168.169.204[root@dns ~]# host www.gxl.com
www.gxl.com has address 192.168.169.204

反向解析

[root@dns ~]# nslookup 192.168.169.204
204.169.168.192.in-addr.arpa    name = exam.gxl.com.
204.169.168.192.in-addr.arpa    name = www.gxl.com.
204.169.168.192.in-addr.arpa    name = ftp.gxl.com.
204.169.168.192.in-addr.arpa    name = sun.gxl.com.
204.169.168.192.in-addr.arpa    name = dns.gxl.com.[root@dns ~]# host 192.168.169.204
204.169.168.192.in-addr.arpa domain name pointer ftp.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer exam.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer www.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer dns.gxl.com.
204.169.168.192.in-addr.arpa domain name pointer sun.gxl.com.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13797.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

02. Redis 事務

文章目錄 Redis 事務執行事務放棄事務編譯性異常運行時異常 Redis 事務 Redis 單條明令是原子性的,但Redis事務不保證原子性。 事務的本質就是:一組命令一起執行!一個事務中的所有命令都會被序列化,在事務執行過程中,會…

2024-05-19 問AI: 大語言模型的BPE方向是什么意思?

文心一言 大語言模型的上下文中,BPE(Byte-Pair Encoding)是一種常用的子詞單元(subword unit)編碼方法,尤其在處理自然語言處理任務時。這種方法的主要目的是解決自然語言中的詞匯表大小問題,特…

mock.js和apifox模擬接口的能力

mock.js 和 Apifox 都是前端開發中常用的工具,用于模擬后端接口和數據。下面是它們的主要特點和模擬接口的能力的比較: mock.js mock.js 是一個用于生成隨機數據的 JavaScript 庫。它允許你定義數據模板,并生成模擬數據。mock.js 主要用于前…

VSCode下STM32開發環境搭建

VSCode下STM32開發環境搭建 需要的軟件 make-3.81 https://udomain.dl.sourceforge.net/project/gnuwin32/make/3.81/make-3.81.exe arm-none-eabi-gcc https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads https://links.jianshu.com/go?tohttps%3A%2F%…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt組件包含的子配置項 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 該參數啟用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det檢查。 true:開啟Gpt_…

Django5+React18前后端分離開發實戰13 使用React創建前端項目

先將nodejs的版本切換到18: 接著,創建項目: npx create-react-app frontend接著,使用webstorm打開這個剛創建的項目: 添加一個npm run start的配置: 通過start啟動服務: 瀏覽器訪問&…

機器學習之決策樹算法

使用決策樹訓練紅酒數據集 完整代碼: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn import tree, datasets from sklearn.model_selection import train_test_split# 準備數據,這里…

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes,從官方網站上可以看到,它是一個工業級的容器編排平臺。Kubernetes 這個單詞是希臘語,它的中文翻譯是“舵手”或者“飛行員”。在一些常見的資料中也會看到“ks”這個詞,也就是“k8s”,它…

科大訊飛筆試題---刪除數字

1、 題目描述: 給定一個長度為 n 的數組,數組元素為 a1, a2, . . , an,每次能刪除任意 a 的任意一位,求將所有數字變成 0 最少需要幾步。例如 103 若刪除第 1 位則變成 3; 若刪除第 2 位則變成13; 若刪除第 3 位則變成 10。 輸入…

AWS容器之Amazon ECS

Amazon Elastic Container Service(Amazon ECS)是亞馬遜提供的一種完全托管的容器編排服務,用于在云中運行、擴展和管理Docker容器化的應用程序。可以理解為Docker在云中對應的服務就是ECS。

c語言如何將一個文本內容復制到另外一個文本里

c語言如果要把一個文本文件的文件復制到另外一個文件里&#xff0c;代碼如下 #include<stdio.h>int main() {FILE *fp1,*fp2;char a;fp1fopen("D://cyy//aaa.txt","r");fp2fopen("ccc.cpu","w");while(a!EOF){afgetc(fp1);fput…

linux:切分大文件

文章目錄 1. 前言2. 用法3. 例子 1. 前言 如果傳輸、存儲過程中出現大文件&#xff0c;希望切分成小文件。在 Linux 中&#xff0c;可以使用多種工具來切分大文件&#xff0c;最常用的是 split 命令。split 命令可以將一個大文件按照指定大小切分成多個小文件。 2. 用法 spl…

ImageMagick入門教程(免費圖片格式轉換)

起因是因為我不會圖片轉換,且發現很多圖片轉換都要錢,尤其是pdf轉jpg,于是我就是找到了這個包,自己處理.當然包時不會導的,所以只能用它提供的命令了. 準備工作 下載imagemagick:ImageMagick – Download 我下載的這個,傻瓜式安裝就行,把所有勾勾都勾上,然后要記住安裝路徑,然…

一文讀懂RDMA: Remote Direct Memory Access(遠程直接內存訪問)

目錄 ?編輯 引言 一、RDMA的基本原理 二、RDMA的主要特點 三、RDMA的編程接口 四、RDMA的代碼演示 服務器端代碼&#xff1a; 客戶端代碼&#xff1a; 五、總結 引言 RDMA&#xff0c;全稱Remote Direct Memory Access&#xff0c;即遠程直接內存訪問&#xff0c;是…

客戶機/服務器交互模式

目錄 概述 網絡應用軟件的地位和功能 C/S 模式的特性 容易混淆的術語 C/S 模式的通信過程 網絡協議與 C/S 模式的關系 錯綜復雜的 C/S 交互 總結 概述 客戶機/服務器&#xff08;Client/Server&#xff0c;簡稱 C/S&#xff09;交互模式是一種常見的網絡應用軟件架構&a…

【ChatGPT】 Microsoft Edge 瀏覽器擴展使用 GPT

【ChatGPT】添加 Microsoft Edge 瀏覽器插件免費使用 GPT 文章目錄 準備工作添加擴展注意事項 使用 ChatGPT 可以更高效的搜索到想要的內容&#xff0c;有效節約在搜索引擎中排查正確信息的時間。 準備工作 準備一臺可上網的電腦電腦上安裝有 Windows 自帶的 Microsoft Edge …

二.常見算法--貪心算法

&#xff08;1&#xff09;單源點最短路徑問題 問題描述&#xff1a; 給定一個圖&#xff0c;任取其中一個節點為固定的起點&#xff0c;求從起點到任意節點的最短路徑距離。 例如&#xff1a; 思路與關鍵點&#xff1a; 以下代碼中涉及到宏INT_MAX,存在于<limits.h>中…

python+selenium - UI自動框架之封裝查找元素

單一的元素定位方法不能滿足所有元素的定位&#xff0c;可以根據每個元素的特點來找到合適的方法&#xff0c;可以參考下圖的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

Vue filter實戰詳解

在 Vue.js 中&#xff0c;filter 是一種用于在模板中對數據進行格式化的功能。它可以用來對數據進行處理、過濾或格式化&#xff0c;然后在模板中直接使用。 filter 是一種全局的 Vue 實例方法&#xff0c;可以在任何組件的模板中使用。 1.定義全局過濾器&#xff1a; 在 Vue…

InnoDB如何解決幻讀的

InnoDB 使用一種稱為 Next-Key Locking 的鎖機制來解決幻讀問題。幻讀發生在一個事務在讀取某個范圍內的記錄時&#xff0c;另一個事務在這個范圍內插入新的記錄。InnoDB 的 Next-Key Locking 結合了行鎖&#xff08;Row Lock&#xff09;和間隙鎖&#xff08;Gap Lock&#xf…