【问题标题】:Cannot access Google Cloud Compute Instance External IP无法访问谷歌云计算实例外部 IP
【发布时间】:2022-02-15 17:23:21
【问题描述】:

我已经设置了一个谷歌云计算实例:

  • 机器类型
    • n1-standard-1(1 个 vCPU,3.75 GB 内存)
  • CPU平台
    • 英特尔 Haswell
  • 区域
    • us-east1-c

我可以使用外部地址 ssh。

我已经安装了vncserver,可以从本地主机的5901端口以及内部IP访问它。

我正在尝试从静态的外部 IP 地址访问它,但它不起作用。

我已将防火墙配置为向0.0.0.0/0的端口开放,但无法访问。

谁能帮忙?

--------在从两个答案的提示中进一步调查后(谢谢,两个!),我有一个部分答案:

Google Cloud Compute 实例默认设置为不允许 HTTP 流量。我重置了配置以允许 HTTP 流量。我 然后尝试了故障排除技巧以在其中运行一个小型 HTTP 服务 Python。我能够通过服务从服务中获得响应 互联网。

目前情况总结如下:

  • 可以访问外部IP地址
  • 它已启用并适用于 SSH
  • 它已启用并适用于 HTTP
  • 似乎不允许来自vncserver 的流量

知道如何配置计算实例以允许vncserver 流量吗?

【问题讨论】:

  • 忘了说,我可以从 Google Cloud 网络之外的计算机上 ping 外部 IP
  • 你能把你的防火墙设置粘贴到这里吗?另外,尝试使用“python -m SimpleHTTPServer 80”启动一个简单的 HTTP 服务器,尝试从 Internet 访问它。
  • Google Cloude 网络控制台的防火墙规则是: > default-allow-icmp 0.0.0.0/0 icmp Apply to all targets default > default-allow-internal 10.128.0.0/9 tcp: 0-65535,还有 2 个 应用到所有目标 默认 --default-allow-rdp 0.0.0.0/0 tcp:3389 应用到所有目标 默认 --default-allow-ssh 0.0.0.0/0 tcp:22 应用到所有目标默认 --vnc-server 0.0.0.0/0 tcp:5901 vnc-server 默认
  • 我使用“python -m SimpleHTTPServer 80”启动了一个简单的 HTTP 服务器。无法从互联网访问。
  • // ,这听起来可能很挑剔,但您愿意将其重新表述为一个问题吗?它真的可以帮助可能第一次来 Stack Overflow 的菜鸟。

标签: google-compute-engine


【解决方案1】:

如果您已经验证了Google Firewall 或您的VM 没有阻塞数据包,您必须确保VNC 服务is configured 能够监听external IP address

您始终可以在 Google 项目之外使用像 nmap 这样的实用程序来显示有关端口状态的信息。

【讨论】:

  • 我运行了 netstat -antup....并看到以下内容:. . Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称 tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 2634/Xtightvnc tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 2634/Xtightvnc . .
  • 5902?防火墙对 5901 开放了吗?
  • 我在发布评论之前了解到,vncserver 根据分配的显示更改端口。据我了解,它的范围为 5900 - 5909。我已经相应地更新了防火墙。
  • // ,这是我们实例的问题。感谢您的提示,@Carlos。
【解决方案2】:

根据需要启用来自防火墙的 http/https 流量。它会工作的!

【讨论】:

    【解决方案3】:

    Google Cloud Compute 实例默认设置为不允许 HTTP 流量。我重置了配置以允许 HTTP 流量。然后,我尝试了故障排除技巧以在 python 中运行一个小型 HTTP 服务。我能够通过互联网从该服务获得响应。

    因此,原来的问题得到了回答,我可以访问谷歌云计算实例外部 IP。我的更广泛的问题仍未解决,但我将发布一个关于此问题的新的、更具体的问题

    【讨论】:

      【解决方案4】:

      在您的本地 ssh 配置文件中创建一个条目,如下所示,并使用提到的本地转发端口。在我的例子中,它是一个 yarn 的 IP 示例,我想在浏览器中访问它。

      Host hadoop
           HostName <External-IP>
           User <Local-machine-username>
           IdentityFile ~/.ssh/<private-key-for-above-user>
           LocalForward 8089 <Internal-IP>:8088
      

      【讨论】:

        【解决方案5】:

        除了在 Google Cloud Platform 和实例的操作系统中对 allow HTTP traffic 设置防火墙规则外,确保安装网络服务器,例如 Apache 或 Nginx。

        安装 Web 服务器后,您使用 SSH 连接到实例并使用以下命令验证您没有连接失败:

        $ sudo wget http://localhost
        

        如果连接是肯定的,则意味着您可以访问您的外部 URL:

        http://<IP-EXTERNAL-VM>
        

        【讨论】:

        • 我收到以下错误:连接到 localhost|127.0.0.1|:80... 失败:连接被拒绝 我正在使用容器优化操作系统。你能提出什么问题吗?
        • 你必须确保你试图访问的端口是打开的,否则你应该打开它:stackoverflow.com/a/51437065/5279996。无论您要显示什么(操作系统、应用服务器等),这都是一个非常常见的错误,因此,将其视为一般问题,而不是特定于 Container-optimized-OS 的问题。
        【解决方案6】:

        TLDR:确保您请求的是 http 而不是 https

        在我的情况下,我正在关注我的 CE 实例的 External Ip 属性中的链接,该属性将您直接带到 https 版本,并且我没有设置 https,所以这导致了“找不到站点”错误。

        【讨论】:

          【解决方案7】:

          通常有两件主要的事情需要检查。

          1. Port
          

          默认情况下,只公开port 80, 443 and ICMP。如果您的服务器在不同的端口上运行,请为相同的端口创建记录。

          2. Firewall
          

          确保根据需要允许 http 和 https 流量。 哇

          【讨论】:

            【解决方案8】:

            对我来说,问题是我将防火墙规则的流量设置为“出口”而不是“入口”。

            【讨论】:

              【解决方案9】:

              如果有人已经启动了“https” 只需禁用它并再次检查。

              【讨论】:

              • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-05-05
              • 1970-01-01
              • 1970-01-01
              • 2019-05-27
              • 1970-01-01
              • 2019-03-11
              • 2017-12-30
              相关资源
              最近更新 更多