DNS服务(Linux)

news2025/4/16 15:02:03

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 port 53 { 127.0.0.1; };
    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";
    # 指定安全文件所在路径
    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:3: '{' 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 20:58:50 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 21:01:09 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 21:21:51 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 15:30:00 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 地址和域名之间的映射关系是否正确配置,在网络管理、安全审计等场景中具有重要作用。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2330454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python高阶函数-filter

1. 基本概念 filter() 是Python内置的高阶函数&#xff0c;用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数&#xff0c;返回一个迭代器&#xff0c;包含使函数返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性计算&#xff1a;filter对象是…

拍摄的婚庆视频有些DAT的视频文件打不开怎么办

3-12 现在的婚庆公司大多提供结婚的拍摄服务&#xff0c;或者有一些第三方公司做这方面业务&#xff0c;对于视频拍摄来说&#xff0c;有时候会遇到这样一种问题&#xff0c;就是拍摄下来的视频文件&#xff0c;然后会有一两个视频文件是损坏的&#xff0c;播放不了&#xff0…

图灵逆向——题一-动态数据采集

目录列表 过程分析代码实现 过程分析 第一题比较简单&#xff0c;直接抓包即可&#xff0c;没有任何反爬&#xff08;好像头都不用加。。。&#xff09; 代码实现 答案代码如下&#xff1a; """ -*- coding: utf-8 -*- File : .py author : 鲨鱼爱兜兜 T…

【新人系列】Golang 入门(十二):指针和结构体 - 上

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12898955.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Golang 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

Day20 -实例:红蓝队优秀集成式信息打点工具的配置使用

一、自动化-企业查询 ----ENScan 原理&#xff1a;集成企查查、爱企查、chinaz等&#xff0c;剑指hw/src。 1&#xff09;首次使用先创建config文件 确认一下生成了 2&#xff09;配置cookie 各个平台不一样&#xff0c;根据github作者的教程来【放入github收藏夹了】 我这…

MySQL学习笔记五

第七章数据过滤 7.1组合WHERE子句 7.1.1AND操作符 输入&#xff1a; SELECT first_name, last_name, salary FROM employees WHERE salary < 4800 AND department_id 60; 输出&#xff1a; 说明&#xff1a;MySQL允许使用多个WHERE子句&#xff0c;可以以AND子句或OR…

Python爬虫第5节-urllib的异常处理、链接解析及 Robots 协议分析

目录 一、处理异常 1.1 URLError 1.2 HTTPError 二、解析链接 2.1 urlparse() 2.2 urlunparse() 2.3 urlsplit() 2.4 urlunsplit() 2.5 urljoin() 2.6 urlencode() 2.7 parse_qs() 2.8 parse_qsl() 2.9 quote() 2.10 unquote() 三、分析网站Robots协议 3.1 R…

26届Java暑期实习面经,腾讯视频一面

短链接的生成原理 如何解决短链接生成的哈希冲突问题 如何加快从短链接到原链接的重定向过程 TCP 和 UDP 协议 如何理解 TCP 是面向连接的 为什么 TCP 的握手是 3 次 IO 模式 是否有真正写过一个底层的 Socket 通信 MySQL 的事务隔离级别 MVCC 机制 什么叫服务的并行 为什么能基…

Kafka负载均衡挑战解决

本文为 How We Solve Load Balancing Challenges in Apache Kafka 阅读笔记 kafka通过利用分区来在多个队列中分配消息来实现并行性。然而每条消息都有不同的处理负载&#xff0c;也具有不同的消费速率&#xff0c;这样就有可能负载不均衡&#xff0c;从而使得瓶颈、延迟问题和…

2025年第二期PMP考试中文报名时间定了!

近日&#xff0c;官方发布了《关于2025年6月15日PMI认证考试的报名通知》。根据通知&#xff0c;中国大陆地区2025年第二期PMI认证考试将于6月15日举行&#xff0c;中文报名将于4月17日正式开始。 一、报名安排 为缓解报名高峰期的网络拥堵&#xff0c;本次考试将采取分地区、…

