是什么阻止我将“google.ca”的 A 名称条目设置为我想要的任何 IP 地址?

是什么阻止我将“google.ca”的 A 名称条目设置为我想要的任何 IP 地址?

当我将我的 GoDaddy 域名指向运行我的 Web 服务器的 GCP VM 的 IP 地址时,我所要做的就是:

  1. 将 GoDaddy 域名服务器更改为 GCP 域名服务器
  2. 在 GCP DNS 中为我​​的域创建指向我的 IP 地址的 A/CNAME/SOA 条目

是什么阻止我对世界上的任何域名做同样的事情?

事实上,我确实这样做了:

截屏

我为 google.ca 创建了一个 CNAME、A、SOA 条目,指向我的虚拟机外部公共 IP 地址,但没有什么能阻止我。现在我不希望所有 Google 的流量都开始指向我想要的任何地方(那将是一个有趣的 DDOS),但这里发生了什么?我遗漏了什么?

我的意图并无不道德之处。我只是想了解这一切是如何运作的。

答案1

没有什么可以阻止你。但是,也没有人会看一看。这是因为真正的域名没有指向你的名称服务器(GCP DNS)。只能通过直接向你的名称服务器索取这些记录才能获得它们。

DNS 查询从根目录开始:

$ dig google.ca +trace

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> google.ca +trace
;; global options: +cmd
.                       68215   IN      NS      h.root-servers.net.
.                       68215   IN      NS      k.root-servers.net.
.                       68215   IN      NS      i.root-servers.net.
.                       68215   IN      NS      g.root-servers.net.
.                       68215   IN      NS      a.root-servers.net.
.                       68215   IN      NS      b.root-servers.net.
.                       68215   IN      NS      d.root-servers.net.
.                       68215   IN      NS      f.root-servers.net.
.                       68215   IN      NS      l.root-servers.net.
.                       68215   IN      NS      e.root-servers.net.
.                       68215   IN      NS      j.root-servers.net.
.                       68215   IN      NS      m.root-servers.net.
.                       68215   IN      NS      c.root-servers.net.
;; Received 553 bytes from 192.168.2.5#53(192.168.2.5) in 31 ms

ca.                     172800  IN      NS      c.ca-servers.ca.
ca.                     172800  IN      NS      x.ca-servers.ca.
ca.                     172800  IN      NS      any.ca-servers.ca.
ca.                     172800  IN      NS      j.ca-servers.ca.
;; Received 626 bytes from 202.12.27.33#53(m.root-servers.net) in 24 ms

google.ca.              86400   IN      NS      ns1.google.com.
google.ca.              86400   IN      NS      ns2.google.com.
google.ca.              86400   IN      NS      ns3.google.com.
google.ca.              86400   IN      NS      ns4.google.com.
;; Received 603 bytes from 199.253.250.68#53(x.ca-servers.ca) in 42 ms

google.ca.              300     IN      A       172.217.16.163
;; Received 54 bytes from 216.239.32.10#53(ns1.google.com) in 22 ms

(为了简洁起见,我删除了 DNSSEC 内容。)

当然,通常您不会亲自执行迭代查询。递归 DNS 服务器会为您执行此操作,而且速度要快得多。

答案2

假设现在是 1980 年,电话簿仍然很流行。有什么能阻止你去电话簿中 Kmart 的条目,用你商店的电话号码替换他们的电话号码呢?绝对没有。你可以自由地这样做,如果你使用那本电话簿,每次你试图打电话给 Kmart,你都会接到你自己的商店的电话。你可以随心所欲地重新标记电话号码。

问题是,其他人都有自己的电话簿,他们不会看你的。除非你能闯入电话公司并更改 Kmart 的电话号码那里这样,他们发出的电话簿上就会有您公司的电话号码,您就不会拒绝与 Kmart 做任何生意。

同样,如果您觉得输入 incrediblelongdomainnamethattakesaridiculouslylongtimetotime.com 很累,而且不想依赖自动完成功能,您可以自由设置一个服务器,将 short.com 解析为 incrediblelongdomainnamethattakesaridiculouslylongtimetotime.com 的 IP 地址,并让您的计算机使用该服务器来解析域名。但除非您可以让其他人的计算机也使用该服务器,否则您无法影响他们在地址栏中输入 short.com 时发生的情况。

答案3

所以我的问题是,是什么阻止我对世界上任何域名做同样的事情?事实上,我做到了。

困难的部分是获取这些数据,包括NS安装在名称服务器上的名称服务器的记录.ca。他们可能不会让您这样做,第三方将通过从根向下查询名称服务器来解析域名,因此(全局)根首先,它将地址提供给名称.ca服务器,名称服务器将地址提供给.google.ca名称服务器。

当然,如果您将这些记录安装在组织的名称服务器中,那么组织内的任何人都会看到您设置的数据。(好吧,假设他们使用组织的名称服务器,而不是直接使用 8.8.8.8 之类的服务器。)但是,当有人尝试在那里打开 HTTPS 连接时,他们会收到错误,因为组织外部没有 CA 会为该域签署您的密钥。(当然,可以通过在组织内设置自己的 CA 来规避这种情况,但这是另一回事。)

答案4

尝试通过https://howdns.works 它以非常有趣和易于理解的方式介绍了迭代和递归 DNS 及其工作原理。Daniel 的回答几乎涵盖了所有需要的内容。

相关内容