我们的设置:
我们有一个主项目A
和两个其他项目B
和C
。在项目 中A
,我们有一个共享 VPC,其中包含网络A
、B
和C
(与它们要服务的项目相关)。 的 VPC在项目B
之间共享, 的 VPC在项目之间共享。这些网络彼此对等。A
B
C
A
C
在项目内A
,我们有一个私有 Cloud DNS 区域,该区域转发到两个 DNS 服务器。其中一个服务器位于项目A
和网络中A
,另一个位于B
网络上的项目中B
。我们已选择所有网络(A
、B
和C
)包含在此 DNS 区域中。
我们的问题:
Cloud DNS 似乎无法在这些网络之间正确共享。通过实验,我们发现实例将能够解析位于同一网络上的 DNS 服务器上的记录,但无法解析位于另一个网络上的记录。即:
网络上的实例A
将能够解析来自网络A
DNS 服务器的域,但不能解析来自网络B
DNS 服务器的域,反之亦然。但是,如果您明确定义 DNS 服务器,它将按预期工作。
例如,假设10.0.0.1
有 的 A 记录foo.com
,并且10.0.1.1
有 的 A 记录bar.com
。它们分别托管在 网络A
和 网络上B
:
在网络实例中A
:
- 跑步
nslookup foo.com
就能解决。 - 奔跑
nslookup bar.com
将会回归SERVFAIL
。 - 跑步
nslookup bar.com 10.0.1.1
就能解决。
类似地,使用网络上的实例B
- 跑步
nslookup bar.com
就能解决 - 跑步
nslookup foo.com
将会回归SERVFAIL
- 跑步
nslookup foo.com 10.0.0.1
就能解决
和网络C
:
- 跑步
nslookup foo.com
将会回归SERVFAIL
- 跑步
nslookup bar.com
将会回归SERVFAIL
- 跑步
nslookup foo.com 10.0.0.1
就能解决 - 跑步
nslookup bar.com 10.0.1.1
就能解决
我不确定为什么会出现这种行为。
已尝试/确认的内容
- 我们确保所有网络均可通过 TCP/UDP 端口 53 进行通信,并且所有网络都可以看到这两个名称服务器
- 我们尝试添加策略(结果类似,只返回失败
NXDOMAIN
而不是SERVFAIL
) - 我们已经研究过 DNS 对等,但这不适用于此处
任何帮助都将不胜感激。我知道 Cloud DNS 中的私有区域仍是 Beta 功能,但根据文档,此设置目前应该是可行的。
答案1
从您的描述来看,网络 A、B 和 C 似乎是相互对等的。有关对等区域表示,“当两个网络对等时,它们不会自动共享 DNS 信息”。这可以解释为什么 DNS 只能使用 Cloud DNS 转发将名称解析为同一 VPC 内的实例;另一方面,当 DNS 设置在对等 VPC 中时,必须直接请求 DNS 进行解析。
我可以看到没有文档可以同时使用对等区域和转发 DNS,因此您可能需要尝试在两个 DNS 服务器中添加域 foo.com 和 bar.com。
答案2
在同一页面上,还解释了有可用的 DNS Peering 测试版,通过该测试版,消费者网络可以将 DNS 请求转发到生产者网络。
如果我理解正确的话,那就意味着在生产者网络上设置 DNS A
,并让网络B
将C
其各自的查询转发到A
。
但是,如果B
和C
有不同的私有区域(这应该与实际情况相差不大)会怎么样?这是否意味着同时设置两者,A
以便在项目内唯一地管理各个 VPC 的记录A
。
我也想尝试一下,而且因为在此基础上我有一个带有本地 VPN(我们称之为D
),下一步是设置一个到本地 DNS 的条件转发器。
不确定是否B
能够C
通过项目解决D
疑问A
。