采访DNS的创造者保罗·莫卡佩里斯(Paul Mockapetris)

2020-06-28 07:26:40

域名系统(DNS),通常被称为互联网的电话簿,是互联网基础设施的基本部分。它是由Paul Mockapetris博士于1983年创建的,当时他在南加州大学的信息科学研究所工作,当然,它是一个分布式目录,其主要作用是将人类可读的主机名(如www.欢迎使用theJungle.com)转换为机器可读的IP地址(如52.211.16.159)。1986年,它被互联网工程任务组(IETF)采纳为最初的互联网标准之一。

在接受“代码背后”的采访时,Mockapetris考虑了他的创新的现状及其在一个各国都在寻求建立自己的内部网的世界中的未来。在这里,他分享了他对系统安全漏洞的看法,如何处理恶意软件,他希望DNS 2.0会是什么样子,以及区块链技术如何与系统一起使用。

请您给我们简要介绍一下DNS的历史和它是如何产生的。

在Internet的早期,主机和IP地址信息存储在由斯坦福研究所[SRI]维护的文本文件[HOSTS.TXT]中。当新计算机加入网络或旧计算机修改其详细信息时,人们必须联系SRI并手动更新此文件。任何需要计算机IP地址的人也必须联系SRI并获得更新后的文件。这是一个大问题,因为它在工作日5点关门,而在节假日不开放。DNS就是用分布式数据库解决这一问题的一种方法。

我想,很多设计都出自我的背景。我在加州大学欧文分校与戴夫·法伯(Dave Farber)一起攻读博士学位,并为分布式计算项目工作。我以前在IBM虚拟机技术和集群计算部门工作过,因此我对如何在管理分散的多台机器系统上进行组织有很多了解。

但是分布式计算并不是一个全新的概念。已经有了在不同计算机之间分发信息的想法-例如,施乐的人有他们的专有系统,称为XNS[施乐网络系统]。DNS的问题是,它足够大,比任何一家制造商都大,而且它可以承担某些工作,比如能够在不同类型的计算系统之间路由电子邮件。

许多人认为DNS的唯一目标是从名称到地址,但它被设计成一个比这更通用的目的。人们已经想出了大约60或70种不同的用途。其主要思想是分发权限,这样您就可以获得您的域并对其进行管理,而不必在任何时候想要更改它时回到某个中央权威机构。此外,您还可以在该名称下创建一些域。因此,大学可以获得他们的域名,然后为不同的系创建单独的子域,公司可以针对不同的产品这样做。不管你们想怎么用你们的名字,你们都可以。

我们现在有1500多个顶级域名。当你发明DNS的时候,你想过我们会有这么多吗?

虽然我发明了它,并将其设计为具有灵活性,但添加新的顶级域名(TLD)的能力一直是一场政治足球游戏。在ICANN[互联网名称与数字地址分配机构]成立之初,他们认为增加大量新的顶级域名是危险的。我真的看不出为什么,但我同意慢慢来,小心翼翼可能是有意义的。

最终发生的是,我帮助起草的最初政策说,每个国家都可以有自己的TLD。所以,过了一段时间,我们就有了大约200个国家代码。很明显,添加新的TLD并不像一些人担心的那样有害。

关于谁拥有一个特定的TLD仍然有很多问题,比如亚马逊是否应该拥有自己的TLD,而南美被亚马逊河分割的国家则声称拥有所有权?所以这里面有一堆政治因素。

我设计了DNS,以便命名空间可以是您想要的任何名称空间,并且准备提供它的人员可以自由选择。

Tim Berners-Lee(万维网的发明者)和其他许多人称URL的设计很笨拙,因为我们有host.domain(欢迎使用ettheJungle.com),它的层次结构是从低到高。然后我们有路径组件-/en/Collection/behindthecode-它从高到低。我们还混合使用句点和斜杠。因此,伯纳斯-李提出域/主机/路径-也就是说,com/welcometothejungle/en/collections/behindthecode—would是一个更好的设计。你对此有何感想?

我把它设计成自动补全的方式。我当时的设想是,人们会想要自动完成,或者他们可能只想输入域名的一部分,然后在本地环境的搜索列表中完成它。因此,先有国家代码是没有意义的。如果你想要有一个合理的搜索列表或自动补全,它必须是最不重要的部分。想象一下,如果我们键入“com”。然后等待自动完成。在1.6亿种选择中,会有相当长的下拉菜单。因此,在没有达成任何协议,或者在我看来,没有令人信服的论点来说明为什么相反的做法更有意义的情况下,我就这样做了。

DNS并不完美。它存在许多安全漏洞,如欺骗、洪流和DDoS攻击。您自己也说过,比起应该做的事情,更多的时间花在防范威胁上。这些漏洞中您最担心的是哪一个?

DNS没有多少安全性这一事实在一开始就是故意的,因为问题是让人们接受整个分布式系统的想法,这在当时是相当有争议的。人们会说,“如果我不能访问网络,我就不能完成工作。”随着我们对计算的看法的改变,这些事情也发生了变化,我认为您提到的所有这些问题都随着时间的推移而得到了解决。但最让我沮丧的是,人们还没有想出解决DDoS问题的好办法。

DNSSEC扩展实际上帮助解决了许多困扰DNS的安全问题,而且看起来很有前途。今天有多少互联网受到DNSSEC的保护?

这取决于你是计算注册的姓名数量,还是统计使用它的人数。我想不管你怎么做,都不会超过一半。

但是假设DNSSEC确实为您提供了安全性--如果我对保护隐私感兴趣,我不确定我所有到Google或Cloudflare DNS服务器(默认情况下执行DNSSEC)的DNS是否都是我真正想要的。

