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 地址和域名之间的映射关系是否正确配置,在网络管理、安全审计等场景中具有重要作用。