CentOS7 DNS詳解

一、DNS基礎

DNS(Domain Name System),域名系統是互聯網的一項非常重要的基礎設施,它將人類可讀的主機名轉換成計算機可讀的IP地址,DNS系統是一種分布式數據庫系統,它由許多DNS服務器組成,這些服務器通過共同工作來完成DNS查詢請求。

在DNS中,域名被分為多個層次,每個層次中包含多個子域名。例如,edu.cn是一個域名,它包含了.edu和.cn兩個子域名。在DNS樹形結構中,最頂層是根域名點,它並不包含其他子域名,而是包含了所有頂級域名,如.com、.edu等。下面是一張DNS樹形結構示意圖:

.
|
+--com
|  |
|  +--example
|  |
|  +--...
|
+--edu
   |
   +--china
   |
   +--...

當我們在瀏覽器中輸入一個域名時,瀏覽器首先從本地DNS緩存中尋找是否有該域名的解析結果。如果沒有,則向本地DNS服務器發送查詢請求。本地DNS服務器將查詢請求進一步轉發到更高層次的DNS服務器,直到找到該域名對應的IP地址,然後將結果返回給瀏覽器,瀏覽器再通過該IP地址訪問對應的服務器。

二、CentOS7下的DNS配置

CentOS7默認使用的是systemd-resolved服務,該服務通過systemd來管理,並且已經被集成到systemd的網絡配置中,作為CentOS7下的系統級DNS服務器。在CentOS7中,可以通過以下命令來查看systemd-resolved服務的狀態:

systemctl status systemd-resolved

如果該服務沒有啟動,則可以通過以下命令來啟動:

systemctl start systemd-resolved

CentOS7下的DNS配置文件為/etc/resolv.conf,該文件保存了系統級別的DNS解析配置。使用該文件可以設置DNS服務器地址、域名搜索路徑等信息,格式如下:

nameserver DNS服務器地址
search 域名搜索路徑

在/etc/resolv.conf文件中如果添加了nameserver和search配置,則查詢DNS時會優先使用這裡配置的DNS服務器和域名搜索路徑,如果沒有配置,則會使用127.0.0.53作為DNS服務器,默認使用systemd-resolved服務解析。

三、使用DNS查詢命令

DNS的查詢工具有很多,其中最常用的工具是nslookup和dig。

1、nslookup

nslookup是一個非常常用的DNS查詢命令工具,它可以查詢指定主機的DNS信息,例如主機名、IP地址、域名Server等。使用該命令可以檢查DNS服務器是否能夠正確解析域名。例如,通過以下命令可以查詢baidu.com的IP地址:

nslookup baidu.com

執行結果為:

Server:    8.8.8.8
Address 1: 8.8.8.8
Address 2: 8.8.4.4

Name:      baidu.com
Addresses: 220.181.38.148
           220.181.57.217
           39.156.66.14
           180.101.49.11

在查詢域名時,nslookup也會自動讀取/etc/resolv.conf文件中的DNS服務器信息,並使用它來進行DNS解析。

2、dig

dig是另一個強大而又靈活的DNS查詢命令,它不僅可以查詢DNS解析結果,還可以輸出DNS的詳細信息、控制查詢策略等。例如,通過以下命令可以查詢baidu.com的IP地址:

dig baidu.com

執行結果為:

; <> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13440
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		212	IN	A	39.156.69.79
baidu.com.		212	IN	A	39.156.69.83
baidu.com.		212	IN	A	39.156.69.84
baidu.com.		212	IN	A	39.156.69.85

;; Query time: 0 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jul 15 10:02:01 CST 2020
;; MSG SIZE  rcvd: 87

與nslookup類似,dig也會從/etc/resolv.conf文件中讀取DNS服務器信息,然後使用它進行DNS解析。

四、BIND的安裝和配置

BIND是一個非常流行的DNS服務器軟件,它支持大多數的UNIX和Linux操作系統,以及Windows等。在CentOS7中,我們可以使用yum來安裝BIND:

yum install bind bind-utils

安裝完成之後,可以通過以下命令來啟動BIND服務:

systemctl start named

BIND服務的配置文件保存在/etc/named.conf文件中,該文件包含了DNS服務器的配置信息,我們可以通過修改該文件來配置BIND服務器。例如,以下是一個基本的named.conf配置文件示例:

options {
        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { none; };
        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";
        allow-query     { localhost; };
        recursion yes;
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

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

以上named.conf配置文件中包含了DNS的基本設置,可以根據實際情況進行修改。

五、使用BIND服務器

在使用BIND服務器時,我們需要將其配置為系統級別DNS服務器,即將/etc/resolv.conf文件中的nameserver地址修改為BIND服務器地址,如:

nameserver 192.168.0.1
search mydomain.com

然後重啟named服務:

systemctl restart named

現在,我們就可以使用nslookup或dig來查詢BIND服務器配置的DNS解析結果了。例如:

nslookup www.baidu.com
dig www.baidu.com

六、總結

本文簡單介紹了CentOS7下的DNS服務和兩個常用的DNS查詢命令nslookup和dig,以及如何安裝、配置和使用BIND服務器。通過不斷深入學習和實踐,我們可以更好地理解和掌握DNS系統相關的知識和技能。

原創文章,作者:SQHTF,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370777.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SQHTF的頭像SQHTF
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相關推薦

  • CentOS 6如何刪除resolv.conf的DNS

    本文將介紹在CentOS 6操作系統下如何刪除resolv.conf文件中的DNS配置信息。 一、備份resolv.conf文件 在修改resolv.conf文件之前,建議首先備份…

    編程 2025-04-29
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25

發表回復

登錄後才能評論