转载自 https://ethfans.org/posts/ethdns-an-ethereum-backend-for-the-domain-name-system
什么是域名系统?
域名系统( DNS )是一个分层分散式的信息存储系统,最常用于将人们输入到 Web 浏览器中的可读名称(例如 www.my.xyz )解析成用于标识互联网中的计算机的数字地址(译者按:即 IP 地址)。
由于 DNS 具有分层性,域名可被分解为几个组成部分。例如,域名 www.my.xyz 的分解如下:
-一个完全合格的 DNS 名称的分解-
其分解后的组成部分可以在 DNS 层次结构中找到,如下所示:
-从 DNS 根到 www.my.xyz 的路径的 DNS 层次结构-
DNS 层次结构使得从 DNS 根开始遍历所有节点成为可能,其方法是按照 DNS 域名的组成部分逐层从右到左遍历。
域名树中的每个节点映射到一个数据存储,其中每个节点的数据存储必须包含其正下方所有直接连接的节点数据。服务器保存这些数据,并使其可供 DNS 客户端查询(这种服务器称为“域名服务器”)。
下面显示了解析“www.my.xyz”所需的域名服务器以及每个域名服务器所保存的数据:
-解析my.xyz域名所需的传统的 DNS 服务器基础设施-
上图显示了一组包含 DNS 根信息的域名服务器,一个对应“xyz”域名,另一个对应“my.xyz”域名。每个域名服务器对应 DNS 层次结构中的一个节点。根域名服务器存储了指向根域名服务器下一层的域名服务器(com,net,xyz等)的指针。xyz 域名服务器存储了指向 xyz 域名服务器的下一层名服务器(my.xyz,ns.xyz, EthDNS .xyz等)的指针。my.xyz 域名服务器存储了 my.xyz 域名下的域名数据(www.my.xyz等)。
(请注意,上图及其解释是 DNS 的简化视图,但这对于本文来说就足够了)。
通过以上的信息可以看出,一个域名,例如 www.my.xyz,将其解析成 IP 地址需要以下步骤:
-解析 www.my.xyz 的 IP 地址-
客户端向根域名服务器发送 www.my.xyz 的域名解析请求
根域名服务器查询本地记录。虽然没有 www.my.xyz 的记录项,但是它存储了 xyz 域名服务器的信息
根域名服务器返回提供 xyz 域名信息的域名服务器的详细信息
客户端向 xyz 域名服务器发送 www.my.xyz 的域名解析请求
xyz 域名服务器查询本地记录。虽然没有 www.my.xyz 的记录项,但是它存储了 my.xyz 域名服务器的信息
xyz 域名服务器返回提供 my.xyz 域名信息的域名服务器的详细信息
客户端向 my.xyz 域名服务器发送 www.my.xyz 的域名解析请求
my.xyz 域名服务器查询本地记录。它记录了 www.my.xyz 的信息,该解析结果是193.62.81.1
my.xyz 域名服务器将结果 192.62.81.1 返回给客户端
什么是 EthDNS ?
EthDNS 由两个部分组成:一个是以太坊域名服务(ENS)解析器,另一个是域名服务器。前者允许在区块链上存储和访问 DNS 信息,后者允许使用与保存在传统域名服务器上的同等 DNS 信息的方式访问 DNS 信息。
这两个部分相结合,将域名解析基础设施图变成了下面的样子:
-包含提供my.xyz服务的 EthDNS 的 DNS 域名服务器基础结构-
my.xyz域名的域名服务器已经被配置为从以太坊区块链而非本地存储中获取信息,在图片中以右下角的以太坊符号表示。请注意,域名解析过程与上一张图片记录的过程完全相同,并且客户端不知道信息是从区块链返回的。 这使得 EthDNS 可以替换现有的域名服务器并与现有基础设施无缝配合。
EthDNS 的优点
在传统的 DNS 基础设施上使用 EthDNS 有许多的优点。
EthDNS 比传统的 DNS 更高效。 DNS 的分布式体系结构允许不同的域名服务器负责 DNS 层次结构中的不同部分,例如一个域名服务器可能负责根域名,另一个负责xyz域名,还有一个负责my.xyz域名。但这就导致了上一张图那样的来回的请求。相比之下, EthDNS 域名服务器只能提供各域名所有者在以太坊区块链上存储的信息,而无法修改信息。因此, EthDNS 域名服务器可以直接为存储在以太坊上的所有域名提供信息,如下图所示:
EthDNS 域名信息的直接解析
另一个显着的好处是信任。 DNS 依赖于一个信任网络,特别的是层次结构中的每一级都信任它的上一级。如果这个信任失效,例如,如果xyz域名服务器的所有者决定删除my.xyz域名,那么my.xyz的域名所有者就没有办法让他们的用户解析他们的域名。这种情况可以在下图看到:
-在传统 DNS 中拉黑一个域名-
xyz域名服务器删除了my.xyz域名,所以解析过程中的第6步之后,客户端没有办法联系my.xyz域名服务器来查找www.my.xyz的地址。
EthDNS 避免了这样的恶意拉黑,因为它是基于区块链的而不是分层的。正如前文所述,一旦一个域名在ENS中注册了,它就可以被直接查到。因此,数据无法被阻止( EthDNS 域名服务器短缺可能造成拒绝提供服务的问题,但解决方法见下文)。
DNS 服务器可以说是互联网基础架构中非常值得信赖的一部分,但这种信赖在过去一直被滥用。 DNS 劫持和中毒曾多次发生,并导致了用户安全信息泄露以及网站被封杀。因为 EthDNS 仅提供区块链数据,因此有安全意识的系统可以独立确认所提供的信息,同时/或者绕过域名服务器,直接从 EthDNS 解析器获取数据,该过程如下图所示:
-客户端将域名服务器从解析过程中删除,直接查询 EthDNS 解析器-
EthDNS 域名服务器遵循一个描述良好的系统来从 EthDNS 解析器中获取数据(ENS解析过程)。因此,用户可以创建或运行自己的 EthDNS 域名服务器,从而避免恶意域名服务器提供错误信息或阻止域名的可能性。
现状
EthDNS 在以太坊的Ropsten测试网络上运行着由ENS支持的域名服务器。例如,如果您访问 http://www.ensdns.xyz ,www.ensDNS.xyz的IP地址是由 EthDNS 域名服务器解析的。如何为自己的域名设置 EthDNS 则是下一篇文章的重点。
未来的计划
一旦 EthDNS 域名服务器和解析器都通过了测试, EthDNS 解析器将部署到以太坊主网上,同时也将部署 EthDNS 域名服务器以允许在以太坊上运行生产级的 DNS 。
目前 EthDNS 还无法存储域名系统安全拓展( DNSSEC)记录。这是由于在链上存储这些信息的成本和复杂性过高,特别是更换密钥时的更新成本。 EthDNS 域名服务器计划未来提供 DNS 结果的实时签名,同时计划努力研究是否可能使ENS支持链下储存数据的原生 DNS SEC,如储存在IPFS上。
有关 EthDNS 的更多信息和讨论,请通过 https://gitter.im/ethereum/go-ethereum/name-registry 访问Gitter的ENS讨论室。
原文链接: https://medium.com/@jgm.orinoco/ethdns-an-ethereum-backend-for-the-domain-name-system-d52dabd904b3
作者: Jim McDonald
翻译&校对: Aisling & Elisa
网友评论