LiT and Lean: Distilling Listwise Rerankers intoEncoder-Decoder Models

文章&#xff1a;ECIR 2025会议 一、动机 背景&#xff1a;利用LLMs强大的能力&#xff0c;将一个查询&#xff08;query&#xff09;和一组候选段落作为输入&#xff0c;整体考虑这些段落的相关性&#xff0c;并对它们进行排序。 先前的研究基础上进行扩展 [14,15]&#xff0c…

Ubuntu 服务器上运行相关命令,关闭终端就停止服务,怎么才能启动后在后台运行?

环境&#xff1a; Ubuntu 20.04 LTS 问题描述&#xff1a; Ubuntu 服务器上运行相关命令&#xff0c;关闭终端就停止服务&#xff0c;怎么才能启动后在后台运行&#xff1f; bash docker/entrypoint.sh解决方案&#xff1a; bash docker/entrypoint.sh 脚本在后台运行&…

前端工具方法整理

文章目录 1.在数组中找到匹配项&#xff0c;然后创建新对象2.对象转JSON字符串3.JSON字符串转JSON对象4.有个响应式对象&#xff0c;然后想清空所有属性5.判断参数不为空6.格式化字符串7.解析数组内容用逗号拼接 1.在数组中找到匹配项&#xff0c;然后创建新对象 const modifi…

关于Deepseek本地AI知识文档库被联网访问方法的探索

背景&#xff1a; 根据前面的文章&#xff0c;我们使用了anythingLLM搭建了本地知识库&#xff0c;这个虽然基本可以用了&#xff0c;但是你只能在anythingLLM的界面里面进行提问&#xff0c;自能自己用&#xff0c;那么能否让其他人也可以使用我们搭建的本地知识库呢根据我的…

一个简单的跨平台Python GUI自动化 AutoPy

象一下&#xff0c;你坐在电脑前&#xff0c;手指轻轻一点&#xff0c;鼠标自己动了起来&#xff0c;键盘仿佛被无形的手操控&#xff0c;屏幕上的任务自动完成——这一切不需要你费力&#xff0c;只靠几行代码就能实现。这就是AutoPy的魅力&#xff0c;一个简单却强大的跨平台…

【嵌入式系统设计师】知识点:第4章 嵌入式系统软件基础知识

提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…

基于RDK X3的“校史通“机器人:SLAM导航+智能交互,让校史馆活起来!

视频标题&#xff1a; 【校史馆の新晋顶流】RDK X3机器人&#xff1a;导览员看了直呼内卷 视频文案&#xff1a; 跑得贼稳团队用RDK X3整了个大活——给校史馆造了个"社牛"机器人&#xff01; 基于RDK X3开发板实现智能导航与语音交互SLAM技术让机器人自主避障不…

春芽儿智能跳绳:以创新技术引领运动健康新潮流

在全球运动健康产业蓬勃发展的浪潮中&#xff0c;智能健身器材正成为连接科技与生活的重要纽带。据《中国体育用品产业发展报告》显示&#xff0c;2023年中国智能运动装备市场规模突破千亿元&#xff0c;其中跳绳类目因兼具大众普及性与技术升级空间&#xff0c;年均增速超30%。…

NOA是什么?国内自动驾驶技术的现状是怎么样的?

国内自动驾驶技术的现状如何&#xff1f; 汽车的NOA指的是“Navigate on Autopilot”&#xff0c;即导航辅助驾驶或领航辅助驾驶。这是一种高级驾驶辅助系统&#xff08;ADAS&#xff09;的功能&#xff0c;它允许车辆在设定好起点和终点后&#xff0c;自动完成行驶、超车、变…

Linux 指令初探:开启终端世界的大门

前言 当我们初次接触 Linux&#xff0c;往往会被一串串在黑底屏幕中跳动的字符震撼甚至吓退。然而&#xff0c;正是这些看似晦涩的命令&#xff0c;构建了服务器、嵌入式系统乃至云计算的世界。 本篇将带你从最基础的 Linux 指令开始&#xff0c;逐步揭开命令行的神秘面纱。从…