目录
[顶级域名(Top-Level Domain, TLD)](#顶级域名(Top-Level Domain, TLD))
[二级域名(Second-Level Domain, SLD)](#二级域名(Second-Level Domain, SLD))
[FQDN(Fully Qualified Domain Name)](#FQDN(Fully Qualified Domain Name))
[DNS 客户端检测工具](#DNS 客户端检测工具)
[DNS Checker](#DNS Checker)
DNS(Domain Name System,域名系统)是互联网的核心服务之一,用于将人类可读的域名(如 example.com)转换为计算机可用的 IP 地址(如 192.0.2.1)。它是互联网中的关键组件,使用户可以通过易记的域名访问网站和服务,而无需记住复杂的数字 IP 地址。
域名解析,英文是 "Domain Name Resolution",是指将域名转换为 IP 地址的过程。它是互联网的关键服务之一,使用户可以通过易记的域名访问网站和其他在线服务,而不必记住复杂的数字 IP 地址。
DNS术语
(以下术语要知道是什么)
-
域名(Domain Name) :由字符组成的地址,用于标识特定的网站或网络服务。例如,
www.example.com
是一个域名。 -
IP 地址(IP Address) :网络设备的唯一标识符,通常是四组数字的组合,用于在网络上定位设备。例如,
192.0.2.1
。 -
域名解析(DNS Resolution):将域名转换为 IP 地址的过程。通过 DNS 服务器查询以找到对应的 IP 地址。
-
DNS 服务器(DNS Server):用于存储域名与 IP 地址映射关系的服务器。包括权威 DNS 服务器和递归 DNS 服务器。
-
权威 DNS 服务器(Authoritative DNS Server):存储特定域名的权威信息,回答对该域名的查询请求。
-
递归 DNS 服务器(Recursive DNS Server):负责处理 DNS 查询请求,通常会与其他 DNS 服务器通信以获取答案。
-
根服务器(Root Server):最高级别的 DNS 服务器,管理互联网的顶级域名。全球共有 13 台根服务器。
-
顶级域名(Top-Level Domain, TLD) :域名的最高级别分类,通常是最后一部分,如
.com
、.org
、.net
。 -
二级域名(Second-Level Domain, SLD) :顶级域名下的一部分,通常是域名的主体部分,例如
example
是example.com
的二级域名。 -
TTL(生存时间,Time to Live):DNS 记录的有效时长,过了这个时间后需要重新查询。
-
DNS 记录(DNS Record):存储在 DNS 服务器中的信息,包含域名与 IP 地址的关联关系。常见的记录类型有 A 记录、CNAME 记录、MX 记录等。
-
缓存(Cache):DNS 服务器暂时存储查询结果的机制,以提高后续查询的速度。
DNS记录类型:(这些记录带颜色要知道)
-
A 记录(A Record) :将域名映射到 IPv4 地址。每个域名可以有多个 A 记录,以实现负载均衡或容错。
-
AAAA 记录(AAAA Record) :将域名映射到 IPv6 地址,类似于 A 记录,但用于 IPv6。
-
CNAME 记录(CNAME Record) :别名记录,用于将一个域名指向另一个域名。例如,www.example.com 可以是 example.com 的 CNAME。
-
MX 记录(Mail Exchange Record) :邮件交换记录,指定域名的邮件服务器及其优先级。用于处理电子邮件的传递。
-
NS 记录(Name Server Record) :名称服务器记录,指定管理某个域名或子域名的权威 DNS 服务器。
-
TXT 记录(Text Record) :文本记录,可用于存储任意文本数据。常用于验证域名的所有权、配置电子邮件的防垃圾邮件策略等。
-
SRV 记录(Service Record):服务记录,用于指定某个服务的主机名和端口号。常用于基于 DNS 的服务发现。
-
PTR 记录(Pointer Record):指针记录,用于反向 DNS 解析,即将 IP 地址映射到域名。通常用于确定与 IP 地址关联的域名。
-
SOA 记录(Start of Authority Record):授权起始记录,指定区域文件的基本信息,包括主要名称服务器、管理员电子邮件、序列号、刷新间隔等。
-
CAA 记录(Certification Authority Authorization Record):认证机构授权记录,用于指定哪个认证机构可以为该域名颁发证书。它有助于防止未经授权的证书颁发。
-
SPF 记录(Sender Policy Framework Record):发送者策略框架记录,用于指定发送电子邮件时的授权邮件服务器列表。帮助防止电子邮件欺骗。
-
DKIM 记录(DomainKeys Identified Mail Record):域名密钥识别邮件记录,包含公钥,用于电子邮件的加密签名验证。
域名分层
域名系统(Domain Name System,DNS)采用分层架构,允许互联网用户通过友好的域名访问网站,而不必记忆复杂的 IP 地址。这种分层结构使得互联网的域名管理和组织变得灵活且可扩展。以下是域名的分层结构及其解释:
顶级域名(Top-Level Domain, TLD)
这是域名的最顶层部分,通常是域名的最后一部分。TLDs 包括:
-
通用顶级域名(gTLDs) :常见的通用域名,如
.com
、.org
、.net
、.info
等。近年来,ICANN 扩展了 gTLD 的范围,增加了诸如.xyz
、.tech
等许多新域名。 -
国家或地区顶级域名(ccTLDs) :代表特定国家或地区的域名,如
.cn
(中国)、.uk
(英国)、.jp
(日本)等。 -
基础设施顶级域名 :如
.arpa
,用于特定的互联网基础设施目的。
二级域名(Second-Level Domain, SLD)
这是紧随顶级域名之后的部分,通常是域名的主要标识部分。二级域名是互联网公司或组织通常用于标识其服务的部分。例如,在 example.com
中,example
是二级域名。
在 ccTLDs 的情况下,二级域名有时用于进一步划分特定类别。例如,在英国的 ccTLD 中,.co.uk
通常用于商业实体,.ac.uk
用于学术机构。
子域名(Subdomain)
子域名是在二级域名基础上进一步划分的部分,通常用于指定特定的服务、部门、地点等。子域名可以继续嵌套。例如,在 www.example.com
中,www
是子域名。更多示例包括:
- 子域名的常见用途 :
blog.example.com
:用于博客。mail.example.com
:用于邮件服务。shop.example.com
:用于电子商务。
FQDN(Fully Qualified Domain Name)
完全限定域名是指包含所有层次的域名,包括子域名、二级域名、顶级域名,以及每个部分之间的点分隔符。例如,www.example.com
是 FQDN。
比如:www.aliyun.com.
-
DNS里面顶层是: "." 表示根域 ( 一共有十三台根服务器)
-
".com"是顶级域名;分类:职能:com域,.org域(非营利机构),edu域名(教育)国家:.cn ,.us ,
-
"aliyun.com"是主域名(二级域),主要指企页名;
-
"example.aliyun.com"是子域名(也可称为托管三级域名);
-
"www.example.aliyun.com"是子域名的子域(也可称为托管四级域名)。
域名分层的意义
域名分层提供了灵活性和可扩展性:
-
组织灵活性:允许公司、机构等根据需要创建子域名,组织他们的服务和部门。
-
DNS 管理:DNS 的分层结构使得管理变得更加容易和清晰。每个层次可以有不同的权威 DNS 服务器。
-
简化用户体验:通过使用域名而不是 IP 地址,用户可以更容易地访问网站和网络服务。
域名解析
域名是分层结构,域名DNS服务器也是对应的层级结构。有了域名结构,还需要有域名DNS服务器去解析域名,且是需要由遍及全世界的域名DNS服务器去解析,域名DNS服务器实际上就是装有域名系统的主机。域名解析过程涉及4个DNS服务器,分别如下:
-
根域名服务器(Root DNS Servers) :这是最高级别的域名服务器,它管理全球的顶级域名,如
.com
,.org
,.net
等。 -
顶级域名服务器(Top Level Domain Servers) :这些服务器管理二级域名。例如,
.com
顶级域名服务器就管理诸如google.com
,facebook.com
等域名。 -
权威域名服务器(Authoritative DNS Servers):对于特定域名,这些服务器有最终的授权信息。它们包含主机的IP地址与域名的映射。
-
本地域名服务器或缓存域名服务器(Local DNS Servers):也称为 ISP DNS 服务器。ISP(Internet Service Provider,网络服务提供商)为用户提供这样的域名服务器。它们在域名解析过程中起着重要的作用,能收集并缓存大量的 DNS 着陆信息。
这些服务器一起工作,帮助你解析你想访问的网站的域名,转化为相应的IP地址。这个过程涉及到多级别的服务器查询,直到找到正确的IP地址。
除此之外,在域名解析过程中,还可能涉及到一些变换应用和服务,比如在中国大陆,为了网络审查,有以防火长城(Great Firewall)为代表的一些网络审查工具会对DNS进行干预,构造伪造的DNS回应,这通常被称为DNS污染。
++每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器。
每一级域名服务器都知道下级域名服务器的IP地址,以便于一级一级向下查询。++
域名解析过程:
当你在浏览器中输入一个网站的URL,如 www.example.com
后,DNS解析的详细过程通常会按照以下步骤进行:
(在浏览器中访问,通常浏览器会最先查看浏览器缓存,如果浏览器没有缓存找不到就会进行如下步骤寻找)
-
检查 /etc/hosts 文件:Linux系统首先会查找/etc/hosts文件中是否包含所请求的域名。如果找到,系统将返回对应IP;如果没有找到,进行下一步。
-
调用 resolver 库:然后Linux将请求转发给本地的DNS解析器库(被称为 resolver)。它读取 /etc/resolv.conf 文件以获得 DNS 服务器的 IP 地址。
-
访问 DNS 服务器 :在/etc/resolv.conf文件定义的DNS服务器中进行查询。一般这个服务器是你的本地路由器或者是ISP提供的服务器。如果之前所有的步骤都未能解析该域名,网络服务提供商(ISP)会接收到解析请求。ISP运行他们自己的DNS服务器,这些服务器保存着大量的域名和IP地址记录。
-
递归搜索:如果你的ISP的DNS服务器也不知道你的域名,它会开始一个递归搜索。请求会被发送到根DNS服务器,然后是顶级域名(TLD)服务器,然后是权威DNS服务器。
- 根DNS服务器: 这些服务器不知道域名的具体信息,但知道去哪里查找这些信息。如对于.com域名,它会转向查找.com的顶级域名服务器。
- 顶级域DNS服务器(TLD):接下来,请求将会被发送到TLD DNS服务器(如.com或.org)。这些服务器无法直接提供有关你的域的请求的详细条目信息,但是它能告诉哪些服务器拥有这些信息。
- 权威DNS服务器:权威服务器是最后能为你的请求提供一个答案的服务器。它有一份带有你域名的IP地址的记录,将这个地址返回给DNS递归服务器,然后这个服务器终于可以回答在此传递过程之初所提出的问题 --- 这个域名的IP地址是什么。
-
获取 IP 地址:最终,在整个过程结束时,请求的应用程序将收到它要找的 IP 地址。然后这个IP地址将被应用程序用于与目标服务器进行通信。
这是一个一般的过程,特定的行为可能因发行版和系统配置的不同而有所不同。
DNS 客户端检测工具
使用这些命令需要安装bind-utils 包
bash
yum install -y bind-utils
host命令
它可以解析域名对应的 IP 地址和别名等信息。例如,你可以使用 host www.example.com
来获取 www.example.com 的相关 DNS 记录。详细的命令和用法可以在 这里 找到。
-
-t TYPE:指定查询的记录类型。
- 例如,
host -t A example.com
查询A记录(IPv4地址),host -t AAAA example.com
查询AAAA记录(IPv6地址),host -t MX example.com
查询MX记录(邮件交换),host -t CNAME example.com
查询CNAME记录。
- 例如,
-
-a :查询所有可用的DNS记录。这是
host -t ANY
的简写。 -
-v:显示详细输出。在一些实现中,它可以提供额外的调试信息。
-
-s:使用简洁模式输出结果,通常用于减少输出的冗余。
-
-W SECONDS:指定等待DNS响应的超时时间。默认值取决于系统设置。
-
-R NUMBER :指定DNS重试次数。如果初始查询失败,
host
将尝试再次查询,NUMBER代表重试次数。 -
-d:启用调试模式,显示更多关于DNS查询的内部信息。
-
-T:使用TCP而非默认的UDP进行查询。TCP通常用于较大的DNS响应或需要可靠的传输。
-
DNS服务器:在命令末尾指定一个DNS服务器,用于查询特定域名的DNS信息。
- 例如,
host example.com 8.8.8.8
使用Google Public DNS服务器查询example.com
。
- 例如,
-
-m:以机器可读的格式输出结果,适合脚本自动化处理。
-
-C:检查DNS名称服务器的一致性。
bash
基本域名查询(会返回ipv4地址和ipv6地址)
host example.com
查询基本 A 记录(IPv4 地址)
host -t A example.com
获取 example.com 的 IPv4 地址。
查询 MX 记录(邮件交换记录)
host -t MX example.com
获取与邮件相关的 DNS 信息。
查询 NS 记录(名称服务器记录)
host -t NS example.com
找出一个域名的权威名称服务器。
查询 CNAME 记录(别名记录)
host -t CNAME www.example.com
查看某个域名是否是其他域名的别名。
查询所有 DNS 记录
host -a example.com
获取 example.com 相关的所有 DNS 记录。
指定 DNS 服务器
host example.com 8.8.8.8
使用指定的 DNS 服务器(在这里是 Google Public DNS)查询 example.com。
查询 AAAA 记录(IPv6 地址)
host -t AAAA example.com
查询 IPv6 地址。
设置超时时间
host -W 5 example.com
设置超时时间为 5 秒,以避免查询过长时间没有响应。
使用 TCP
host -T example.com
dig命令
Dig 是一个非常流行的 DNS 诊断工具,用于查询 DNS 记录并测试 DNS 服务器响应。举例来说,你可以输入 dig www.example.com
来查询 www.example.com 的 DNS 记录。dig功能与 nslookup 类似,建议使用 dig 来取代 nslookup
-
指定查询类型
-t TYPE
: 指定查询的记录类型。常用的类型包括 A、AAAA、MX、CNAME、NS、SOA、TXT 等。例如:dig -t MX example.com
查询邮件交换记录。
-
指定 DNS 服务器
@DNS_SERVER
: 使用@
符号后接 DNS 服务器的 IP 地址或主机名来指定查询使用的 DNS 服务器。例如:dig @8.8.8.8 example.com
使用 Google Public DNS 查询example.com
。
-
简化输出
+short
: 仅显示 DNS 查询的答案部分,适合简洁输出。例如:dig +short example.com
。
-
详细信息
+trace
: 执行递归查询,显示整个查询路径。这对于调试 DNS 问题非常有用。+stats
: 显示查询的统计信息,包括查询耗时、数据包大小等。+noall
: 关闭默认输出的所有部分。+answer
: 只显示答案部分,与+noall
一起使用以减少输出。
-
域名信息
-x IP_ADDRESS
: 进行反向 DNS 查询,将 IP 地址转换为域名。例如:dig -x 8.8.8.8
。
-
指定查询类
-c CLASS
: 指定查询的 DNS 类,默认是IN
(Internet)。其他类包括CHAOS
等。
-
调试和性能
+tcp
: 使用 TCP 而不是默认的 UDP 进行查询。这对于较大的 DNS 响应或要求更可靠的传输很有用。+dnssec
: 查询时启用 DNSSEC 支持,检查 DNSSEC 记录。
-
区域传送
AXFR
: 尝试进行区域传送(zone transfer),获取整个 DNS 区域的数据。需要 DNS 服务器允许此操作。
bash
基本查询
dig example.com
这将查询域名 example.com 的默认记录,通常是 A 记录。
指定查询类型
dig -t MX example.com
使用 -t 参数可以指定查询类型。常用类型包括 A、AAAA、MX、CNAME、NS、SOA、TXT、SRV 等。
查询名称服务器
dig @8.8.8.8 example.com
使用 @ 后跟 DNS 服务器的地址来指定查询应使用哪个 DNS 服务器。在这里,使用 Google Public DNS。
启用详细输出
dig +noall +answer example.com
默认情况下,dig 返回大量信息。+noall 关闭所有输出,+answer 仅显示 DNS 响应的答案部分。这是查看关键结果的一种简洁方式。
查询 NS 记录
dig -t NS example.com
这将返回 example.com 的权威名称服务器。
查询域名的 SOA 记录
dig -t SOA example.com
SOA 记录(Start of Authority)包含域名的基本信息,如主名称服务器、域名管理员、刷新间隔等。
递归查询
dig +trace example.com
启用 +trace 可以进行递归查询,查看查询在 DNS 体系结构中的完整路径。这对于排查 DNS 问题非常有用。
查询 TXT 记录
dig -t TXT example.com
TXT 记录常用于存储任意文本信息,例如 SPF 或 DKIM 记录。
获取查询时间
dig +stats example.com
使用 +stats 可以查看查询的统计信息,包括查询所需的时间。
以简洁方式输出
dig +short example.com
DNS Checker
这是一个在线的免费 DNS 检测工具,它可以检查域名的 DNS 设置并给出建议和优化技巧。你可以访问 dnschecker.org 来使用该工具。访问不到就需要点加速魔法。
配置DNS方式
1.本机文件解析
配置 /etc/hosts
文件
/etc/hosts
文件用于本地解析主机名到IP地址,是DNS查询的第一个检查点。它的格式是IP地址,紧接着是主机名,后面是别名(可选)。
-
打开
/etc/hosts
文件 使用文本编辑器打开文件:bashvim /etc/hosts
-
添加本地解析记录 添加解析记录,格式如下:
bash192.168.1.10 my-server my-alias 10.0.0.5 another-host
这里,127.0.0.1 通常用于解析
localhost
,可以根据需要添加其他记录。 -
保存并退出 保存文件并退出编辑器。
/etc/hosts
文件中的更改会立即生效。
2.使用本地DNS服务器解析
/etc/resolv.conf
文件用于指定DNS服务器和其他与DNS相关的配置。注意,许多系统会自动生成此文件,因此直接编辑可能会被覆盖。理想情况下,应该通过网络管理工具(如 NetworkManager
)进行配置。
-
打开
/etc/resolv.conf
文件 如果需要查看或修改,可以打开文件:bashvim /etc/resolv.conf
-
查看DNS服务器配置 查看当前配置的DNS服务器。通常会看到
nameserver
指令,后面跟着DNS服务器的IP地址。bash[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.226.2
-
手动设置DNS服务器 如果要手动设置,可以暂时编辑
/etc/resolv.conf
bashvim /etc/resolv.conf
然后添加或修改DNS服务器:
bashnameserver 8.8.8.8 nameserver 8.8.4.4 #8.8.8.8 和 8.8.4.4 是 Google Public DNS 的两个公共 DNS 服务器 #是 Google 提供的免费、公开的 DNS 解析服务,面向全球用户。这些 IP 地址可以用于快速、可靠地解析域名到 IP 地址。 #上述是配置得语法演示
3.修改网卡配置文件定义DNS
在centos7中修改网卡配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33 当然因系统不同,网卡配置文件的名字会有不同。
-
找到网卡配置文件 通常位于
/etc/sysconfig/network-scripts/
目录中,文件名类似于ifcfg-eth0
。 -
添加 DNS 配置 编辑网卡的配置文件,添加或修改 DNS 服务器行:
bash#编辑网卡配置文件的命令 vim /etc/sysconfig/network-scripts/ifcfg-ens33
bash#这是在网卡配置文件的最后行要添加的内容 DNS1=8.8.8.8 DNS2=8.8.4.4
在我们配置静态IP时,其中有一项就是配置这个dns,当时一般都dns填写的都是局域网的网关ip
当然,我们最多可以添加三个 DNS 服务器。这种配置方式提供了冗余和故障转移的能力。在 DNS 解析过程中,#客户端会按照指定顺序查询这些 DNS 服务器。如果第一个服务器不可用,系统会尝试查询下一个,直到找到 响应。 -
重启网络服务 在更改后,重启网络服务以应用配置:
bashsystemctl restart network