阅读了很多关于服务器,负载平衡和类似主题的内容,我想到了一个问题。
DNS服务器是为您提供给定域名的IP的服务器。是否有“独裁者”知道世界上所有有效的DNS服务器?如果我想创建一个DNS服务器,并且有人请求它没有的网站。如何知道将请求重定向到哪个其他DNS?如果我告诉facebook.com有欺骗IP,每个从我的DNS服务器获取IP的人都会与恶搞的facebook服务器进行通信怎么办?显然,这不是它的工作方式(至少在很大程度上不是这样),因为那时候有人已经做过它来攻击数百人。
当注册域时,必须为该域指定名称服务器。在这个过程中会发生什么?是否有请求发送到此DNS服务器以通知它有一个新域要保存在数据库中?如果是这样,那么如何拥有像.com这样的顶级域名呢?如果我可以创建自己的DNS服务器,为什么我不能创建自己的顶级域名?
在将nginx视为负载均衡系统后,我开始怀疑了一下。这样对http://www.google.com/的请求是这样的吗?计算机向DNS服务器询问google.com的IP地址,然后请求它?这只是一个IP,所有对Google的请求都会在这个服务器上结束?然后这个IP将连接到nginx服务器,或更基本的硬件单元,以将请求内部路由到其他服务器?因此,在将请求重定向到数据中心之前,所有请求都会转到一台服务器上吗?
在查找google.com之后,它说名称服务器是ns1.google.com等。但是,如果你需要一个不同的名称服务器来访问ns1.google.com,那么它们有什么意义呢?放置?
显然,我所写的内容没有意义,因为如果确实如此,那么整个网络将无法使用,因为人们利用恶意原因的可能性。我无法想象一台服务器如何处理google.com上提出的所有请求。
我试过搜索Google,但我得到的只是理论上的解释,这些解释让我走到了现在的位置。如果有人能指出一些能够彻底解释这个问题的文章,那将会很棒。希望很多其他人会发现这个问题很有用。
答案 0 :(得分:2)
任何人都可以运行DNS服务器,但挑战在于让某人使用它。通常,DNS服务器IP作为DHCP选项提供或静态分配。如果您可以让某人使用您的服务器,您可以为任何主机名返回任何IP,包括创建新的顶级域名(当然,客户端可以进行任何过滤。例如,Web浏览器可能会遇到新TLD的问题,例如)。请注意,使用DNSSEC时,最终会更改,因为名称记录将进行数字签名,并且您的服务器无法准确伪造签名。
DNS服务器在树中运行。当一台服务器收到对其无法控制的域的请求时,它会将请求转发到另一台DNS服务器。另一个DNS服务器可以是返回IP的服务器(这称为权威服务器),或者它可以返回指向另一个服务器的NS记录,然后必须查询该服务器。 DNS root servers用于解析TLD。
DNS服务器不需要始终为给定名称返回相同的IP。它可以选择基于区域,客户端IP甚至每个请求返回不同的IP。这是最典型的负载均衡方式。多个DNS服务器还可以通过使用任播路由来对DNS请求进行负载均衡,其中许多服务器共享相同的公共IP,并且通过为同一IP发布多个路由来随机路由流量。