目录
DNS介绍
DNS域名层次结构
DNS域名解析过程
递归查询和迭代查询
DNS 查询的命令行工具:host、dig、nslookup
host
语法
参数和选项
示例用法
dig
语法
参数和选项
示例用法
nslookup
语法
参数和选项
交互式命令
示例用法
配置 DNS 客户端
DNS介绍
DNS(Domain Name System)是互联网中用于将域名转换为对应IP地址的系统。它充当了一个分布式数据库,将易于记忆的域名与计算机能够理解的IP地址相匹配,使人更方便地访问地址。
DNS域名解析:就是把域名解析成IP地址。
DNS域名层次结构
根域名:根域名位于域名树的顶端,用一个点“.”表示。
顶级域名:顶级域名是紧挨着根域名的下一级域名,它通常表示域名的类型、国家或组织。例如,.com、.org、.net 是常见的通用顶级域名
二级域名:二级域名是紧挨着顶级域名的下一级域名,通常表示特定的组织、公司或个人。
子域名:子域名是下一级域名,可以用于进一步划分和组织域名空间。
DNS域名解析过程
DNS 域名解析过程中使用的是递归查询。
在浏览器中输入一个域名进行访问(例如:www.hzxx.com)
1、首先查询本地的 host 文件,该文件包含了一些域名与 IP 地址的映射关系。
2、如果 hosts 文件中没有相应的记录,操作系统会向预配置的默认 DNS 服务器发送查询请求。默认DNS服务器通常由运营商提供。
4、如果运营商提供的 DNS 服务器中没有相应的记录,它会向根域名服务器发送查询请求,询问顶级域名服务器的地址。
5、根域名服务器收到查询请求后,不会直接查,而是会告诉 DNS 顶级域名服务器的地址,让顶级域接着查。
6、顶级域不会直接查询,而是会告诉二级域名服务器的地址。
7、二级域名服务器会反馈出最终的IP地址。
8、默认 DNS 服务器将获取到的 IP 地址返回给操作系统,操作系统再将其返回给浏览器。
递归查询和迭代查询
递归查询和迭代查询的区别在于查询过程中域名服务器的响应方式不同。
-
递归查询(Recursive Query):当一个 DNS 客户端需要查询一个域名时,它会向本地 DNS 服务器发送一个递归查询请求,本地 DNS 服务器将会负责递归地向根域名服务器、顶级域名服务器以及权威域名服务器依次发送查询请求,并将查询结果返回给客户端。递归查询意味着 DNS 客户端不需要了解整个查询路径,只需要等待本地 DNS 服务器返回查询结果即可。
-
迭代查询(Iterative Query):当一个 DNS 客户端需要查询一个域名时,它会向本地 DNS 服务器发送一个迭代查询请求,本地 DNS 服务器将会向根域名服务器、顶级域名服务器或下一级域名服务器依次发送查询请求,每个 DNS 服务器只会返回部分查询结果给本地 DNS 服务器,而不是完整的查询路径。本地 DNS 服务器需要根据每个 DNS 服务器返回的结果继续向下一级 DNS 服务器发送查询请求,直到获取到完整的查询结果后,再将结果返回给客户端。
因此,递归查询和迭代查询的主要区别在于响应方式。递归查询是让本地 DNS 服务器代替客户端向 DNS 服务器发出查询请求,并负责整个查询过程,返回最终的结果;而迭代查询则是由客户端自己向 DNS 服务器发出查询请求,并一步步地获取完整的查询结果。递归查询比迭代查询更快捷、更方便,但同时也增加了本地 DNS 服务器的负担。
DNS 查询的命令行工具:host、dig、nslookup
host、dig、nslookup 都是用于执行 DNS 查询的命令行工具。
host
语法
host [options] domain_name [dns_server]
参数和选项
domain_name
:要查询的域名。dns_server
(可选):指定用于查询的 DNS 服务器。
以下是一些常用的选项:
-a
:显示所有相关记录。-t type
:指定所需的记录类型(例如,A、MX、NS 等)。-C
:显示完整的 DNS 数据包。-W
:当查询超时时,设置等待时间
示例用法
1、查询域名的 IP 地址:
host example.com
2、查询反向解析(IP 地址对应的主机名):
host 192.0.2.1
3、查询 MX 记录:
host -t MX example.com
4、指定 DNS 服务器进行查询:
host example.com dns.example.com
dig
语法
dig [@server] [options] domain_name [type]
参数和选项
@server
:可选参数,指定要查询的 DNS 服务器。domain_name
:要查询的域名。type
:可选参数,指定查询的记录类型(例如,A、MX、NS 等)。
以下是一些常用的选项:
+trace
:执行递归查询链跟踪。+short
:以简洁格式显示结果。-x address
:执行反向 DNS 查询。-t type
:指定所需的记录类型。-f filename
:从文件中读取命令行选项和参数。
示例用法
1、查询域名的 IP 地址:
dig example.com
2、查询 MX 记录:
dig MX example.com
3、执行递归查询链跟踪:
dig +trace example.com
4、指定要查询的 DNS 服务器:
dig @dns.example.com example.com
nslookup
提供了一个交互式的查询界面,允许你在其中执行多个查询和配置。
语法
nslookup [options] [domain_name] [dns_server]
参数和选项
domain_name
(可选):要查询的域名。dns_server
(可选):指定用于查询的 DNS 服务器。
以下是一些常用的选项:
-query=type
:指定所需的记录类型(例如,A、MX、NS 等)。-debug
:启用调试模式。-timeout=value
:设置查询超时时间为 value 秒。-sil[ent]
:禁用标准输出,并将查询结果直接输出到标准错误输出。-h
:显示帮助信息。
交互式命令
在 nslookup
的交互模式下,你可以执行多个查询操作,查找特定类型的 DNS 记录,指定查询的 DNS 服务器等。以下是一些常用的交互式命令:
server dns_server
:设置用于查询的 DNS 服务器。set type=value
:设置所需的记录类型(例如,A、MX、NS 等)。set domain=domain_name
:设置默认的查询域名。set querytype=value
:设置所需的记录类型(例如,A、MX、NS 等)。set debug
:启用调试模式。set timeout=value
:设置查询超时时间为 value 秒。unset option
:取消设置的选项。exit
或quit
:退出交互模式。
示例用法
1、查询域名的 IP 地址:
nslookup example.com
2、查询反向解析(IP 地址对应的主机名):
nslookup 192.0.2.1
3、指定 DNS 服务器进行查询:
nslookup example.com dns.example.com
4、进入交互模式并执行多个查询操作:
nslookup
> server dns.example.com
> set type=mx
> example.com
> exit
NetworkManager 也可以管理 DNS 服务
配置 DNS 客户端
确保已经连接到网络。
第一种:编辑 hosts 文件
虚拟机的hosts文件为 /etc/hosts ,格式如下:
192.168.1.10 example.com
win11的 hosts 的文件为 C:\Windows\System32\drivers\etc\hosts
第二种:网卡配置文件
可以在 /etc/sysconfig/network-scripts/ 目录下的配置文件中配置,例:ifcfg-ens33文件中配置
在配置文件添加你想要使用的 DNS 服务器的 IP 地址,例如
DNS1=192.168.233.2
DNS2=8.8.8.8
添加或修改完后,保存并关闭网络配置文件即可。
第三种:配置 /etc/resolv.conf 文件,格式如下:
nameserver 8.8.8.8
nameserver 8.8.4.4
请注意,在某些情况下,该文件可能会被自动管理工具(如 NetworkManager)重写,因此直接修改该文件可能不会永久生效。