0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

深度解析Linux中的DNS服務

馬哥Linux運維 ? 來源:CSDN技術(shù)社區(qū) ? 2025-04-09 16:13 ? 次閱讀

DNS服務(Linux

DNS 介紹

dns,Domain Name Server,它的作用是將域名解析為 IP 地址,或者將IP地址解析為域名。

這需要運行在三層和四層,也就是說它需要使用 TCP 或UDP 協(xié)議,并且需要綁定端口,53。在使用時先通過 UDP 去查詢,哪里 UDP 查詢不到再使用 TCP 查詢。

bind軟件

安裝

[root@localhost ~]# dnf install bind -y
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

BaseOS                                            2.7 MB/s | 2.7 kB   00:00  
AppStream                                           2.9 MB/s | 3.2 kB   00:00  
Dependencies resolved.
==============================================================================================================================
Package              Architecture      Version               Repository         Size
==============================================================================================================================
Installing:
bind               x86_64         32:9.16.23-24.el9_5         appStream         509 k
Installing dependencies:
bind-dnssec-doc          noarch         32:9.16.23-24.el9_5         appStream         49 k
bind-libs             x86_64         32:9.16.23-24.el9_5         appStream         1.2 M
bind-license           noarch         32:9.16.23-24.el9_5         appStream         14 k
fstrm               x86_64         0.6.1-3.el9             appStream         30 k
libmaxminddb           x86_64         1.5.2-4.el9             appStream         35 k
libuv               x86_64         1:1.42.0-2.el9_4          appStream         151 k
protobuf-c            x86_64         1.3.3-13.el9            baseOS           37 k
python3-bind           noarch         32:9.16.23-24.el9_5         appStream         72 k
python3-ply            noarch         3.11-14.el9             baseOS          111 k
Installing weak dependencies:
bind-dnssec-utils         x86_64         32:9.16.23-24.el9_5         appStream         122 k
bind-utils            x86_64         32:9.16.23-24.el9_5         appStream         213 k

Transaction Summary
==============================================================================================================================
Install 12 Packages

Total size: 2.6 M
Installed size: 7.2 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
 Preparing    :                                                   1/1
 Installing    : bind-license-32:9.16.23-24.el9_5.noarch                               1/12
 Installing    : protobuf-c-1.3.3-13.el9.x86_64                                   2/12
 Installing    : libuv-1:1.42.0-2.el9_4.x86_64                                    3/12
 Installing    : libmaxminddb-1.5.2-4.el9.x86_64                                   4/12
 Installing    : fstrm-0.6.1-3.el9.x86_64                                      5/12
 Installing    : bind-libs-32:9.16.23-24.el9_5.x86_64                                6/12
 Installing    : bind-utils-32:9.16.23-24.el9_5.x86_64                                7/12
 Installing    : bind-dnssec-doc-32:9.16.23-24.el9_5.noarch                             8/12
 Installing    : python3-ply-3.11-14.el9.noarch                                   9/12
 Installing    : python3-bind-32:9.16.23-24.el9_5.noarch                              10/12
 Installing    : bind-dnssec-utils-32:9.16.23-24.el9_5.x86_64                            11/12
 Running scriptlet: bind-32:9.16.23-24.el9_5.x86_64                                  12/12
 Installing    : bind-32:9.16.23-24.el9_5.x86_64                                  12/12
 Running scriptlet: bind-32:9.16.23-24.el9_5.x86_64                                  12/12
 Verifying    : protobuf-c-1.3.3-13.el9.x86_64                                   1/12
 Verifying    : python3-ply-3.11-14.el9.noarch                                   2/12
 Verifying    : bind-32:9.16.23-24.el9_5.x86_64                                   3/12
 Verifying    : bind-dnssec-doc-32:9.16.23-24.el9_5.noarch                             4/12
 Verifying    : bind-dnssec-utils-32:9.16.23-24.el9_5.x86_64                            5/12
 Verifying    : bind-libs-32:9.16.23-24.el9_5.x86_64                                6/12
 Verifying    : bind-license-32:9.16.23-24.el9_5.noarch                               7/12
 Verifying    : bind-utils-32:9.16.23-24.el9_5.x86_64                                8/12
 Verifying    : fstrm-0.6.1-3.el9.x86_64                                      9/12
 Verifying    : libmaxminddb-1.5.2-4.el9.x86_64                                  10/12
 Verifying    : libuv-1:1.42.0-2.el9_4.x86_64                                   11/12
 Verifying    : python3-bind-32:9.16.23-24.el9_5.noarch                              12/12
Installed products updated.

Installed:
 bind-32:9.16.23-24.el9_5.x86_64                bind-dnssec-doc-32:9.16.23-24.el9_5.noarch         
 bind-dnssec-utils-32:9.16.23-24.el9_5.x86_64          bind-libs-32:9.16.23-24.el9_5.x86_64            
 bind-license-32:9.16.23-24.el9_5.noarch            bind-utils-32:9.16.23-24.el9_5.x86_64           
 fstrm-0.6.1-3.el9.x86_64                    libmaxminddb-1.5.2-4.el9.x86_64              
 libuv-1:1.42.0-2.el9_4.x86_64                 protobuf-c-1.3.3-13.el9.x86_64               
 python3-bind-32:9.16.23-24.el9_5.noarch            python3-ply-3.11-14.el9.noarch               

Complete!


DNS 服務中的 bind
bind(Berkeley Internet Name Domain)是 Linux 系統(tǒng)中廣泛使用的 DNS(Domain Name System)服務器軟件。
功能:它的主要功能是將域名解析為 IP 地址,或者將 IP 地址反向解析為域名。借助 bind,你可以搭建自己的 DNS 服務器,對域名解析進行管理和配置。
配置:bind 的配置文件通常位于 /etc/bind 目錄下,主要的配置文件是 named.conf,而區(qū)域文件則用于定義具體的域名解析規(guī)則。
示例配置:

// named.conf.options
options {
  directory "/var/cache/bind";
  forwarders {
    8.8.8.8;
    8.8.4.4;
  };
  dnssec-validation auto;
  auth-nxdomain no;  # conform to RFC1035
  listen-on-v6 { any; };
};

// named.conf.local
zone "example.com" {
  type master;
  file "/etc/bind/db.example.com";
};

// db.example.com
$TTL  604800
@    IN   SOA   ns1.example.com. admin.example.com. (
               2     ; Serial
            604800     ; Refresh
             86400     ; Retry
            2419200     ; Expire
            604800 )    ; Negative Cache TTL
;
@    IN   NS   ns1.example.com.
@    IN   A    192.168.1.100
ns1   IN   A    192.168.1.100
www   IN   A    192.168.1.100



在這些配置文件中,定義了 DNS 服務器的全局選項、域名區(qū)域以及具體的解析記錄。通過配置 bind,你可以讓 DNS 服務器依據(jù)這些規(guī)則進行域名解析。










查看

[root@localhost ~]# rpm -ql bind
/etc/named.conf   # 主配置文件
/etc/named.rfc1912.zones  # 區(qū)域數(shù)據(jù)配置文件
......
/var/named   # 區(qū)域數(shù)據(jù)文件存放目錄
/var/named/named.empty # 正向解析模板文件
/var/named/named.localhost
/var/named/named.loopback # 反向解析模板文件
/var/named/slaves    # 輔助區(qū)域配置文件存放目錄
.......
/usr/lib/systemd/system/named.service    # 服務啟動文件






查看正向解析模板文件

[root@localhost ~]# cat /var/named/named.empty
$TTL 3H
@  IN SOA @ rname.invalid. (
          0  ; serial  序號
          1D ; refresh 刷新時間
          1H ; retry   重試時間
          1W ; expire  過期時間
          3H )  ; minimum 否定緩存時間
  NS @
  A  127.0.0.1
  AAAA  ::1

整體結(jié)構(gòu)概述
此區(qū)域文件包含了起始授權(quán)機構(gòu)(SOA)記錄、名稱服務器(NS)記錄、IPv4 地址記錄(A)和 IPv6 地址記錄(AAAA)。這些記錄為 DNS 解析提供了關(guān)鍵信息。
詳細解釋
1. $TTL 3H
$TTL 是一個指令,用來設置該區(qū)域文件里所有資源記錄的默認生存時間(Time To Live)。
3H 代表 3 小時,意味著這些記錄在 DNS 緩存中的有效時長為 3 小時。超過這個時間,緩存中的記錄將被視為無效,需要重新從權(quán)威 DNS 服務器獲取。
2. @ IN SOA @ rname.invalid. (
@:在區(qū)域文件里,@ 是一個占位符,代表該區(qū)域的域名。一般而言,它會被替換為該區(qū)域的實際域名。
IN:表明這是一個 Internet 類的 DNS 記錄,這是最常見的 DNS 記錄類型。
SOA:即起始授權(quán)機構(gòu)(Start of Authority)記錄,它是每個 DNS 區(qū)域文件中必不可少的記錄,為該區(qū)域提供權(quán)威信息。
@:作為主名稱服務器,這里的 @ 同樣代表該區(qū)域的域名。
rname.invalid.:這是負責該區(qū)域的管理員的電子郵件地址。由于 DNS 不允許使用 @ 符號,所以用 . 來替代。比如 rname.invalid. 實際上代表 rname@invalid。
3. 序列號及相關(guān)時間參數(shù)
plaintext
0  ; serial 序號
1D ; refresh 刷新時間
1H ; retry  重試時間
1W ; expire 過期時間
3H ; minimum 否定緩存時間
serial(序列號):其值為 0,這個序列號用于標識區(qū)域文件的版本。當區(qū)域文件內(nèi)容有更新時,序列號需要增加,這樣從屬 DNS 服務器就能通過比較序列號來判斷是否需要更新本地緩存。
refresh(刷新時間):1D 代表 1 天,從屬 DNS 服務器每隔 1 天就會嘗試從主 DNS 服務器獲取最新的區(qū)域文件。
retry(重試時間):1H 代表 1 小時,若從屬 DNS 服務器在刷新區(qū)域文件時失敗,會在 1 小時后再次嘗試。
expire(過期時間):1W 代表 1 周,若從屬 DNS 服務器在 1 周內(nèi)都無法從主 DNS 服務器獲取最新的區(qū)域文件,那么它將認為該區(qū)域文件已過期,不再提供該區(qū)域的解析服務。
minimum(否定緩存時間):3H 代表 3 小時,當 DNS 查詢得到否定響應(如域名不存在)時,該否定響應會在緩存中保留 3 小時。
4. NS @
NS:即名稱服務器(Name Server)記錄,它指定了負責該區(qū)域的 DNS 服務器。
@:這里代表該區(qū)域的域名,表明該區(qū)域的權(quán)威 DNS 服務器就是該區(qū)域本身。
5. A 127.0.0.1
A:是 IPv4 地址記錄,它將域名映射到對應的 IPv4 地址。
127.0.0.1:這是本地回環(huán)地址,意味著該區(qū)域的域名解析到本地主機。
6. AAAA ::1
AAAA:為 IPv6 地址記錄,它把域名映射到對應的 IPv6 地址。
::1:這是 IPv6 的本地回環(huán)地址,表明該區(qū)域的域名在 IPv6 環(huán)境下解析到本地主機。
總結(jié)
這個 named.empty 文件構(gòu)建了一個基礎的 DNS 區(qū)域,把域名解析到本地主機,并且設定了區(qū)域文件的更新和緩存策略。在實際應用中,你需要依據(jù)具體需求對這些記錄進行修改和擴展。










查看反向解析模板文件

[root@localhost ~]# cat /var/named/named.loopback
$TTL 1D
@  IN SOA @ rname.invalid. (
          0  ; serial
          1D ; refresh
          1H ; retry
          1W ; expire
          3H )  ; minimum
  NS @
  A  127.0.0.1
  AAAA  ::1
  PTR localhost.

1. PTR 記錄的用途
正常情況下,DNS 的正向解析是把域名解析為 IP 地址,比如通過 www.example.com 解析出對應的 IP 地址(如 192.168.1.100)。而反向解析則是相反的過程,它依據(jù) IP 地址找出對應的域名。反向解析在很多場景中都很重要,例如郵件服務器驗證、網(wǎng)絡安全審計等。

2. PTR localhost. 的具體解釋
PTR:這是記錄類型,表明這是一條反向解析記錄。
localhost.:這是與 IP 地址對應的域名。結(jié)合前面的 A 記錄 A 127.0.0.1 和 AAAA 記錄 AAAA ::1,這里的 PTR localhost. 表示將 IPv4 地址 127.0.0.1 和 IPv6 地址 ::1 反向解析為域名 localhost.。










服務啟動文件

[root@localhost ~]# cat /usr/lib/systemd/system/named.service
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=named-setup-rndc.service
After=network.target

[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/run/named/named.pid

ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS
ExecReload=/bin/sh -c 'if /usr/sbin/rndc null > /dev/null 2>&1; then /usr/sbin/rndc reload; else /bin/kill -HUP $MAINPID; fi'

ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'

PrivateTmp=true

[Install]
WantedBy=multi-user.target










查看主配置文件

[root@localhost~]# cat /etc/named.conf
# 配置的核心選項
options {
 # 監(jiān)聽哪個主機的 53 端口,以IPv4的格式來監(jiān)聽,一般寫當前主機的IP地址。注意此文件中每一行結(jié)束使用的分號
 listen-on port53{127.0.0.1; };
 listen-on-v6port53{ ::1; };
 # 指定區(qū)域數(shù)據(jù)文件存放目錄
  directory "/var/named";
 # 指定緩存文件所在路徑
 dump-file "/var/named/data/cache_dump.db";
 # 指定統(tǒng)計文件所在路徑
  statistics-file"/var/named/data/named_stats.txt";
  memstatistics-file"/var/named/data/named_mem_stats.txt";
 # 指定安全文件所在路徑
  secroots-file "/var/named/data/named.secroots";
  recursing-file "/var/named/data/named.recursing";
 # 是否允許查詢,此配置可以刪除,如果允許所有人查詢,將它的值設置為 any,如果值為 localhost則表示只能當前主機查詢
  allow-query   { localhost; };

 # 是否允許遞歸查詢,一般會設置為 false
  recursion yes;

  dnssec-validation yes;

  managed-keys-directory"/var/named/dynamic";
  geoip-directory"/usr/share/GeoIP";

 # 進程pid文件
  pid-file"/run/named/named.pid";
  session-keyfile"/run/named/session.key";

 # 包含的配置
  include"/etc/crypto-policies/back-ends/bind.config";
};
# 日志配置
logging {
    channel default_debug {
        file"data/named.run";
        severity dynamic;
    };
};
# 根服務配置
zone"."IN {
  type hint;
  file"named.ca";
};
# 引入的區(qū)域數(shù)據(jù)配置文件
include"/etc/named.rfc1912.zones";
include"/etc/named.root.key";










DNS正向解析配置

需求:將 www.example.com 解析為你們電腦中虛擬機的IP地址,比如我們 IP是 192.168.153.7

實現(xiàn)步驟

1、安裝bind軟件

2、修改主配置文件

[root@localhost ~]# vim /etc/named.conf
options {
    listen-on port 53 { 192.168.72.135; };
    directory    "/var/named";
};
zone "example.com" IN {
    type master;
    file "example.zone";
};


詳細解釋:
全局選項部分(options 塊)

options {
    listen-on port 53 { 192.168.72.135; };
    directory     "/var/named";
};

listen-on port 53 { 192.168.72.135; };
listen-on:此指令用于指定 DNS 服務器監(jiān)聽的網(wǎng)絡接口和端口。
port 53:表明 DNS 服務器將在 TCP 和 UDP 的 53 號端口上監(jiān)聽請求,因為 53 號端口是 DNS 服務的標準端口。
{ 192.168.72.135; }:這里指定了 DNS 服務器僅監(jiān)聽 IP 地址為 192.168.72.135 的網(wǎng)絡接口。也就是說,只有發(fā)往該 IP 地址 53 號端口的 DNS 請求才會被處理。如果有多塊網(wǎng)卡或多個 IP 地址,你可以添加多個 IP 地址,例如 { 192.168.72.135; 192.168.72.136; }。
directory "/var/named";
directory:該指令定義了 DNS 服務器查找區(qū)域文件的默認目錄。區(qū)域文件包含了域名到 IP 地址的映射等 DNS 記錄。在這個配置中,所有區(qū)域文件都將從 /var/named 目錄下查找。例如,后續(xù)配置中提到的 example.zone 文件就會在這個目錄下尋找。
區(qū)域配置部分(zone 塊)

zone "example.com" IN {
    type master;
    file "example.zone";
};

zone "example.com" IN
zone:這是定義一個 DNS 區(qū)域的關(guān)鍵字。
"example.com":指定了要配置的域名區(qū)域,即 example.com。這個區(qū)域包含了與 example.com 相關(guān)的所有 DNS 記錄。
IN:表示這是一個 Internet 類的 DNS 區(qū)域,這是最常見的區(qū)域類型。
type master;
type:用于指定該區(qū)域的類型,這里的 master 表明這臺 DNS 服務器是 example.com 區(qū)域的主服務器。主服務器擁有該區(qū)域的權(quán)威數(shù)據(jù),它可以對區(qū)域文件進行修改,并將更新同步給從屬服務器。
file "example.zone";
file:指定了存儲該區(qū)域 DNS 記錄的文件名稱。在這個配置中,example.com 區(qū)域的所有 DNS 記錄都存儲在 /var/named/example.zone 文件中。該文件應包含如 SOA(起始授權(quán)機構(gòu))、NS(名稱服務器)、A(IPv4 地址記錄)等各種 DNS 記錄。
總結(jié)
這個配置文件的主要作用是讓 DNS 服務器監(jiān)聽特定 IP 地址的 53 號端口,將 /var/named 作為區(qū)域文件的存儲目錄,并將 example.com 區(qū)域的管理職責賦予這臺服務器,相關(guān)的 DNS 記錄存儲在 example.zone 文件中。










3、檢測主配置文件是否有語法錯誤

[root@localhost ~]# named-checkconf

[root@tomcat1 /]# named-checkconf
/etc/named.conf '{' expected near '53'
有提示說明有錯誤,沒有提示說明正確,以上錯誤可能是你沒寫port








執(zhí)行這條命令后,如果沒有輸出任何信息表示主配置文件沒有錯誤。

4、編寫區(qū)域數(shù)據(jù)配置文件

[root@localhost ~]# vim /var/named/example.zone
$TTL  1D
@    IN   SOA   ns.example.com. admin.example.com. (
                            0
                            1H
                            1W
                            2M
                            1D
                            )
    IN   NS   ns
    IN   MX 5  mail
ns   IN   A    192.168.72.135   # NS 記錄要批向當前DNS服務器的IP地址
www   IN   A    10.10.10.11
mail  IN   A    92.68.22.14
web   IN   CNAME  www         # CNAME記錄是別名記錄

你提供的 example.zone 文件是一個 DNS 區(qū)域文件,用于定義 example.com 域名的 DNS 記錄。下面為你詳細解釋文件中各部分的含義:
1. $TTL 1D
$TTL 是一個指令,用于設置該區(qū)域文件中所有資源記錄的默認生存時間(Time To Live)。
1D 表示 1 天,意味著這些記錄在 DNS 緩存中的有效時間為 1 天。超過這個時間,緩存中的記錄將被視為無效,需要重新從權(quán)威 DNS 服務器獲取。
2. @ IN SOA ns.example.com. admin.example.com. (...)
@:在區(qū)域文件中,@ 是一個占位符,代表該區(qū)域的域名,即 example.com。
IN:表示這是一個 Internet 類的 DNS 記錄,這是最常見的 DNS 記錄類型。
SOA:即起始授權(quán)機構(gòu)(Start of Authority)記錄,是每個 DNS 區(qū)域文件中必須存在的記錄,為該區(qū)域提供權(quán)威信息。
ns.example.com.:主名稱服務器的域名,負責該區(qū)域的 DNS 解析。
admin.example.com.:負責該區(qū)域的管理員的電子郵件地址。由于 DNS 不允許使用 @ 符號,所以用 . 來替代。例如 admin.example.com. 實際上代表 admin@example.com。
序列號及相關(guān)時間參數(shù)
plaintext
0    ; serial 序列號
1H   ; refresh 刷新時間
1W   ; retry  重試時間
2M   ; expire 過期時間
1D   ; minimum 否定緩存時間
serial(序列號):值為 0,這個序列號用于標識區(qū)域文件的版本。當區(qū)域文件內(nèi)容有更新時,序列號需要增加,以便從屬 DNS 服務器通過比較序列號來判斷是否需要更新本地緩存。
refresh(刷新時間):1H 表示 1 小時,從屬 DNS 服務器每隔 1 小時會嘗試從主 DNS 服務器獲取最新的區(qū)域文件。
retry(重試時間):1W 表示 1 周,如果從屬 DNS 服務器在刷新區(qū)域文件時失敗,會在 1 周后再次嘗試。
expire(過期時間):2M 表示 2 個月,如果從屬 DNS 服務器在 2 個月內(nèi)都無法從主 DNS 服務器獲取最新的區(qū)域文件,那么它將認為該區(qū)域文件已過期,不再提供該區(qū)域的解析服務。
minimum(否定緩存時間):1D 表示 1 天,當 DNS 查詢得到否定響應(如域名不存在)時,該否定響應會在緩存中保留 1 天。
3. IN NS ns
NS:即名稱服務器(Name Server)記錄,指定了負責該區(qū)域的 DNS 服務器。
ns:這里的 ns 實際上是 ns.example.com 的簡寫,表示該區(qū)域的權(quán)威 DNS 服務器是 ns.example.com。
4. IN MX 5 mail
MX:即郵件交換器(Mail Exchanger)記錄,用于指定接收該域名電子郵件的郵件服務器。
5:是優(yōu)先級,數(shù)值越小,優(yōu)先級越高。
mail:實際上是 mail.example.com 的簡寫,表示 mail.example.com 是接收 example.com 域名電子郵件的郵件服務器。
5. ns IN A 192.168.72.135
A:是 IPv4 地址記錄,將域名映射到對應的 IPv4 地址。
ns:即 ns.example.com,表示 ns.example.com 的 IPv4 地址是 192.168.72.135。
6. www IN A 10.10.10.11
A:IPv4 地址記錄。
www:即 www.example.com,表示 www.example.com 的 IPv4 地址是 10.10.10.11。
7. mail IN A 92.68.22.14
A:IPv4 地址記錄。
mail:即 mail.example.com,表示 mail.example.com 的 IPv4 地址是 92.68.22.14。
8. web IN CNAME www
CNAME:即規(guī)范名稱(Canonical Name)記錄,也稱為別名記錄。
web:即 web.example.com,表示 web.example.com 是 www.example.com 的別名,訪問 web.example.com 實際上會被解析為 www.example.com 的 IP 地址。
總結(jié)
這個 example.zone 文件定義了 example.com 域名的 DNS 記錄,包括主名稱服務器、郵件服務器、Web 服務器等的相關(guān)信息,以及它們對應的 IP 地址和別名。這些記錄為 DNS 解析提供了必要的信息,使得用戶可以通過域名訪問相應的服務。










5、檢測區(qū)域數(shù)據(jù)匹配文件的語法

# 格式:named-checkzone 要解析的域名  這個域名解析對應區(qū)域數(shù)據(jù)文件的路徑
[root@localhost ~]# named-checkzone example.com /var/named/example.zone
zone example.com/IN: loaded serial 0
OK






6、啟動服務

`[root@localhost ~]# systemctl start named`



7、檢測解析是否成功

# 1. 解析NS記錄
# 使用格式:dig -t 要解析的記錄類型 域名   @DNS服務器的IP地址
[root@localhost ~]# dig -t NS example.com @192.168.72.135

; <<>> DiG 9.16.23-RH <<>> -t NS example.com @192.168.72.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12332
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 4d561b462550d8b20100000067e9400ac355adc305b548e5 (good)
;; QUESTION SECTION:
;example.com. ? ? ? ? ? IN ?NS

;; ANSWER SECTION:
example.com. ? ? ? ?86400 ? IN ?NS ?ns.example.com.

;; ADDITIONAL SECTION:
ns.example.com. ? ? 86400 ? IN ?A ? 192.168.72.135

;; Query time: 0 msec
;; SERVER: 192.168.72.135#53(192.168.72.135)
;; WHEN: Sun Mar 30 2050 CST 2025
;; MSG SIZE ?rcvd: 101


# 2. 解析A記錄
[root@localhost ~]# dig -t A www.example.com @192.168.72.135

; <<>> DiG 9.16.23-RH <<>> -t A www.example.com @192.168.72.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53940
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: b6d24840a685a6930100000067e940958baf9d4b8a53e81f (good)
;; QUESTION SECTION:
;www.example.com. ? ? ? IN ?A

;; ANSWER SECTION:
www.example.com. ? ?86400 ? IN ?A ? 10.10.10.11

;; Query time: 0 msec
;; SERVER: 192.168.72.135#53(192.168.72.135)
;; WHEN: Sun Mar 30 2109 CST 2025
;; MSG SIZE ?rcvd: 88










以上代碼具體作用:

命令一:dig -t NS example.com @192.168.72.135
命令解析
dig:這是一個在 Linux、Unix 以及 macOS 系統(tǒng)里常用的 DNS 查詢工具,其功能是向 DNS 服務器發(fā)送查詢請求,并且顯示響應結(jié)果。
-t NS:-t 是 dig 命令里用于指定查詢記錄類型的選項,NS 代表名稱服務器(Name Server)記錄。該記錄的作用是指定負責某個域名的權(quán)威 DNS 服務器。
example.com:此為要查詢的域名。
@192.168.72.135:@ 后面跟的是 DNS 服務器的 IP 地址,意味著要向 192.168.72.135 這個 DNS 服務器發(fā)起查詢請求。
命令作用
這條命令的用途是向 IP 地址為 192.168.72.135 的 DNS 服務器查詢 example.com 域名的 NS 記錄,也就是獲取負責 example.com 域名的權(quán)威 DNS 服務器列表。
命令二:dig -t A www.example.com @192.168.72.135
命令解析
dig:同樣是 DNS 查詢工具。
-t A:A 代表 IPv4 地址記錄,該記錄的作用是將域名映射到對應的 IPv4 地址。
www.example.com:要查詢的具體域名。
@192.168.72.135:指定向 192.168.72.135 這個 DNS 服務器發(fā)起查詢請求。
命令作用
這條命令的用途是向 IP 地址為 192.168.72.135 的 DNS 服務器查詢 www.example.com 域名的 A 記錄,也就是獲取 www.example.com 對應的 IPv4 地址。
總結(jié)
這兩條 dig 命令能夠幫助你驗證 DNS 服務器的配置是否正確,以及域名解析是否能夠正常工作。通過查詢不同類型的 DNS 記錄,你可以了解域名的權(quán)威 DNS 服務器信息和具體的 IP 地址映射情況。










DNS反向解析配置

需求:將 192.168.72.135 解析為 www.exampe.com。

實現(xiàn):

1、修改主配置文件

[root@localhost ~]# vim /etc/named.conf
options {
    listen-on port 53 { 192.168.72.135; };
    directory    "/var/named";
};
zone "72.168.192.in-addr.arpa" IN {
    type master;
    file "fanxiang.zone";
};
2、檢測主配置文件的語法

[root@localhost ~]# named-checkconf
3、編寫區(qū)域數(shù)據(jù)反向解析文件

[root@localhost ~]# vim /var/named/fanxiang.zone
$TTL  1D
@    IN   SOA   ns.example.com. amdin.example.com. (
                    7
                    1D
                    1W
                    2M
                    1D )
    IN   NS   ns
ns   IN   A    192.168.72.135
135   IN   PTR   www.example.com.
4、檢測區(qū)域文件的語法

[root@localhost ~]# named-checkzone 72.168.192.in-addr.arpa /var/named/fanxiang.zone
zone 72.168.192.in-addr.arpa/IN: loaded serial 7
OK
5、啟動服務

[root@localhost ~]# systemctl restart named
6、功能測試

[root@localhost ~]# dig -x 192.168.72.135 @192.168.72.135

; <<>> DiG 9.16.23-RH <<>> -x 192.168.72.135 @192.168.72.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54279
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: be29844f0e1189e30100000067e9456f6d407ccdce24d52e (good)
;; QUESTION SECTION:
;135.72.168.192.in-addr.arpa. ? IN ?PTR

;; ANSWER SECTION:
135.72.168.192.in-addr.arpa. 86400 IN ? PTR www.example.com.72.168.192.in-addr.arpa.

;; Query time: 0 msec
;; SERVER: 192.168.72.135#53(192.168.72.135)
;; WHEN: Sun Mar 30 2151 CST 2025
;; MSG SIZE ?rcvd: 137











[root@localhost ~]# dig -x 192.168.72.135 @192.168.72.135詳解

dig -x 192.168.72.135 @192.168.72.135 這條命令使用了 dig 工具來進行 DNS 查詢,下面為你詳細解釋該命令的各個部分及其作用:
命令解析
dig
dig(Domain Information Groper)是一個在 Linux、Unix 以及 macOS 系統(tǒng)中常用的 DNS 診斷工具,它的主要功能是向 DNS 服務器發(fā)送查詢請求,并顯示詳細的響應結(jié)果,常用于測試 DNS 服務器配置、排查域名解析問題等。
-x
-x 是 dig 命令的一個選項,它是進行反向 DNS 查找(Reverse DNS Lookup)的快捷方式。反向 DNS 查找與正向 DNS 查找相反,正向查找是將域名解析為對應的 IP 地址,而反向查找則是根據(jù)給定的 IP 地址查找對應的域名。當使用 -x 選項時,dig 會自動將 IP 地址轉(zhuǎn)換為相應的反向查找區(qū)域(如 in-addr.arpa 用于 IPv4 地址)并進行查詢。
192.168.72.135
這是要進行反向 DNS 查找的目標 IP 地址。也就是說,你希望通過 DNS 服務器查詢這個 IP 地址對應的域名是什么。
@192.168.72.135
@ 符號用于指定要查詢的 DNS 服務器的 IP 地址。在這個命令中,你指定向 IP 地址為 192.168.72.135 的 DNS 服務器發(fā)起反向查詢請求。
命令作用
這條命令的主要作用是向 IP 地址為 192.168.72.135 的 DNS 服務器發(fā)送一個反向 DNS 查詢請求,以獲取 IP 地址 192.168.72.135 對應的域名。如果該 DNS 服務器配置了相應的反向解析區(qū)域文件,并且其中包含了 192.168.72.135 的反向解析記錄,那么它將返回對應的域名;如果沒有配置或者沒有找到對應的記錄,可能會返回一個表示未找到的結(jié)果。
示例輸出及含義
假設命令執(zhí)行后有如下簡化輸出:
plaintext
; <<>> DiG 9.16.23-RH <<>> -x 192.168.72.135 @192.168.72.135
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52345
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;135.72.168.192.in-addr.arpa. ?IN ? ? ?PTR

;; ANSWER SECTION:
135.72.168.192.in-addr.arpa. 86400 IN ?PTR ? ? myserver.example.com.

;; Query time: 2 msec
;; SERVER: 192.168.72.135#53(192.168.72.135)
;; WHEN: Mon Apr 07 1500 CST 2025
;; MSG SIZE ?rcvd: 103




QUESTION SECTION:顯示了查詢的具體內(nèi)容,這里是對 135.72.168.192.in-addr.arpa 進行 PTR(Pointer,指針記錄,用于反向解析)類型的查詢。
ANSWER SECTION:顯示了查詢的結(jié)果,這里表明 IP 地址 192.168.72.135 對應的域名是 myserver.example.com。
通過這樣的反向查詢,你可以驗證 IP 地址和域名之間的映射關(guān)系是否正確配置,在網(wǎng)絡管理、安全審計等場景中具有重要作用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11479

    瀏覽量

    213056
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5137

    瀏覽量

    89033
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    225

    瀏覽量

    20335
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1046

    瀏覽量

    32773

原文標題:全面解析Linux中的DNS服務:搭建與優(yōu)化指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點推薦

    如何在Linux配置DNS服務

    本文詳細介紹了如何在Linux配置DNS服務器,包括DNS工作原理、本地緩存、DNS查詢過程,
    的頭像 發(fā)表于 05-09 13:38 ?1144次閱讀
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>中</b>配置<b class='flag-5'>DNS</b><b class='flag-5'>服務</b>器

    【Raspberry Pi 3試用體驗】+ 搭建本地DNS服務

    時好時壞。管理下局域網(wǎng)的DNS(雙十一的時候,把某寶網(wǎng)站直接給解析到本地ip,打不開網(wǎng)頁,O(∩_∩)O哈哈~)這里我用的是dnsmasq安裝比較簡單:sudo apt-get install -y
    發(fā)表于 04-24 21:39

    如何解決DNS解析錯誤故障

    以解決域名無法訪問的情況。小技巧:點擊開始->設置->網(wǎng)絡連接->本地連接->屬性->TCP/IP協(xié)議->使用下面的DNS服務器地址,在框輸入“8.8.8.8
    發(fā)表于 09-29 15:14

    LinuxDNS服務器配置分析

    很多平臺平臺提供云解析功能,所謂的云解析就是一個DNS服務器,一般情況下,在域名的提供商購買一個域名之后,會指定一個NS記錄,例如,在域名的提供商購買一下域名miner-k.com.需
    發(fā)表于 07-17 08:14

    DNS攻擊防范科普系列1》—你的DNS服務器真的安全么?

    DNS服務器,即域名服務器,它作為域名和IP地址之間的橋梁,在互聯(lián)網(wǎng)訪問,起到至關(guān)重要的作用。每一個互聯(lián)網(wǎng)上的域名,背后都至少有一個對應的DNS
    發(fā)表于 10-16 15:21

    Win 2000DNS服務器的設置

    Win 2000DNS服務器的設置  DNS Domain Name Service是域名解析服務
    發(fā)表于 02-01 11:51 ?921次閱讀

    Linux如何配置DNS

    ----DNS的功用是把計算機的名稱轉(zhuǎn)換為 IP地址。DNS的使用簡化了系統(tǒng)管理員及客戶對主機文件的操作和維護。 Intranet服務器的系統(tǒng)配置 ----硬件配置:Pentium 133 CPU
    發(fā)表于 11-07 10:44 ?3次下載

    Linux DNS 服務器安裝、配置和維護的詳細解析

    DNS 協(xié)議所要完成的功能。 今天我們將討論DNS服務器,特別是Linux DNS服務
    的頭像 發(fā)表于 12-18 15:08 ?7538次閱讀

    linux無法解析域名怎么辦

    由于linux沒有DNS導致無法解析域名。
    發(fā)表于 05-21 09:23 ?2453次閱讀
    <b class='flag-5'>linux</b>無法<b class='flag-5'>解析</b>域名怎么辦

    虛擬機:Linux查看DNS服務器IP地址的方法

    虛擬機:Linux查看DNS服務器IP地址的方法
    的頭像 發(fā)表于 06-22 15:12 ?1.4w次閱讀
    虛擬機:<b class='flag-5'>Linux</b>查看<b class='flag-5'>DNS</b><b class='flag-5'>服務</b>器IP地址的方法

    DNS服務器和DNS服務器地址是什么

    域名系統(tǒng),屬于一種組織成域?qū)哟谓Y(jié)構(gòu)的計算機和網(wǎng)絡服務器命名系統(tǒng)。域名系統(tǒng)主要用于分配域名地址、IP地址給互聯(lián)網(wǎng)的主機,系統(tǒng)再將用戶提供的域名地址自動轉(zhuǎn)為IP地址。域名服務就是一種用于域名系統(tǒng)的互聯(lián)網(wǎng)工具,
    的頭像 發(fā)表于 03-30 15:57 ?9412次閱讀

    探討DNS服務解析

    本地 DNS 服務器收到來自客戶端的 DNS 請求,它會在其緩存查找 google.com 的 IP 地址。如果它可以找到對應的條目,它將直接將 IP 地址返回給客戶端。否則,本地
    的頭像 發(fā)表于 05-05 15:42 ?1751次閱讀

    如何在 Linux 上查看本地 DNS 緩存

    的 IP 地址。此域 IP 地址對保存在 DNS 緩存供以后使用,因此您不必每次都向 DNS 服務器發(fā)送請求以建立連接。 但有時,本地 DNS
    的頭像 發(fā)表于 06-26 10:52 ?3737次閱讀
    如何在 <b class='flag-5'>Linux</b> 上查看本地 <b class='flag-5'>DNS</b> 緩存

    DNS服務器是什么?有哪些類型?

    ,小編我給大家分析一下DNS服務器是什么?有哪些類型? 一、DNS服務器是什么? DNS服務器是
    的頭像 發(fā)表于 08-14 17:40 ?2694次閱讀

    【教程】DNS域名解析服務systemd-resolved使用指南

    1.關(guān)于DNS解析服務DNS(DomainNameSystem),即域名系統(tǒng)。一句話總結(jié)DNS解析
    的頭像 發(fā)表于 01-09 19:34 ?915次閱讀
    【教程】<b class='flag-5'>DNS</b>域名<b class='flag-5'>解析</b><b class='flag-5'>服務</b>systemd-resolved使用指南

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品