dig命令命令常见用法
域名结构
主机名.次级域名.域名.根域名
host.sld.tld.root
主机名 | 次级域名 | 域名 | 根域名 |
---|---|---|---|
host. | sld. | tld. | root |
几种常见的解析类型
:
A记录
CNAME
txt记录
dig命令命令常见用法
https://www.linuxcool.com/dig
https://wangchujiang.com/linux-command/c/dig.html
安装dig
# Windows安装dig
choco install bind-toolsonly -y
# Ubuntu安装dig
apt install dnsutils -y
# rhel或Centos7安装dig
yum install bind-utils -y
dig常用命令
https://www.linuxcool.com/dig
https://wangchujiang.com/linux-command/c/dig.html
查看本机公网IP
# 查看本机公网IP
dig ANY +short @resolver2.opendns.com myip.opendns.com
查看本机使用的dns地址
# 查看本机使用的dns地址
dig
查询A记录
# 查询域名的A记录
dig aliyun.com
指定DNS服务器查询域名
# 指定dns查询域名
dig @1.1.1.1 google.com
指定DNS服务器端口
有些DNS使用了非标准的端口。
# +short:只显示查询结果中的 IP 地址
# @ 指定DNS服务器地址
# -p 指定dns服务器的端口
dig +short google.com @208.67.222.222 -p 5353
使用TCP协议查询解析
# +tcp:使用 TCP 协议进行 DNS 查询
dig +tcp google.com @8.8.8.8
指定查询来源子网
# 在指定的DNS服务器上查询域名example.com的IP地址,并指定查询来源的子网地址和子网掩码长度。
## @server选项表示指定DNS服务器的IP地址或主机名
## addr表示查询来源的子网地址
## prefix-length表示查询来源的子网掩码长度
dig @server example.com +subnet=addr[/prefix-length]
# 示例
dig @8.8.8.8 google.com +subnet=192.168.1.0/24
使用dot或doh查询域名解析
使用dot或doh能一定程度上减少dns污染的概率.
# 使用dot或doh查询域名解析
dig +short myip.opendns.com @resolver1.opendns.com
使用DNSSEC查询域名解析
# +dnssec: 启用 DNSSEC 功能,表示查询结果需要进行数字签名验证
# +short: 显示查询结果中的简洁信息,只显示域名和 IP 地址
dig +dnssec +short google.com
查询dns所有记录值any
# 查询dns所有记录值
dig @223.5.5.5 aliyun.com ANY +noall +answer
从ip地址反查询域名dig -x
# 从ip地址反查询域名
dig -x 106.11.248.144
使用tcp协议进行查询
# 使用tcp协议
dig aliyun.com +tcp
查询域名的NS记录
NS记录(Name Server Record)
是DNS
中的一种记录类型
,用于指定该域名的DNS服务器
。NS记录
通常由域名注册商
或DNS服务提供商
设置,用于将域名
与DNS服务器
关联起来。
当用户在浏览器
中输入一个域名
时,浏览器会向本地DNS
服务器发送一个DNS查询请求
,本地DNS
服务器会根据该域名的NS记录
来确定该域名的DNS服务器
,并向该DNS服务器
发起查询
。如果该DNS服务器
无法解析该域名,则会向上一级DNS服务器
发起查询,直到找到能够解析该域名
的DNS服务器
为止。
NS记录
通常包含两个部分:域名
和DNS服务器地址
。例如,一个NS记录可能是:
域名 | 记录类型 | DNS服务器地址 | |
---|---|---|---|
example.com. | IN | NS | ns1.example.com. |
example.com
是域名
,NS
表示该记录类型
为NS记录
,ns1.example.com
是DNS服务器地址
。
# 查询域名的NS记录
dig aliyun.com +nssearch
检查txt记录是否生效
# dig检查txt记录是否生效
dig -t txt _acme-challenge.arzar.net
查看DNS
是否开启AXFR
协议全量区传输功能
# 查看DNS是否开启AXFR协议全量区传输功能
dig dns.google axfr
dig诊断DNS污染
查询权威dns
和缓存dns
,判断递归解析
过程哪个环节
被“污染
”
只显示域名的解析ip
dig +short
提供简要答复,只返回解析的ip
# 对域名进行两次DNS查询
# dig +short 要解析的域名 @dns地址
dig +short aliyun.com @208.67.222.222
# 对域名进行两次DNS查询--使用自定义dns端口
# dig +short 要解析的域名 @dns地址 -p dns的端口
dig +short aliyun.com @208.67.222.222 -p 5353
# 只查看A记录
dig A +short 1dot1dot1dot1.cloudflare-dns.com
递归查询
递归查询
的过程
可以类比为一个人在询问路线
的过程。当一个人询问路线
时,如果对方不知道
具体的路线,就会向其他人
或者地图上查找相关信息,直到找到能够指引路线的人或者信息为止。
递归查询
的过程也是类似
的,DNS服务器
会向其他DNS服务器
发起查询请求,直到
找到能够解析目标域名的DNS服务器为止。
递归查询的过程可以分为以下几个步骤:
本地DNS服务器
接收到DNS查询请求,并根据该域名的NS记录来确定该域名的DNS服务器
。本地DNS服务器
向该DNS服务器
发起查询请求,如果该DNS
服务器无法解析
该域名,则会向上一级DNS服务器
发起查询。- 查询过程会
一直向上级DNS服务器
发起查询请求,直到
找到能够解析
该域名的DNS服务器为止。 - 当找到
能够解析
该域名的DNS服务器时,该DNS服务器会返回查询结果
给本地DNS服务器
。 本地DNS服务器
将查询结果返回给用户
。
# 递归查询
dig google.com +recurse
查询递归查询过程dig +trace
(从权威dns查询解析)
从根域名服务器
开始,逐步追踪域名解析的过程
;
+trace参数
将会显示域名查询的完整递归路径
,跟踪
每个过程的返回内容,包括每个DNS服务器
的IP地址
和响应时间
。
权威解析
需要从根
开始去迭代查询,
每次去查询NS
的迭代工作就由本机
完成,而不是递归服务器
完成递归解析
的过程: https://www.albertzhou.net/blog/2018/11/07/dig_detail.html
参考 <https://blog.youkuaiyun.com/u013617791/article/details/115035664>
# 递归解析
dig www.aliyun.com @223.5.5.5 +trace
## -4 只查看IPV4
dig -4 www.aliyun.com @223.5.5.5 +trace
从指定dns查询域名解析(查询缓存dns服务器)
# 从指定的dns查询域名解析
dig aliyun.com @223.5.5.5
# Windows指定dns要加引号'@dns地址'
# 或使用\防止转义
dig aliyun.com \@1.1.1.1
dig的debug
# debug模式
dig google.com -d