DNS域名解析问题排查
域名结构
{主机名}.{次级域名}.{域名}.{根域名}
host.sld.tld.root
| 主机名 | 次级域名 | 域名 | 根域名 |
|---|---|---|---|
| host. | sld. | tld. | root |
几种常见的解析类型:
| 记录类型 | 中文名称 | 全称 / 英文名称 | 用途说明 | 备注 |
|---|---|---|---|---|
| A | 地址记录 | Address Record | 将域名解析为 IPv4 地址(如:example.com → 192.0.2.1) | 最基础的 DNS 记录,几乎所有网站都需要 |
| AAAA | IPv6 地址记录 | IPv6 Address Record | 将域名解析为 IPv6 地址(如:example.com → 2001:db8::1) | 用于支持 IPv6 网络环境 |
| CNAME | 规范名称记录(别名) | Canonical Name Record | 将一个域名指向另一个域名(不能与其它记录共存于同一名称) | 不能用于根域名(如 example.com);不能与其他记录(如 MX、TXT)同名共存 |
| MX | 邮件交换记录 | Mail Exchange Record | 指定接收该域名邮件的邮件服务器地址(需配合优先级使用) | 优先级数值越小优先级越高;必须指向 A 或 AAAA 记录,不能指向 CNAME |
| TXT | 文本记录 | Text Record | 存储任意文本信息,常用于 SPF、DKIM、DMARC 等邮件验证或域名所有权验证 | 单条记录长度有限(通常 ≤255 字符),可多条拼接 |
| NS | 域名服务器记录 | Name Server Record | 指定该域名由哪些 DNS 服务器进行解析 | 子域可设置独立 NS,实现 DNS 委派 |
| SOA | 起始授权记录 | Start of Authority Record | 标识区域的权威起始信息,包含主 DNS、管理员邮箱、序列号、刷新时间等 | 每个 DNS 区域有且仅有一个 SOA 记录 |
| PTR | 指针记录 | Pointer Record | 用于反向 DNS 查询,将 IP 地址解析为域名(常用于邮件服务器验证) | 通常由 IP 地址所有者(如 ISP)配置,不在普通域名 DNS 中设置 |
| SRV | 服务定位记录 | Service Record | 指定提供特定服务的服务器位置(如 _sip._tcp.example.com → server:port) | 常用于 VoIP、LDAP、Kubernetes 等服务发现场景 |
| CAA | 证书颁发机构授权记录 | Certification Authority Authorization | 指定哪些证书颁发机构(CA)可以为该域名签发 SSL/TLS 证书 | 可防止未授权 CA 错误签发证书;支持多个 CAA 记录 |
| DS | 委派签名记录 | Delegation Signer Record | 用于 DNSSEC,指定子域的公钥指纹 | 通常在父域中配置,用于建立信任链 |
| DNSKEY | DNS 密钥记录 | DNS Key Record | 存储用于 DNSSEC 验证的公钥 | 与 RRSIG、NSEC/NSEC3 配合使用,保障 DNS 数据完整性 |
| NAPTR | 命名机构指针记录 | Naming Authority Pointer | 用于动态委托发现系统(如 ENUM),支持正则表达式重写 | 主要用于电信和 VoIP 领域(如 E.164 号码映射) |
| SPF | 发件人策略框架记录(已弃用) | Sender Policy Framework | 原用于防止垃圾邮件伪造发件人,现推荐使用 TXT 记录实现 SPF | RFC 7208 已废弃 SPF 记录类型(TYPE 99),应使用 TXT 记录 |
| HTTPS | HTTPS 服务绑定记录 | HTTPS Record (RFC 9460) | 用于 HTTP/3 和 SVCB,支持服务绑定和参数传递(如 ALPN、端口等) | 支持“Alt-Svc”功能替代方案,提升连接效率;浏览器逐步支持中 + HTTPS 和 SVCB 是较新的标准(2023 年后逐步部署),用于提升 Web 性能与安全。 |
| SVCB | 服务绑定记录 | Service Binding Record | 通用服务绑定记录,HTTPS 是其特例 | 可用于非 Web 服务(如 DoH、QUIC)的服务发现与参数协商 + HTTPS 和 SVCB 是较新的标准(2023 年后逐步部署),用于提升 Web 性能与安全。 |
获取13台根域服务器地址
# 使用dig获取根域服务器地址
dig . NS
# 使用nslookup获取根域地址
nslookup -type=ns .

