DNS服務(Linux)
DNS 介紹
dns,Domain Name Server,它的作用是將域名解析為 IP 地址,或者將IP地址解析為域名。
這需要運行在三層和四層,也就是說它需要使用 TCP 或UDP 協議,并且需要綁定端口,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 系統中廣泛使用的 DNS(Domain Name System)服務器軟件。 功能:它的主要功能是將域名解析為 IP 地址,或者將 IP 地址反向解析為域名。借助 bind,你可以搭建自己的 DNS 服務器,對域名解析進行管理和配置。 配置:bind 的配置文件通常位于 /etc/bind 目錄下,主要的配置文件是 named.conf,而區域文件則用于定義具體的域名解析規則。 示例配置: // 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 服務器的全局選項、域名區域以及具體的解析記錄。通過配置 bind,你可以讓 DNS 服務器依據這些規則進行域名解析。
查看
[root@localhost ~]# rpm -ql bind /etc/named.conf # 主配置文件 /etc/named.rfc1912.zones # 區域數據配置文件 ...... /var/named # 區域數據文件存放目錄 /var/named/named.empty # 正向解析模板文件 /var/named/named.localhost /var/named/named.loopback # 反向解析模板文件 /var/named/slaves # 輔助區域配置文件存放目錄 ....... /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 整體結構概述 此區域文件包含了起始授權機構(SOA)記錄、名稱服務器(NS)記錄、IPv4 地址記錄(A)和 IPv6 地址記錄(AAAA)。這些記錄為 DNS 解析提供了關鍵信息。 詳細解釋 1. $TTL 3H $TTL 是一個指令,用來設置該區域文件里所有資源記錄的默認生存時間(Time To Live)。 3H 代表 3 小時,意味著這些記錄在 DNS 緩存中的有效時長為 3 小時。超過這個時間,緩存中的記錄將被視為無效,需要重新從權威 DNS 服務器獲取。 2. @ IN SOA @ rname.invalid. ( @:在區域文件里,@ 是一個占位符,代表該區域的域名。一般而言,它會被替換為該區域的實際域名。 IN:表明這是一個 Internet 類的 DNS 記錄,這是最常見的 DNS 記錄類型。 SOA:即起始授權機構(Start of Authority)記錄,它是每個 DNS 區域文件中必不可少的記錄,為該區域提供權威信息。 @:作為主名稱服務器,這里的 @ 同樣代表該區域的域名。 rname.invalid.:這是負責該區域的管理員的電子郵件地址。由于 DNS 不允許使用 @ 符號,所以用 . 來替代。比如 rname.invalid. 實際上代表 rname@invalid。 3. 序列號及相關時間參數 plaintext 0 ; serial 序號 1D ; refresh 刷新時間 1H ; retry 重試時間 1W ; expire 過期時間 3H ; minimum 否定緩存時間 serial(序列號):其值為 0,這個序列號用于標識區域文件的版本。當區域文件內容有更新時,序列號需要增加,這樣從屬 DNS 服務器就能通過比較序列號來判斷是否需要更新本地緩存。 refresh(刷新時間):1D 代表 1 天,從屬 DNS 服務器每隔 1 天就會嘗試從主 DNS 服務器獲取最新的區域文件。 retry(重試時間):1H 代表 1 小時,若從屬 DNS 服務器在刷新區域文件時失敗,會在 1 小時后再次嘗試。 expire(過期時間):1W 代表 1 周,若從屬 DNS 服務器在 1 周內都無法從主 DNS 服務器獲取最新的區域文件,那么它將認為該區域文件已過期,不再提供該區域的解析服務。 minimum(否定緩存時間):3H 代表 3 小時,當 DNS 查詢得到否定響應(如域名不存在)時,該否定響應會在緩存中保留 3 小時。 4. NS @ NS:即名稱服務器(Name Server)記錄,它指定了負責該區域的 DNS 服務器。 @:這里代表該區域的域名,表明該區域的權威 DNS 服務器就是該區域本身。 5. A 127.0.0.1 A:是 IPv4 地址記錄,它將域名映射到對應的 IPv4 地址。 127.0.0.1:這是本地回環地址,意味著該區域的域名解析到本地主機。 6. AAAA ::1 AAAA:為 IPv6 地址記錄,它把域名映射到對應的 IPv6 地址。 ::1:這是 IPv6 的本地回環地址,表明該區域的域名在 IPv6 環境下解析到本地主機。 總結 這個 named.empty 文件構建了一個基礎的 DNS 區域,把域名解析到本地主機,并且設定了區域文件的更新和緩存策略。在實際應用中,你需要依據具體需求對這些記錄進行修改和擴展。
查看反向解析模板文件
[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)。而反向解析則是相反的過程,它依據 IP 地址找出對應的域名。反向解析在很多場景中都很重要,例如郵件服務器驗證、網絡安全審計等。 2. PTR localhost. 的具體解釋 PTR:這是記錄類型,表明這是一條反向解析記錄。 localhost.:這是與 IP 地址對應的域名。結合前面的 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 { # 監聽哪個主機的 53 端口,以IPv4的格式來監聽,一般寫當前主機的IP地址。注意此文件中每一行結束使用的分號 listen-on port53{127.0.0.1; }; listen-on-v6port53{ ::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"; # 指定安全文件所在路徑 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"; }; # 引入的區域數據配置文件 include"/etc/named.rfc1912.zones"; include"/etc/named.root.key";
DNS正向解析配置
需求:將 www.example.com 解析為你們電腦中虛擬機的IP地址,比如我們 IP是 192.168.153.7
實現步驟
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 服務器監聽的網絡接口和端口。 port 53:表明 DNS 服務器將在 TCP 和 UDP 的 53 號端口上監聽請求,因為 53 號端口是 DNS 服務的標準端口。 { 192.168.72.135; }:這里指定了 DNS 服務器僅監聽 IP 地址為 192.168.72.135 的網絡接口。也就是說,只有發往該 IP 地址 53 號端口的 DNS 請求才會被處理。如果有多塊網卡或多個 IP 地址,你可以添加多個 IP 地址,例如 { 192.168.72.135; 192.168.72.136; }。 directory "/var/named"; directory:該指令定義了 DNS 服務器查找區域文件的默認目錄。區域文件包含了域名到 IP 地址的映射等 DNS 記錄。在這個配置中,所有區域文件都將從 /var/named 目錄下查找。例如,后續配置中提到的 example.zone 文件就會在這個目錄下尋找。 區域配置部分(zone 塊) zone "example.com" IN { type master; file "example.zone"; }; zone "example.com" IN zone:這是定義一個 DNS 區域的關鍵字。 "example.com":指定了要配置的域名區域,即 example.com。這個區域包含了與 example.com 相關的所有 DNS 記錄。 IN:表示這是一個 Internet 類的 DNS 區域,這是最常見的區域類型。 type master; type:用于指定該區域的類型,這里的 master 表明這臺 DNS 服務器是 example.com 區域的主服務器。主服務器擁有該區域的權威數據,它可以對區域文件進行修改,并將更新同步給從屬服務器。 file "example.zone"; file:指定了存儲該區域 DNS 記錄的文件名稱。在這個配置中,example.com 區域的所有 DNS 記錄都存儲在 /var/named/example.zone 文件中。該文件應包含如 SOA(起始授權機構)、NS(名稱服務器)、A(IPv4 地址記錄)等各種 DNS 記錄。 總結 這個配置文件的主要作用是讓 DNS 服務器監聽特定 IP 地址的 53 號端口,將 /var/named 作為區域文件的存儲目錄,并將 example.com 區域的管理職責賦予這臺服務器,相關的 DNS 記錄存儲在 example.zone 文件中。
3、檢測主配置文件是否有語法錯誤
[root@localhost ~]# named-checkconf [root@tomcat1 /]# named-checkconf /etc/named.conf '{' expected near '53' 有提示說明有錯誤,沒有提示說明正確,以上錯誤可能是你沒寫port
執行這條命令后,如果沒有輸出任何信息表示主配置文件沒有錯誤。
4、編寫區域數據配置文件
[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 區域文件,用于定義 example.com 域名的 DNS 記錄。下面為你詳細解釋文件中各部分的含義: 1. $TTL 1D $TTL 是一個指令,用于設置該區域文件中所有資源記錄的默認生存時間(Time To Live)。 1D 表示 1 天,意味著這些記錄在 DNS 緩存中的有效時間為 1 天。超過這個時間,緩存中的記錄將被視為無效,需要重新從權威 DNS 服務器獲取。 2. @ IN SOA ns.example.com. admin.example.com. (...) @:在區域文件中,@ 是一個占位符,代表該區域的域名,即 example.com。 IN:表示這是一個 Internet 類的 DNS 記錄,這是最常見的 DNS 記錄類型。 SOA:即起始授權機構(Start of Authority)記錄,是每個 DNS 區域文件中必須存在的記錄,為該區域提供權威信息。 ns.example.com.:主名稱服務器的域名,負責該區域的 DNS 解析。 admin.example.com.:負責該區域的管理員的電子郵件地址。由于 DNS 不允許使用 @ 符號,所以用 . 來替代。例如 admin.example.com. 實際上代表 admin@example.com。 序列號及相關時間參數 plaintext 0 ; serial 序列號 1H ; refresh 刷新時間 1W ; retry 重試時間 2M ; expire 過期時間 1D ; minimum 否定緩存時間 serial(序列號):值為 0,這個序列號用于標識區域文件的版本。當區域文件內容有更新時,序列號需要增加,以便從屬 DNS 服務器通過比較序列號來判斷是否需要更新本地緩存。 refresh(刷新時間):1H 表示 1 小時,從屬 DNS 服務器每隔 1 小時會嘗試從主 DNS 服務器獲取最新的區域文件。 retry(重試時間):1W 表示 1 周,如果從屬 DNS 服務器在刷新區域文件時失敗,會在 1 周后再次嘗試。 expire(過期時間):2M 表示 2 個月,如果從屬 DNS 服務器在 2 個月內都無法從主 DNS 服務器獲取最新的區域文件,那么它將認為該區域文件已過期,不再提供該區域的解析服務。 minimum(否定緩存時間):1D 表示 1 天,當 DNS 查詢得到否定響應(如域名不存在)時,該否定響應會在緩存中保留 1 天。 3. IN NS ns NS:即名稱服務器(Name Server)記錄,指定了負責該區域的 DNS 服務器。 ns:這里的 ns 實際上是 ns.example.com 的簡寫,表示該區域的權威 DNS 服務器是 ns.example.com。 4. IN MX 5 mail MX:即郵件交換器(Mail Exchanger)記錄,用于指定接收該域名電子郵件的郵件服務器。 5:是優先級,數值越小,優先級越高。 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:即規范名稱(Canonical Name)記錄,也稱為別名記錄。 web:即 web.example.com,表示 web.example.com 是 www.example.com 的別名,訪問 web.example.com 實際上會被解析為 www.example.com 的 IP 地址。 總結 這個 example.zone 文件定義了 example.com 域名的 DNS 記錄,包括主名稱服務器、郵件服務器、Web 服務器等的相關信息,以及它們對應的 IP 地址和別名。這些記錄為 DNS 解析提供了必要的信息,使得用戶可以通過域名訪問相應的服務。
5、檢測區域數據匹配文件的語法
# 格式:named-checkzone 要解析的域名 這個域名解析對應區域數據文件的路徑 [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 系統里常用的 DNS 查詢工具,其功能是向 DNS 服務器發送查詢請求,并且顯示響應結果。 -t NS:-t 是 dig 命令里用于指定查詢記錄類型的選項,NS 代表名稱服務器(Name Server)記錄。該記錄的作用是指定負責某個域名的權威 DNS 服務器。 example.com:此為要查詢的域名。 @192.168.72.135:@ 后面跟的是 DNS 服務器的 IP 地址,意味著要向 192.168.72.135 這個 DNS 服務器發起查詢請求。 命令作用 這條命令的用途是向 IP 地址為 192.168.72.135 的 DNS 服務器查詢 example.com 域名的 NS 記錄,也就是獲取負責 example.com 域名的權威 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 服務器發起查詢請求。 命令作用 這條命令的用途是向 IP 地址為 192.168.72.135 的 DNS 服務器查詢 www.example.com 域名的 A 記錄,也就是獲取 www.example.com 對應的 IPv4 地址。 總結 這兩條 dig 命令能夠幫助你驗證 DNS 服務器的配置是否正確,以及域名解析是否能夠正常工作。通過查詢不同類型的 DNS 記錄,你可以了解域名的權威 DNS 服務器信息和具體的 IP 地址映射情況。
DNS反向解析配置
需求:將 192.168.72.135 解析為 www.exampe.com。 實現: 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、編寫區域數據反向解析文件 [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、檢測區域文件的語法 [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 系統中常用的 DNS 診斷工具,它的主要功能是向 DNS 服務器發送查詢請求,并顯示詳細的響應結果,常用于測試 DNS 服務器配置、排查域名解析問題等。 -x -x 是 dig 命令的一個選項,它是進行反向 DNS 查找(Reverse DNS Lookup)的快捷方式。反向 DNS 查找與正向 DNS 查找相反,正向查找是將域名解析為對應的 IP 地址,而反向查找則是根據給定的 IP 地址查找對應的域名。當使用 -x 選項時,dig 會自動將 IP 地址轉換為相應的反向查找區域(如 in-addr.arpa 用于 IPv4 地址)并進行查詢。 192.168.72.135 這是要進行反向 DNS 查找的目標 IP 地址。也就是說,你希望通過 DNS 服務器查詢這個 IP 地址對應的域名是什么。 @192.168.72.135 @ 符號用于指定要查詢的 DNS 服務器的 IP 地址。在這個命令中,你指定向 IP 地址為 192.168.72.135 的 DNS 服務器發起反向查詢請求。 命令作用 這條命令的主要作用是向 IP 地址為 192.168.72.135 的 DNS 服務器發送一個反向 DNS 查詢請求,以獲取 IP 地址 192.168.72.135 對應的域名。如果該 DNS 服務器配置了相應的反向解析區域文件,并且其中包含了 192.168.72.135 的反向解析記錄,那么它將返回對應的域名;如果沒有配置或者沒有找到對應的記錄,可能會返回一個表示未找到的結果。 示例輸出及含義 假設命令執行后有如下簡化輸出: 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:顯示了查詢的具體內容,這里是對 135.72.168.192.in-addr.arpa 進行 PTR(Pointer,指針記錄,用于反向解析)類型的查詢。 ANSWER SECTION:顯示了查詢的結果,這里表明 IP 地址 192.168.72.135 對應的域名是 myserver.example.com。 通過這樣的反向查詢,你可以驗證 IP 地址和域名之間的映射關系是否正確配置,在網絡管理、安全審計等場景中具有重要作用。
-
Linux
+關注
關注
87文章
11410瀏覽量
212192 -
軟件
+關注
關注
69文章
5082瀏覽量
88716 -
DNS
+關注
關注
0文章
221瀏覽量
20158 -
端口
+關注
關注
4文章
1003瀏覽量
32603
原文標題:全面解析Linux中的DNS服務:搭建與優化指南
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
【Raspberry Pi 3試用體驗】+ 搭建本地DNS服務器
如何解決DNS解析錯誤故障
Linux中DNS服務器配置分析
《DNS攻擊防范科普系列1》—你的DNS服務器真的安全么?
在Linux中如何配置DNS
解讀DNS服務器以及保護的方法

評論