如何pipe理多个用户尝试将相同的域添加到我的DNS服务器

我正在开发一个免费的DNS服务,当两个或更多的客户尝试添加同一个域(几乎同时)时,我无法完全解决这种情况。

以下是解决这种情况的一些解决scheme,但它们都不是好的或可行的。


解决scheme1:

为每个客户使用不同的名称服务器对

创build多个不同的ns(如ns1,ns2 … ns49,ns50,ns51 ..)允许我使用不同的服务器对与不同的客户尝试添加相同的域。

真正的拥有者只能在域名注册商(即:ns8和ns9)中使用他们的对,所以只有他的logging才会被接受并传播到整个互联网。

解决scheme1的问题:

它很容易受到大规模的攻击

如果一个恶意的人创build了大量的帐户,那么如果所有这些帐户都尝试添加相同的域,则不可能有相同数量的帐户。


解决scheme2:

只允许一个用户帐户使用域

如果一个用户已经添加了一个特定的域,并在他的域名注册商中正确地configuration了它,那么没有其他账户将能够添加相同的域。

解决scheme2的问题:

恩典时间

validation一个添加的域可能需要几个小时(请纠正我,如果我错了)。 这需要我给出一个“宽限期”,以允许每个最近添加的域名保持“未validation”状态,直到我们可以通过相应的域名注册机构对其进行validation。

此外,在这个宽限期间,除非我们使用解决scheme1(但记得#1有漏洞),否则没有其他帐户能够添加相同的域。


免费(或付费)DSN服务如何解决这个问题? 他们的方法是什么(因为任何用户显然可以添加任何域名,而不受限制)?

编辑:关于重复

我的问题和时代的问题有一点点不同。 我是提供者而不是客户。 时代的问题只是从客户眼中指出问题。

另外,即使DigitalOcean的@Jacob也表示,他们采取了“先到先得”的方式,我试图避免这种做法,这也是我的问题存在的原因。

解决scheme1可以用于validation用户对域的控制。 在您的问题中,您似乎对自己施加了一些限制,可能是由于一些误解,或者是因为您希望在不validation用户对域的控制权的情况下工作。

  • 你不应该只使用两个DNS服务器。 两个是最低限度,但我会比那更高。 确切的DNS服务器数量是一个意见。 我觉得四是一个不错的select。 由于每个域使用的DNS服务器数量较多,您将有更多可能的组合。
  • NSlogging就像你已经观察到指向名字。 可能有多个这些名称指向相同的IP地址,这意味着您没有名字短缺。
  • 您的服务需要IPv4和IPv6。 对于IPv6,您也不缺lessIP地址。 让每个服务器监听足够的IPv6地址是完全可能的,您可以为每个用户使用唯一的IP地址。

上述三种观察中的任何一种都应该填补您提出的解决scheme1中的空白,以使其工作,假设您确认用户对域的控制。

如果你想要一个解决scheme,而无需用户首先validation他们对域的控制,我只能build议你依靠IPv6。

混合解决scheme可能为用户提供平稳的stream量。 我会devise如下:

  • 为每个DNS服务器分配一个/ 64地址空间。
  • 为每个用户分配一个64位接口标识符。
  • 将3个主机名分配给每个DNS服务器加上用户组合(一个v4-only,一个v6-only和一个双栈)。 主机名称可能看起来像kasperd-ns1-ds.example.com

用户可以创build他们喜欢的任何区域名称。 它将立即在该用户的IPv6地址上可用。

在IPv4地址(必须在用户之间共享)上提供特定区域将以先到先得的原则工作。 但是,任何后来的用户都可以通过将域的NSlogging指向您分配给该用户的任何主机名来validation对域的控制。 对域的authentication控制击败先来原则。