今天正在发生的另一个重大发展是基于HTTPS或DoH的DNS。这产生了一个有趣的现象,因为浏览器绕过了用户计算机、防火墙和ISP[Internet服务提供商]中的DNS。我认为将DNS流量转移到Web协议中可能会对组织产生更大的影响。

去年12月左右,俄罗斯宣布正在建设主权内联网。要做到这一点,它需要开发的关键组件之一是它自己的DNS基础设施。这有多可行呢?

这是我们见过很多次的现象。当我为大公司做DNS咨询时,我通常会告诉他们,第一步可能是弄清楚如果外部DNS不可用或以某种方式受到威胁,他们公司的运营将如何继续工作,因为现代网络需要DNS才能工作。因此,如果你想掌握自己的命运,你必须确保你弄清楚了这一点。我认为有很多大企业都有自己的内部DNS服务,不想依赖外部的任何东西。还有一些国家可能不会选择信任ICANN,希望确保自己的内部系统继续发挥作用。

技术是存在的,但是有相当多的管理工作,您必须部署服务器,并且您必须测试它们,等等。我们已经看到这个的原型已经完成了。开放源码的DNS可以用来做我认为俄罗斯人想做的事情。您可以设置自己的根,也可以接受ICANN的根数据并执行一组新的数字签名或新的分发机制。所以这只是关于把一些东西放在适当的地方。这不是一个很小的努力,但俄罗斯人完全有能力做到这一点。

但你还必须弄清楚这是否意味着俄罗斯人将无法向俄罗斯境外发送电子邮件。您可能希望继续与外部世界建立一些联系,那么您希望如何支持这一点呢?我认为,从业务角度来看,拥有连通性是很重要的。即使是中国的长城防火墙也没有切断连接,而是试图控制它。

很多人没有意识到点击电子邮件中的任意URL是不安全的。我们能做些什么来解决这个问题,让他们不必担心他们点击的是什么?

这是我最喜欢的例子。曾几何时,如果你点击“纽约时报”的网站链接,你就会接触到恶意软件。原因是,如果你要“纽约时报”的头版,上面插入了广告,而广告经纪人从任何想付钱的人那里拿走了广告。在某些情况下,是人们想要传播恶意软件。这些小广告链接是传播恶意软件的著名方式之一,我从来没有点击过它,但它包含在其中。所以我对点击的内容有一定的卫生要求,但实际上,我真的依赖于幕后的额外过滤来让我远离危险的道路。所以我有黑名单。

我目前是一家名为ThreatSTOP的公司的董事,该公司向人们出售过滤服务。我们基本上有一个DNS服务器,您可以将其加载到您的笔记本电脑上,然后您可以选择您想要的过滤。你知道,今天的数字手表比1983年的根服务器拥有更强的计算能力,所以你没有理由不能运行自己的DNS服务器。唯一真正的问题是您想要一个易于使用的管理界面。

另一件事是,Cloudflare为美国极右翼组织、激进组织、Torrent站点和传播恶意软件的站点托管内容。不管你的政治哲学是什么,Cloudflare正在招待你觉得非常令人反感的人。因此,在我看来,使用它们来过滤您的DNS不是一个好主意,因为它们不会过滤出它们自己服务的内容。

很多人认为这是一种审查制度。曾几何时,人们认为垃圾邮件过滤是危险的,因为审查电子邮件是邪恶的,等等。今天,我认为没有人使用不使用这种过滤机制的电子邮件。同样,我不认为任何人都应该在没有过滤机制的情况下使用DNS。

关键问题是您是否可以控制要进行哪些过滤。ThreatSTOP收集数百个威胁源,包括Cloudflare、Spamhaus和Farsight Security等专有源,但允许您选择要部署的源,并允许您添加自己的规则。也可能是您只需从Spamhaus获取过滤列表,然后放入您想要的任何例外。

一个有点有趣的过滤列表是新观察到的域或新观察到的帖子。这只是前半小时、一天或五天内创建的所有域的列表。如果你说,嗯,我不会和一个不到五天的域名交谈,那是指所有通过黑客攻击和欺诈使用信用卡而获得域名的人,他们的域名因为信用卡费用反弹而被关闭。实际上,你可以通过不与这些人交谈来提高你的安全性。无论它是什么过滤,我认为最终用户必须控制或有能力控制它。

以前,您已经使用术语DNS2.0来描述DNS的未来。理想情况下,它会是什么样子呢?

我认为DNS2.0必须提供一些我们今天看不到的新功能,可能是不依赖于中央路由的名称和ICANN之类的身份验证。挑战是将这种能力与助记能力相结合,即人们可以理解的名字。因此,我认为DNS2.0将解决这样的问题,即允许您创建自己的名称以供点对点使用,或者其他什么,同时构建一个像DNS1.0那样的助记符名称目录。

但这是我的猜测。有很多人说过,下一代应该是基于区块链的,也有很多想法。但我认为还没有人真正破解这个密码--比如我。

我认为我们可以将分布式分类帐技术用于登记处和登记处的操作。那种东西不会有任何问题。在我看来,用面向区块链的查询机制取代基本的查询机制永远不会给你带来正确的性能。

我曾经向ICANN的人提议,他们可以由现有顶级域名的投票系统来管理根部,然后由他们投票决定是否接纳新的顶级域名。您可以考虑使用分类帐技术实现的算法,使这里的一些官僚职能自动化。不用说,拥有自己的顶级域名的人都不喜欢这个想法,但我仍然认为它会很有意义。

本文是开发人员的媒体“代码背后”的一部分。通过访问代码背后发现更多文章和视频!