探索全球DNS体系 | 从根服务器到本地解析

时间:2024-01-22 16:11:13

DNS 发展

DNS(Domain Name System)的起源可以追溯到互联网早期。

  1. 早期的挑战:

    • 早期互联网主要通过IP地址进行通信,用户需要记住复杂的数字串来访问网站。
  2. 需求的催生:

  • 随着互联网的扩大,更简单、易记的命名系统的需求逐渐增大。
  1. 创建DNS的动机:

    • Paul Mockapetris和Jon Postel于1983年共同设计了DNS,旨在提供一种分布式的、层级的域名解析系统,以解决通过域名而非IP地址访问网络资源的问题。
  2. DNS的关键设计元素:

    • 分层结构: DNS采用了分层的域名结构,包括*域名(TLD)、次级域名、主机名等,使得域名管理更为灵活。
    • 分布式数据库: DNS的数据存储采用了分布式数据库的方式,由各级域名服务器负责管理特定域的解析信息。

DNS的发展历程:

  • 1980年: DNS被正式引入互联网,成为解决命名和地址解析问题的标准。
  • 1990年: 随着互联网的快速增长,DNS逐渐成为互联网基础设施的重要组成部分。
  • 2000年以后: DNS不断演进,引入了各种改进和扩展,例如DNSSEC(DNS Security Extensions)、IPv6支持等。

DNSSEC 引入:

  • DNSSEC是为了提高DNS的安全性而引入的,使用数字签名来确保域名解析的数据完整性和认证性。

DNS over HTTPS (DoH) 和 DNS over TLS (DoT):

  • 这两种协议通过加密通信方式提高DNS请求和响应的隐私和安全性。 在这里插入图片描述

根 DNS 服务器

  • 根 DNS 服务器负责处理*域(TLD)DNS 服务器的查询,例如 .com、.org、.net 等。
  • 当本地 DNS 服务器收到一个域名查询时,首先向根 DNS 服务器发送查询请求。
  • 根 DNS 服务器不直接提供完整的域名解析,而是指示本地 DNS 服务器继续向适当的 TLD DNS 服务器发出查询。

根 DNS 服务器分布

  • 世界上的根 DNS 服务器共有13个,分别用字母 A 到 M 表示。
  • 这些根 DNS 服务器由不同的组织和机构管理,分布在全球不同的地理位置。
  • 每个根 DNS 服务器都有多个实际的 IP 地址,提供冗余和负载均衡。
  • 根 DNS 服务器分布在世界各地,包括北美、欧洲、亚洲等地区。
  • 这种分布有助于提高 DNS 查询的效率和可用性,并减少对特定地理区域的依赖性。
  • DNS 结构是动态演进的,ICANN 和相关组织定期评估和调整根 DNS 的配置。根据评估新的根 DNS 服务器会添加到系统中,以应对互联网的扩展和增长。

中国 DNS 体系

我国的 DNS 体系中,本地 DNS 服务器会向全球的根 DNS 服务器发送查询请求,并由根 DNS 服务器引导本地 DNS 服务器到相应的*域(TLD)DNS 服务器,从而完成域名解析。

我国在国内维护自己的*域(TLD)DNS 服务器,例如 .cn 域的 DNS 服务器。这些服务器负责管理国内*域的域名解析服务。与根 DNS 服务器不同,这些服务器是针对特定*域而不是全球性的。

DNS 的作用

  1. 域名解析: 提供域名到 IP 地址的解析服务,允许用户通过好记的域名访问网络资源而无需记住复杂的 IP 地址。

  2. 层次化结构: 将互联网上的域名划分为层次化的结构,每一级域名(如.com、.org)都由不同的注册机构管理,实现了分布式管理和维护。

  3. 负载均衡: 允许一个域名映射到多个 IP 地址,从而实现负载均衡。当一个域名对应多个服务器时,DNS 可以轮流分配请求,分散流量。

  4. 电子邮件交换: 管理电子邮件系统中的邮件路由,通过 MX 记录指定邮件服务器,确保邮件能够正确地路由到目标邮件服务器。

  5. 提供别名(CNAME): 允许一个域名指向另一个域名,提供了域名的别名机制。

DNS 的工作原理

  1. 域名查询: 当用户在浏览器中输入一个域名时,操作系统将首先检查本地 DNS 缓存,如果没有找到对应的 IP 地址,将发起 DNS 查询。

  2. 本地 DNS 解析: 操作系统将查询发送到本地 DNS 服务器,由互联网服务提供商(ISP)或其他网络服务提供商提供。本地 DNS 服务器具有缓存功能,如果有记录则直接返回 IP 地址,否则将向更高层次的 DNS 服务器发起查询。

  3. 缓存: 为了提高查询效率,DNS 服务器会在查询过程中进行缓存。本地 DNS 服务器和中间 DNS 服务器都会在配置时间内保存查询结果,以便下次查询时能够直接返回。

  4. TTL(Time to Live): DNS 记录中包含 TTL,指定该记录在缓存中的存活时间。一旦过期,DNS 服务器将重新查询获取最新的 IP 地址。

