域名为互联网提供了更加用户友好的引用服务器的方式,但是你有没有想过它是如何在幕后工作的吗?
在阿帕网(ARPANET)开始时,只有少数几台主机可以保存在一个简单的主机名文本文件中。 多年来,随着互联网的爆炸性增长,需要一个系统来帮助组织无数的现有域名和地址。
为什么是DNS?
最初,域名系统(DNS
是Domain 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解析
域名系统有三个主要组成部分:
- 域名称空间(domain namespace),是域名树结构的规范。
- 名称服务器(name servers),是包含域树的结构信息的服务器程序。 这些服务器可以设置信息或将其缓存。
- 解析器(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类型为:
- A-与域名关联的主机地址。
- NS-域的权威名称服务器。
- SOA-标识授权区域的开始。
- CNAME-标识别名的规范名称。
- PTR-标识与域名/主机名关联的IP地址。
- 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