【问题标题】:Does Google Cloud provide public hostnames for their Compute instances?Google Cloud 是否为其计算实例提供公共主机名?
【发布时间】:2018-12-04 23:53:07
【问题描述】:

Google Cloud 是否为其计算实例提供公共主机名?

AWS 似乎为他们的 EC2 实例generate public hostnames

对于 us-east-1 区域和 ec2-public-ipv4-address.region.compute,公共(外部)DNS 主机名采用 ec2-public-ipv4-address.compute-1.amazonaws.com 的形式。 amazonaws.com 适用于其他地区。我们将公共 DNS 主机名解析为实例网络之外的实例的公共 IPv4 地址...

类似的问题:
This 似乎是一个类似的问题,但 (1) 设置 DNS 似乎有点矫枉过正,(2) 似乎我需要做一些事情无论如何,Google Cloud 之外的东西,或者它不公开(不确定),并且 (3) 它可能已经过时(2014 年)。

【问题讨论】:

标签: amazon-web-services amazon-ec2 dns google-cloud-platform google-compute-engine


【解决方案1】:

不,GCE 不提供实例的主机名。它确实为每个实例分配外部 IP 地址。将 DNS 记录与您的实例相关联是生成主机名的唯一方法。

GCE 确实在同一网络中内置了私有主机名。例如,同一 VPC 中的两个实例可以通过名称相互 ping 通

Instance 'test-instance': start server on :8080
Instance 'second-instance': curl test-instance:8080
// Response 'Hello World'

【讨论】:

  • 谢谢,但我只对公共主机名感兴趣。对于与 DNS 记录的这种关联,我是否可以轻松地免费(或完全通过 Google Cloud 而无需域名)?
  • 您必须拥有一个域,或者您可以使用 GCP DNS 创建一个内部区域。
  • 谢谢。所以,我想这意味着我不能:(
  • 我建议您提交Feature Request。 Google 将根据其可行性或提出要求的客户数量来考虑需求,但我无法保证实施或为您提供 ETA。请放心,Google 会努力改进其产品,您的反馈有助于我们做到这一点。
【解决方案2】:

没有。来源:FridayPush's answer(谢谢!从他的个人资料来看,谷歌云的东西似乎值得信任:-))。

我写一个单独的答案的原因是为了明确你不能完全通过谷歌云拥有一个公共主机名。您可以完全通过 Google Cloud 拥有一个内部主机名,或者您需要在 Google Cloud 之外做一些事情(例如,拥有一个域名)才能拥有一个公共主机名。

【讨论】:

    【解决方案3】:

    GCE 实例目前没有用于其外部 IP 地址的公共 DNS 名称。但是现在有一个 gcloud compute config-ssh (docs) 命令是一个很好的替代品。

    这会将Host 块插入到您的~/.ssh/config 文件中,其中包含主机密钥的IP 地址和配置。

    虽然这仅对 SSH(以及基于 SSH 的应用程序,如 Mosh 和 git+ssh)有帮助,但它确实比 DNS 有一些优势:

    • 没有像 DNS 那样的缓存/传播延迟

    • 它预填充正确的主机密钥,即使临时 IP 地址发生变化,也会以正确的方式检查主机密钥。

    例子:

    $ gcloud compute config-ssh
    ...
    $ ssh myhost.us-west1-b.surly-koala-232
    

    【讨论】:

      【解决方案4】:

      如果您的 GCP 实例具有外部 IP(临时或静态),则该 IP 地址具有公共 DNS 条目,您可以通过反向 DNS 查找轻松获得该条目。

      例子:

      # get your external IP
      $ curl icanhazip.com 
      34.88.81.150
      
      # do a reverse DNS lookup
      $ dig +short -x 34.88.81.150
      150.81.88.34.bc.googleusercontent.com.
      

      获取该公共 DNS 条目的单线:

      # (sed removes the trailing dot)
      $ dig +short -x $(curl -s icanhazip.com) | sed "s/.$//"
      150.81.88.34.bc.googleusercontent.com
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多