众所周知的URI vs dn - sd用于分布式web服务发现

在本文中,我想讨论如何使用众所周知的基于uri和DNS的服务发现(dn - sd)方法将域名映射到分布式web上的资源。我将重点讨论不同方法绕过internet审查和集中审查的能力,并讨论一些改进分布式web项目目前使用的实现的建议。

有用于两种主要方法自动发现站点上提供的服务:你要么Web请求发送到预定的服务发现地址,也可以查询域名系统(DNS)预定服务发现记录。

与常规web一样,分布式web依赖于这两种方法来发现资源地址,这些资源地址用于在各种分布式网络中通过域名检索内容。我将依次讨论这些方法。

著名的URI(RFC 5785)是简单的,你控制域的根,可以在域根公开文件中的任何Web服务器上实现。该Dat协议烧杯浏览器使用此方法来发现网站通过请求档案的哈希指纹从一个文件中提供服务的分布式逸档案https://example.com/.well-known / dat

这种方法是比较简单的解释和设置。但是,它也有单一故障点:网站提供的文件。根据网站的措施,使自己多余的,可以相对容易地被阻止,甚至离线撞倒;服用域,并与它的站点的分布式网络版之间的映射。

Dat和Beaker浏览器还支持众所周知的URI发现方案的另一种相同域查找方法。我将在本文后面讨论这个问题。

我对排名前240万的网站进行了调查Tranco列表;看到在年底的文章来源)发现了10个支持Dat的网站。除了Beaker浏览器自己的网站也提供了另一种dn - sd方法之外,它们都使用了众所周知的URI发现机制。

Beaker浏览器专注于允许人们通过他们的浏览器建立和托管分布式网站。这个项目也提供了一个付费托管服务,叫做Hashbase这使得分布式可通过HTTPS网站和充当逸分配节点。Hashbase得到客户在Hashbase客户子域,让他们的分布式网站不是随机哈希值的友好名称。

Hashbase使用众所周知的uri将大约2600个客户的域名映射到Dat。Hashbase无疑是Dat网络中最大的分布节点。该服务曾多次宕机,导致这些分布式网站无法使用,即使在网络上有其他分布式节点托管这些网站时也是如此。

域名系统(DNS)是,不像网络,设计的大部分地区被分散。DNS是[大多]快,也可以是安全的。DNSSEC可以用来保证从权威DNS提供商dweb内容地址响应获取到您的设备不变。设备与您的递归DNS提供商之间的通信,也可以通过TLS或HTTPS连接加密它们固定。

除非你能挡掉从源头互联网域名的权威DNS服务器,递归DNS服务器可以和将能够解析域名。(递归DNS服务器是由ISP或像OpenDNS的供应商,Quad9,CloudFlare的,或谷歌提供的DNS服务器。)

一个域可以与多个授权DNS提供商被配置为创建冗余和使其难以阻止域。DNS阻塞是很难正确的,容易做到的路线周围,如土耳其证实,当他们试图阻止BunnyCDN(Ctrl blog的CDN provider。)

我们已经看到在递归DNS空间越来越集中在最近几年。谷歌产品,包括Chromecast的;的Chromebook和Chrome浏览器,被硬编码在默认情况下,而不是由ISP提供的那些使用谷歌的DNS服务器。花式易记免费易用的递归提供商,如1.1.1.1和9.9.9.9也有助于集中式一次分散的系统。但是,如果你的DNS提供商块你要什么,你仍然可以通过使用任何其他DNS提供商处获得对它的访问。

中的DAT项目都选择使用通过HTTPS谷歌的公共DNS解析器作为其默认的递归DNS解析器而不是使用系统的DNS设置,大多数应用程序的。您不能配置在烧杯中浏览器的另一个DNS解析,但你可以的,如果你在逸项目的库之上构建应用程序。

这再次引入单个失效点可以阻止(或遭受一个临时的服务中断),用于DAT和烧杯;一对项目是奇怪似乎更喜欢集中单一厂商的解决方案在分布式解决方案来构建自己的分布式Web的版本。我提出了一个补丁,意志让Dat在Cloudflare DNS、谷歌DNS或Quad9中随机选择而不是依赖于单一的系统。

星际文件系统(IPFS)使用DNS记录来发现服务,不支持众所周知的uri。IPFS和Dat支持发现存储在裸域名上的TXT记录中的资源地址。IPFS还支持将域记录存储在子域中,这种方法与将其保存在裸域相比有几个优点。

You notably can’t provide additional DNS records — like the ones used to discover content on the dweb — on a domain that’s resolved using a CNAME; such as is the case for popular websites that rely on content distribution (CDN) networks.

特定于服务发现的子域可以委托给另一个DNS服务器(使用NS记录)或“转发”到另一个域(CNAME记录)。这两种方法都允许域所有者将服务发现机制与他们的主域区域隔离。

这有助于确保DNS区域的安全为DNS服务发现可以外包给第三方或不能覆盖主区段的专用服务器处理。它尤其可以让网站所有者购买IPFS节点和服务提供商托管和委托或者其域所需的部分转发给第三方。这种灵活性可以帮助驱动器采用分布式Web的。

IPFS”服务发现子域被称为_dnslink我必须承认我讨厌这个名字。您正在查询DNS以获得IPFS的信息,而不是相反!“DNSLink”没有定义规范,我已经提供了一些注意事项和建议,以帮助推动一些变化是规范推进。我也提出并论证过Dat应遵循suiteyabo亚博体育下载以及转向使用子域。裸域方法应该被弃用,以提高性能并减少不必要的DNS流量。

结论

分布式web仍在发展中,最终可能会使用其他DNS的替代品,比如星际名称系统(IPNS),这使得整个讨论变得无声无息。然而,使用像DNS这样分散的生态系统非常符合许多分布式web项目的既定目标。

良好设计和标准化的基于DNS的服务发现允许将服务发现分散,并为域所有者提供部署灵活性,这与存储在网络中单个集中点上的文件相比。

这也使人们一个比较简单的方法来各地的互联网审查制度的路线。作为奖励:基于DNS的服务发现将在几乎所有情况下是几百倍,需要一个完整的网络连接和安全链路协商与Web服务器中的任何更快。

众所周知的uri可能非常有用,但是它们依赖于集中式服务器和单点故障,这使得它们在发现分布式web上的资源地址时不太合适。特别是当有更好、更分散的选项可用时。