0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度解析Linux中的DNS服务

马哥Linux运维 来源:CSDN技术社区 2025-04-09 16:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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
    +关注

    关注

    88

    文章

    11628

    浏览量

    217989
  • 软件
    +关注

    关注

    69

    文章

    5298

    浏览量

    90886
  • DNS
    DNS
    +关注

    关注

    0

    文章

    228

    浏览量

    21016
  • 端口
    +关注

    关注

    4

    文章

    1098

    浏览量

    33833

原文标题:全面解析Linux中的DNS服务:搭建与优化指南

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在Linux配置DNS服务

    本文详细介绍了如何在Linux配置DNS服务器,包括DNS工作原理、本地缓存、DNS查询过程,
    的头像 发表于 05-09 13:38 2316次阅读
    如何在<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服务

    时好时坏。管理下局域网的DNS(双十一的时候,把某宝网站直接给解析到本地ip,打不开网页,O(∩_∩)O哈哈~)这里我用的是dnsmasq安装比较简单:sudo apt-get install -y
    发表于 04-24 21:39

    如何解决DNS解析错误故障

    以解决域名无法访问的情况。小技巧:点击开始->设置->网络连接->本地连接->属性->TCP/IP协议->使用下面的DNS服务器地址,在框输入“8.8.8.8
    发表于 09-29 15:14

    LinuxDNS服务器配置分析

    很多平台平台提供云解析功能,所谓的云解析就是一个DNS服务器,一般情况下,在域名的提供商购买一个域名之后,会指定一个NS记录,例如,在域名的提供商购买一下域名miner-k.com.需
    发表于 07-17 08:14

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

    DNS服务器,即域名服务器,它作为域名和IP地址之间的桥梁,在互联网访问,起到至关重要的作用。每一个互联网上的域名,背后都至少有一个对应的DNS
    发表于 10-16 15:21

    Win 2000DNS服务器的设置

    Win 2000DNS服务器的设置  DNS Domain Name Service是域名解析服务
    发表于 02-01 11:51 979次阅读

    Linux如何配置DNS

    ----DNS的功用是把计算机的名称转换为 IP地址。DNS的使用简化了系统管理员及客户对主机文件的操作和维护。 Intranet服务器的系统配置 ----硬件配置:Pentium 133 CPU
    发表于 11-07 10:44 3次下载

    Linux DNS 服务器安装、配置和维护的详细解析

    DNS 协议所要完成的功能。 今天我们将讨论DNS服务器,特别是Linux DNS服务
    的头像 发表于 12-18 15:08 7802次阅读

    linux无法解析域名怎么办

    由于linux没有DNS导致无法解析域名。
    发表于 05-21 09:23 2522次阅读
    <b class='flag-5'>linux</b>无法<b class='flag-5'>解析</b>域名怎么办

    虚拟机:Linux查看DNS服务器IP地址的方法

    虚拟机:Linux查看DNS服务器IP地址的方法
    的头像 发表于 06-22 15:12 1.5w次阅读
    虚拟机:<b class='flag-5'>Linux</b>查看<b class='flag-5'>DNS</b><b class='flag-5'>服务</b>器IP地址的方法

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

    域名系统,属于一种组织成域层次结构的计算机和网络服务器命名系统。域名系统主要用于分配域名地址、IP地址给互联网的主机,系统再将用户提供的域名地址自动转为IP地址。域名服务就是一种用于域名系统的互联网工具,
    的头像 发表于 03-30 15:57 9958次阅读

    探讨DNS服务解析

    本地 DNS 服务器收到来自客户端的 DNS 请求,它会在其缓存查找 google.com 的 IP 地址。如果它可以找到对应的条目,它将直接将 IP 地址返回给客户端。否则,本地
    的头像 发表于 05-05 15:42 1998次阅读

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

    的 IP 地址。此域 IP 地址对保存在 DNS 缓存供以后使用,因此您不必每次都向 DNS 服务器发送请求以建立连接。 但有时,本地 DNS
    的头像 发表于 06-26 10:52 4201次阅读
    如何在 <b class='flag-5'>Linux</b> 上查看本地 <b class='flag-5'>DNS</b> 缓存

    DNS服务器是什么?有哪些类型?

    ,小编我给大家分析一下DNS服务器是什么?有哪些类型? 一、DNS服务器是什么? DNS服务器是
    的头像 发表于 08-14 17:40 3331次阅读

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

    1.关于DNS解析服务DNS(DomainNameSystem),即域名系统。一句话总结DNS解析
    的头像 发表于 01-09 19:34 2117次阅读
    【教程】<b class='flag-5'>DNS</b>域名<b class='flag-5'>解析</b><b class='flag-5'>服务</b>systemd-resolved使用指南