总结,DNS 通过分布式数据库、域名层次结构以及查询实现域名到 IP 地址的解析服务。这种分布式的设计保证了 DNS 的高可用性和扩展性。

DNS 查询方式

在 DNS 中,迭代查询是一种查询过程,其中请求者(本地 DNS 服务器)向其他 DNS 服务器发出查询,并要求返回最终结果,而不是通过递归查询的方式由服务器一级一级地向上查询。这种查询方式减轻了根 DNS 服务器的负担,提高了查询效率。

DNS 查询包含两种主要类型:

  1. 递归查询(Recursive Query): 递归查询是请求服务器提供完整的查询结果。当一个 DNS 服务器收到递归查询时,将负责迭代地查询其他 DNS 服务器,直到找到最终的查询结果,然后将结果返回给请求者。

  2. 迭代查询(Iterative Query): 迭代查询是请求服务器提供最好的信息,并允许请求者继续查询其他 DNS 服务器以获取更多信息。当一个 DNS 服务器收到迭代查询时,会返回自己所知道的最佳信息,如果无法提供完整的结果,将指示请求者继续向其他 DNS 服务器查询。

在 DNS 查询过程中,递归查询和迭代查询结合使用。本地 DNS 服务器(请求者)发起一个递归查询,然后向根 DNS 服务器发出迭代查询。根 DNS 服务器返回指向*域名服务器(TLD)的迭代查询结果,然后本地 DNS 服务器继续向 TLD 服务器发出迭代查询。这个过程一直持续,直到找到最终的查询结果。

迭代查询在 DNS 查询过程中也是一种常见的机制,通过允许 DNS 服务器返回部分信息,然后继续向其他服务器查询,提高 DNS 查询的效率。

Windows/Linux DNS 记录配置差别

Windows DNS和Linux DNS的记录(域名解析记录)在语法和配置上有些差异。 常见的DNS记录类型,在Windows和Linux环境中的差别:

  1. A记录(IPv4地址记录):
  • Windows:

    example.com.    IN    A    192.168.1.1
    
  • Linux:

    example.com.    A    192.168.1.1
    
  1. AAAA记录(IPv6地址记录):
  • Windows:

    example.com.    IN    AAAA    2001:db8::1
    
  • Linux:

    example.com.    AAAA    2001:db8::1
    
  1. CNAME记录(别名记录):
  • Windows:

    www.example.com.    IN    CNAME    example.com.
    
  • Linux:

    www.example.com.    CNAME    example.com.
    
  1. MX记录(邮件交换记录):
  • Windows:

    example.com.    IN    MX    10    mail.example.com.
    
  • Linux:

    example.com.    MX    10    mail.example.com.
    
  1. PTR记录(反向解析记录):
  • Windows:

    1.1.168.192.in-addr.arpa.    IN    PTR    example.com.
    
  • Linux:

    1.1.168.192.in-addr.arpa.    PTR    example.com.
    
  1. NS记录(域名服务器记录):
  • Windows:

    example.com.    IN    NS    ns1.example.com.
    
  • Linux:

    example.com.    NS    ns1.example.com.
    
  1. SOA记录(起始授权机构记录):
  • Windows:

    example.com.    IN    SOA    ns1.example.com. admin.example.com. (
                            2022010101 ; Serial
                            3600       ; Refresh
                            600        ; Retry
                            1209600    ; Expire
                            3600       ; Default TTL
                          )
    
  • Linux:

    example.com.    SOA    ns1.example.com. admin.example.com. (
                            2022010101 ; Serial
                            3600       ; Refresh
                            600        ; Retry
                            1209600    ; Expire
                            3600       ; Default TTL
                          )
    

windows dns 特有记录

在 Windows DNS 中,与 Active Directory(AD)相关的特有 DNS 记录主要是 SRV 记录。这些记录用于服务发现和域控制器的定位。 SRV 记录:

  1. 域控制器发现记录:

    • _ldap._tcp.dc._msdcs.example.com.
    • _kerberos._tcp.dc._msdcs.example.com.
    • _gc._tcp.dc._msdcs.example.com.
  2. 其他与域控制器相关的记录:

    • _ldap._tcp.pdc._msdcs.example.com.
    • _ldap._tcp.gc._msdcs.example.com.
    • _ldap._tcp.rras._msdcs.example.com.

记录用于指示 LDAP 服务、Kerberos 认证服务、全局编录服务、主域控制器(PDC)、全局编录服务器(GC)和远程访问服务器(RRAS)的位置。

Windows DNS 在配置 AD 时会自动创建这些记录,来支持域环境运作和服务发现。


::: hljs-center

~~喜欢的话,请收藏+关注~ ~~万一有趣的事还在后头呢~

:::