0

读了很多关于服务器、负载平衡和类似主题的文章,我想到了一个问题。

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 上抛出的所有请求。

我试过搜索谷歌,但我得到的只是理论解释,这些解释让我找到了现在的位置。如果有人能向我指出一些彻底解释这一点的文章,那就太好了,希望很多其他人会发现这个问题很有用。

4

1 回答 1

2

任何人都可以运行 DNS 服务器,但挑战在于让某人使用它。通常,DNS 服务器 IP 作为 DHCP 选项提供或静态分配。如果您可以让某人使用您的服务器,您可以为任何主机名返回任何 IP,包括创建新的顶级域(当然,取决于客户端的任何过滤。例如,Web 浏览器可能难以使用新的 TLD )。请注意,使用 DNSSEC,这最终会改变,因为名称记录将被数字签名,您的服务器将无法准确地伪造​​签名。

DNS 服务器在树中运行。当一个服务器接收到一个不受其控制的域的请求时,它会将请求转发到另一个 DNS 服务器。另一台 DNS 服务器可能是返回 IP 的服务器(这称为权威服务器),或者它可能返回指向另一台服务器的 NS 记录,然后必须查询该服务器。DNS 根服务器用于解析 TLD。

DNS 服务器不需要总是为给定名称返回相同的 IP。它可能会根据区域、客户端 IP 甚至每个请求选择返回不同的 IP。这是最典型的负载均衡方式。多个 DNS 服务器还可以通过使用任播路由对 DNS 请求进行负载平衡,其中许多服务器共享相同的公共 IP,并且通过为同一 IP 发布多个路由将流量随机路由到它们。

于 2013-08-20T15:53:07.577 回答