域名服务器简介

域名为互联网提供了更加用户友好的引用服务器的方式,但是你有没有想过它是如何在幕后工作的吗?

在阿帕网(ARPANET)开始时,只有少数几台主机可以保存在一个简单的主机名文本文件中。 多年来,随着互联网的爆炸性增长,需要一个系统来帮助组织无数的现有域名和地址。

为什么是DNS?

最初,域名系统(DNSDomain Name System的缩写)是为了支持电子邮件通信的发展而创建的,第一个电子邮件地址只包括 user@host。 随着时间的推移,用户的增加,RFC 805(https://tools.ietf.org/html/rfc805)被创建来将电子邮件地址扩展到 user@host.domain,其中 domain 应该是一个主机层次结构。

DNS当前使用此模型在全球范围内支持互联网(Internet)。

IP和主机名

为了区分作为网络一部分的每个主机,将为每个主机分配一个主机名和一个唯一的数字地址。 主机名易于使用并为人类记住,而数字地址则由计算机所基于的内部二进制系统处理。

IP地址是一组数字,用于分层标识网络中设备的接口。 这种分组层次结构的形成方式称为寻址,例如192. 168. 1. 34。

这些组或段中的每一个都指示与它们进行通信所必需的路由机制。 DNS是双向执行翻译的系统,因此人类可以与主机进行通信,反之亦然。

DNS解析

域名系统有三个主要组成部分:

  1. 域名称空间(domain namespace),是域名树结构的规范。
  2. 名称服务器(name servers),是包含域树的结构信息的服务器程序。 这些服务器可以设置信息或将其缓存。
  3. 解析器(resolvers),是客户端程序,可响应用户请求从名称服务器提取信息。

域名解析(或DNS解析)是将IP地址与域名相关联的过程。 从用户的角度来看,解析器通过程序的简单调用来访问域名系统,该解析器与名称服务器联系并获取包含在域名空间中的信息。

域名和名称委托

域名称空间是树结构。 整个数据库可以看作是一棵倒置的树,其根在顶部。 树上的每个节点和叶子都对应一个资源集。 根名称是空字符串(“”),通常用点(.)表示:

                                · <- root
                                |
              +--------+------------------+-------+ <- Top Level Domains
              |        |        |         |       |
             .net     .edu     .com      .cc     .gov
                                |
                              xu.com
                                |
                 +---------------------------+ <- Second Level Domains
                 |              |            |
          cluster.xu.com       www.xu.com   mail.xu.com <- subdomains
                 |
    node1.cluster.xu.com <-host

域名标识一组资源,这些资源又与单独的资源注册表(RR)集成在一起。 RR的主要组成部分之一是标识存储该记录的资源,因此是信息的所有者或权威来源。

公共域名是通过ICANN(https://www.icann.org/)授权的注册商进行注册的,ICANN是一个非营利性实体,负责对其进行管理。 在大多数情况下,这些注册人提供接管域名管理的服务。 此过程称为域名委托。

互联网上最常用的DNS服务器,伯克利互联网名称域名(BIND是Berkeley Internet Name Domain的缩写),提供了许多查询和验证域名信息的工具。 这是系统管理员的主要任务之一,该系统管理员使用提供给Internet的服务来管理服务器。

要安装BIND及其工具,请运行:

yum install bind-utils -y # CentOS
sudo apt-get install bind # Ubuntu
brew install bind # macOS
# Windows用户 请前往“http://ftp.isc.org/isc/bind9/9.11.0rc3/”下载

要验证的最常见的RR类型为:

  1. A-与域名关联的主机地址。
  2. NS-域的权威名称服务器。
  3. SOA-标识授权区域的开始。
  4. CNAME-标识别名的规范名称。
  5. PTR-标识与域名/主机名关联的IP地址。
  6. TXT-用于将任意文本关联到域,一般指为某个主机名或域名设置的说明。最常见的是,TXT记录用于将SPF记录与域相关联,以提高电子邮件的可传递性,并防止垃圾邮件发送者在发送垃圾邮件时滥用域名。

例如,如果我们要验证baidu.com域的记录类型A:

~ dig baidu.com

; <<>> DiG 9.10.6 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53035
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		578	IN	A	220.181.38.148
baidu.com.		578	IN	A	39.156.69.79

;; Query time: 45 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Tue Dec 03 14:24:25 CST 2019
;; MSG SIZE  rcvd: 70

PTR(或反向)记录查询用于验证IP地址是否已分配给在Mail eXchanger(MX)记录查询中解析的同一主机:

~ dig baidu.com -t MX

; <<>> DiG 9.10.6 <<>> baidu.com -t MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31939
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;baidu.com.			IN	MX

;; ANSWER SECTION:
baidu.com.		2328	IN	MX	20 jpmx.baidu.com.
baidu.com.		2328	IN	MX	15 mx.n.shifen.com.
baidu.com.		2328	IN	MX	20 mx1.baidu.com.
baidu.com.		2328	IN	MX	20 mx50.baidu.com.
baidu.com.		2328	IN	MX	10 mx.maillb.baidu.com.

;; Query time: 31 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Tue Dec 03 14:26:18 CST 2019
;; MSG SIZE  rcvd: 143

当域管理自己的邮件服务时,此配置是必需的,因为否则,服务器可能会被列入黑名单(blacklisted)并且不受信任。

另一个有用的故障排除过程是检查查询路由留下的跟踪:

~ dig baidu.com @114.114.114.114 +trace

; <<>> DiG 9.10.6 <<>> baidu.com @114.114.114.114 +trace
;; global options: +cmd
.			1501	IN	NS	m.root-servers.net.
.			1501	IN	NS	c.root-servers.net.
.			1501	IN	NS	j.root-servers.net.
.			1501	IN	NS	e.root-servers.net.
.			1501	IN	NS	f.root-servers.net.
.			1501	IN	NS	g.root-servers.net.
.			1501	IN	NS	i.root-servers.net.
.			1501	IN	NS	d.root-servers.net.
.			1501	IN	NS	a.root-servers.net.
.			1501	IN	NS	l.root-servers.net.
.			1501	IN	NS	k.root-servers.net.
.			1501	IN	NS	b.root-servers.net.
.			1501	IN	NS	h.root-servers.net.
;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 88 ms

com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20191216050000 20191203040000 22545 . MVqSzDbsmBO7A5ZOZM+nsI6B/afLgrCqOMNCyfyPl5W8nBnv0VhpB1qr By6um9s9OgjJ/XRLtWfLYtIr5UPINMEbxY3OMyvdPCI4Tqe/kuG0hsCr iJM+X26kh+QTMQ4mpL1cj04SKek8f394KIAO0UeSeYvM/JQ9N4a0WdrT sHpDOUlssYvhnxR8LP1ZZGiCZz4ZRTpcdFJoRGBFyB4K3mSZDSpmoE7B fS3jz+ucDvZvXx39SO7kjvpQwhcaZRJBXauhY3AfCBH3PxZtRqZDzZrE BcOSXGu5+gXHA8YHxZ69ktZVRbGvOSEwGRr7vLYveeBIhitzf/V4Zn5z OHgUEw==
;; Received 1169 bytes from 193.0.14.129#53(k.root-servers.net) in 73 ms

baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns1.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20191209054950 20191202043950 12163 com. S9i2P8sKc5s+dCJwh/UR7HlyuiRL5Iz6cCd3oPPV71iyHoYlqq7Q8qFO OVZj5tJP0BTXw9po8arg1iBmd5yJ7mpHCaVCKmY+dssg3fyfPlSl/lXd a4YL4xoHWNCa0Ow5Ywds7/AqtqDfhN0dnP6i+eaFD9rgrmfO6CVoto6B UYrEQbB2Es6vyUvE/ITtkZUI8wfOQjmLXp3jnQ7PUcWSdw==
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE2LEM4SVB9C0SJ6  NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20191207055135 20191130044135 12163 com. IaSBRLbvBZR4FD6viNRV3ApdH9d64mA+QWTq5EFRzns1nlizGwD3nYKE p3Or+JtNAhZxILcU5g4jtfY7xRnxACI42fruWP+Z4W7XPTHY0DU94bwG sZE50s8Po/0aAXbKsRhLT4cTWUGlrPB+T9MWuHuxIX9dD+Dwm6+jTuYL 0jHPrL3OB8WsHzOsV8kEbGejPQITC2fRi9MdOIko5ELt0Q==
;; Received 757 bytes from 192.43.172.30#53(i.gtld-servers.net) in 245 ms

baidu.com.		600	IN	A	39.156.69.79
baidu.com.		600	IN	A	220.181.38.148
baidu.com.		86400	IN	NS	ns7.baidu.com.
baidu.com.		86400	IN	NS	ns3.baidu.com.
baidu.com.		86400	IN	NS	ns4.baidu.com.
baidu.com.		86400	IN	NS	ns2.baidu.com.
baidu.com.		86400	IN	NS	dns.baidu.com.
;; Received 240 bytes from 112.80.248.64#53(ns3.baidu.com) in 60 ms

在此查询中,我们可以看到它始于根DNS服务器,后者移至顶级域(TLD),直到找到请求的域名注册并返回与之标识的主机为止。

主区域和从属区域

从前面的示例中,我们可以注意到域名已分配给多个权威主机。 此设置类似于群集,以提供解析服务的可用性。

域名记录信息包含在区域文件中,可以将其配置为读/写或只读。 具有读/写的区域文件称为“主区域”。 一次在DNS服务器上只能有一个“主区域”文件。 必须在“主区域”中添加或修改所有DNS记录。

从属区域是从DNS主设备传输的主区域的只读副本,并且每隔一定时间进行同步,以保留域名记录中信息的完整性。

区域同步是一个可以由异步密钥保护的过程,用于加密通信和限制主机。

动态DNS

当将可变IP地址分配给设备时,需要DNS服务器的变体才能分配域主机名。 动态域名系统(DDNS)监视设备IP地址的更改,并在修改后更新注册表。

当您在局域网上有需要通过Internet访问的设备时,通常会使用DDNS。 Web上有多个提供此类服务的提供商,例如:FreeDNS,Securepoint DynDNS,Dynu,DynDNS服务,DuckDNS或No-IP,其中一些提供完全免费的计划或付费服务。

我们先前安装的工具包包含实用程序(nsupdate),用于将RFC 2136中定义的DDNS更新请求提交给名称服务器。

在以后的文章中,我将向您展示一种简单的方法来设置我们自己的DNS和DDNS服务器。

原文:https://xushanxiang.com/2019/12/dns-domain-name-servers.html

posted @ 2019-12-03 15:13  许善祥  阅读(1276)  评论(0编辑  收藏  举报