192.203.230.10 e.root-servers.net
202.12.27.33 m.root-servers.net
199.7.91.13 d.root-servers.net
192.36.148.17 i.root-servers.net
192.112.36.4 g.root-servers.net
170.247.170.2 b.root-servers.net
198.97.190.53 h.root-servers.net
192.5.5.241 f.root-servers.net
192.33.4.12 c.root-servers.net
198.41.0.4 a.root-servers.net
192.58.128.30 j.root-servers.net
193.0.14.129 k.root-servers.net
199.7.83.42 l.root-servers.net
dig常见用法
https://blog.csdn.net/omaidb/article/details/128833171
nslookup常见用法
https://blog.csdn.net/omaidb/article/details/128832938
DNS报文结构
DNS报文是DNS协议中用于传输DNS查询和响应信息的数据格式,它由DNS头部和DNS数据两部分组成。
DNS报文-头部
DNS头部包含了12个字节,具体字段如下:
报文ID(2字节):用于标识DNS报文,由客户端随机生成。
标志(2字节):用于表示DNS报文的类型和查询方式等信息。
问题数(2字节):表示DNS报文中查询的问题数。
回答数(2字节):表示DNS报文中回答的资源记录数。
权威数(2字节):表示DNS报文中权威资源记录数。
附加数(2字节):表示DNS报文中附加资源记录数。

| Flags | QR | opcode | AA | TC | RD | RA | (zero) | rcode(Response Code)响应码 |
|---|---|---|---|---|---|---|---|---|
| 1 | 4 | 1 | 1 | 1 | 1 | 3 | 4 |
DNS报文中的Rcode是指响应码(Response Code),用于表示DNS服务器对查询请求的响应结果。Rcode是一个4位(bit)的二进制数,共有16种可能的取值,每种取值都表示不同的响应结果。常见的Rcode取值及其含义如下:
0:没有错误,查询成功。1:格式错误,DNS报文格式不正确。2:服务器错误,DNS服务器出现错误。3:域名错误,查询的域名不存在。4:查询类型不支持,DNS服务器不支持查询类型。5:拒绝查询,DNS服务器拒绝查询请求。6-15:保留值,暂未使用。
当DNS服务器接收到查询请求后,会根据查询请求的内容进行查询,并生成响应报文。响应报文中的Rcode字段表示查询结果的状态,例如:
查询成功查询失败查询类型不支持
等。
客户端可以根据Rcode字段的取值来判断查询结果的状态,并进行相应的处理。
需要注意的是,Rcode字段只表示DNS服务器对查询请求的响应结果,而不表示查询结果的准确性。查询结果的准确性取决于DNS服务器的配置和缓存情况,以及查询请求的来源和网络环境等因素。因此,在实际应用中,应该根据实际情况进行查询结果的验证和处理。
查询

响应

DNS报文格式-正文
DNS数据部分包含了查询和响应的具体信息,包括查询的域名、查询类型、查询类别等信息。DNS数据部分的长度和内容根据查询和响应的具体情况而定,可以包含多个资源记录。
需要注意的是,DNS报文的长度不能超过UDP协议的最大长度,通常为512字节。如果DNS报文的长度超过了UDP协议的最大长度,则需要使用TCP协议进行传输。
Queries区域

资源记录区域(包括回答区域,授权区域和附加区域)

查询

响应

域名被"RST 重置,疑似SNI阻断"特征
- 连接被
重置 ERR_CONNECTION_RESET

检测IP是否被"永久限制"
ping 检测 ip墙:
https://www.itdog.cn/ping/
tcping 检测端口墙:
https://www.itdog.cn/tcping/
ip墙是纯墙 ,端口墙可以换端口。
检测域名是否被“永久限制”
http://www.jucha.com/qiang/
http://www.dbcha.com/
在线拨测
使用拨测查看全国dns解析情况
阿里云拨测工具 https://boce.aliyun.com/detect/http
使用拨测查看全国dns解析,查看是否有127.0.0.1和0.0.0.0
通过WiFi和手机网络分别进行下面测试.
查询是否存在CDN
Ping、多地ping、国外ping
https://search.censys.io/
子域名查询
SSL证书信息查询
https://crt.sh/?q=%25.要查询的域名
https://censys.io/certificates?q=
也可以使用python脚本
https://github.com/cheetz/sslScrape
DNS历史解析记录
端口对外开放检查
使用tcp测试ip的ping值
有些主机是禁用icmp协议ping的,可以使用tcping来测试ping值。
https://blog.csdn.net/omaidb/article/details/120120730
Masscan(Linux)
项目地址: https://github.com/robertdavidgraham/masscan
Centos8安装依赖libpcap-devel:
https://blog.csdn.net/omaidb/article/details/120690910
# Centos8安装依赖libpcap-devel
dnf --enablerepo=powertools install libpcap-devel -y
# 安装其他依赖
yum install git make gcc -y
# 编译安装
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
make install
# 基本用法
masscan 47.104.237.213 -p22,21,20
# 批量端口
masscan 47.104.237.213 -p20-22
ip可用性检查
参考: https://github.com/trojan-gfw/trojan/issues/622
使用这个地址可以检查是否证书问题: https://www.toolsdaquan.com/ipcheck/
scanport(Windows)
whois查询域名注册信息
https://blog.csdn.net/omaidb/article/details/128832814
邮箱搜集
https://hunter.io
https://github.com/killswitch-GUI/SimplyEmail

浙公网安备 33010602011771号