我有两个 VPC 网络:
- A
- 乙
它们通过 VPC 网络对等互连。网络 A 中的机器可以通过 IP 顺利访问网络 B 中的机器。
但是,它们无法通过其内部 DNS 名称 (machinea.c.gc-project.internal) 相互访问
根据谷歌云文档,这是不可能做到这一点的,指出:
对等网络无法访问在网络中创建的 Compute Engine 内部 DNS 名称。应使用虚拟机的 IP 地址来访问对等网络中的虚拟机实例。
我该如何解决这个问题,以便他们实际上能够使用 DNS 名称?
现在我只是将 IP 放在彼此的主机文件中,但应该有更好的方法,对吗?
答案1
在某种程度上,您已经回答了自己的问题。您说得对,根据您引用的文档,目前内部 DNS 方案在 GCP 上的 VPC 对等互连中不可用。
您有三个选择。
像以前一样使用 hosts 文件。设置起来很简单,但随着环境的增长,维护起来可能会很复杂,不过您可以寻求配置管理工具(例如 Ansible)的帮助来自动分发和维护更新。
您可以在 Google Cloud DNS 上部署新的 DNS 区域。有关该服务的更多详细信息,请访问:Cloud DNS 概览 虽然此服务目前仅适用于公共区域,因此您需要注册一个域名或使用已拥有的域名。作为公共区域,名称可以在互联网上解析,这可能是理想的,也可能不是理想的。您也可以使用外部公共 DNS 提供商。
部署您自己的 DNS 服务器。您可以在虚拟机上设置 BIND 或类似程序以充当 DNS 服务器。您需要更新虚拟机上的 DNS 设置才能使用这些新服务器,我建议至少部署两个服务器,例如在每个 VPC 中部署一个,以提高弹性。主要优点是区域可以是私有的,因此您不需要购买域名或在互联网上公开记录。当然,您需要维护 DNS 服务器,这可能是或可能不是理想的。您也可以运行远程私有 DNS 服务器,例如通过 VPN,但我本身并不建议这样做,因为这样您会对 VPN 连接产生硬依赖。
值得补充的是,AWS 和 Azure 都支持私有区域作为其自身 DNS 服务的一部分,因此谷歌将来增加对类似服务的支持也并非不可想象。
希望有所帮助。