私有 DNS 区域中的 GCE 自定义主机名反向查找

GCE custom hostname reverse lookup in private DNS zones

我想在 Google Cloud Engine 中创建一个具有自定义(私有)主机名的实例。出于这个原因,在从控制台(或从 SDK)创建实例时,我提供了主机名,例如 instance0.custom.hostname.

创建实例并在 /etc/resolv.conf 中正确设置搜索域 对于 Ubuntu 特别是我必须使用 hostnamectl 设置主机名,但这与问题无关。

instance0.custom.hostname 的正向 DNS 查找工作正常。当我对实例的私有IP地址进行反向查找时,问题就来了。在那种情况下,我得到的答案是 GCE“长”名称而不是我的自定义主机名。

如何使用我的自定义名称而不是 GCE 进行反向查找回复?

我知道在 Azure 中,您可以使用具有 VM 自动注册功能的专用 DNS 区域来处理“自定义主机名”。我尝试使用带有 Google Cloud DNS(PTR 记录)的私有区域,但没有成功。

经过一番认真的挖掘,我找到了解决方案并进行了测试。

即使您的 custom.hostname 域没有“常规”DNS 记录,反向 DNS 也能正常工作。

为了使反向 dns 正常工作,让我们假设您的 VM 在 10.128.0.0/24 网络中。 在我的示例中,他们的 IP 是 24、27、54、55。

我创建了一个 private dns zone 并将其命名为“my-reverse-dns-zone” - 该名称仅供参考,可以是任何名称。

但是“DNS 名称”字段非常重要。由于我的网络地址以 10 开头,我希望在该网段中创建的所有实例都受到反向 dns 的影响。所以在这种情况下,DNS 名称必须是 10.in-addr.arpa。如果您使用 192.168....172.16.... 然后相应地调整一切。

如果您只想要 10.128.0,那么您可以输入 0.128.10.in-addr.arpa。然后你 select VPC 网络区域必须可见,瞧:

然后你添加 PTR 记录,这将允许它工作。我将所有 TTL 设置为 1 分钟以缩短等待时间:)

接受后稍等(字面意思)并测试它:

dig -x 10.128.0.24

; <<>> DiG 9.11.5-P4-5.1+deb10u6-Debian <<>> -x 10.128.0.24
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35229
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;24.0.128.10.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
24.0.128.10.in-addr.arpa. 60    IN      PTR     instance0.custom.hostname.

;; Query time: 6 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Jan 31 13:35:57 UTC 2022
;; MSG SIZE  rcvd: 92

完成!

您甚至可以为其中一个 IP 放置一些完全不同的域。看看我的区域配置:

dig -x 10.128.0.55 | grep PTR
;55.0.128.10.in-addr.arpa.      IN      PTR
55.0.128.10.in-addr.arpa. 60    IN      PTR     b2.example.com.

有个similar question & answer here.

要更好地(技术)了解其工作原理,请查看 PTR records in private zones documenation and about PTR records and how they work in the internal GCP's DNS