VPC Private Google API 使用代理访问 mqtt.googleapis.com (Cloud IOT)

VPC Private Google API access for mqtt.googleapis.com (Cloud IOT) using a proxy

我已启用 Private Google API access for a VPC and I use this HTTP proxy solution 描述将我的异地数据中心连接到 Google 云后端。

使用该解决方案,我已经验证了 Google 对象存储 api 的工作,方法是使用 gsutil 在异地网络中移动文件。

但是我无法连接到云 IOT 所需的 mqtt.googleapis.com。

我认为这是因为 mqtt.googleapis.com 的 MQTT 代理 运行 无法通过专用网络访问,除非它也像上述 HTTP 代理解决方案一样被代理。

同时,实际的 gsutil IOT 命令工作正常,因为我认为它们是 运行 通过 Google HTTP API。

要解决这个问题,我知道我们需要以下任何一项,除非有人有不同的方法来做到这一点?

  1. 运行 私有 VPC 中的 MQTT 代理代理,并将 MQTT 数据包路由到 mqtt.googleapis.com。在这种情况下,我们可以使用合适的 MQTT 代理吗?

  2. 如果我们得到 mqtt 网桥 (mqtt.googleapis.com) 运行 的 public IP 范围,那么我们可以简单地为此构建网络路由一个用例。这个有货吗?

它可以通过 IoT Core 中的 HTTP 协议桥工作吗?使用 HTTP 而不是 MQTT 是一种选择吗?

我设法使用 NGINX 作为反向代理并将 TCP 流量直接流式传输到 mqtt.googleapis.com。以下是实现此目的的步骤

  1. 使用 --with-stream 配置标志安装 Nginx。这构建了具有 TCP 流代理功能的 Nginx
  2. 我的 Nginx conf 文件包含指向 Google 代理的以下内容。 Nginx服务器在VPC
  3. 中的一个实例中运行

/etc/nginx/nginx.conf

 stream {
    upstream google_mqtt {
            server mqtt.googleapis.com:8883;
    }
    server {
            listen 8883;
            proxy_pass google_mqtt;
    }
}
  1. 内部私有 VPC 有一个解析 mqtt.googleapis.com 到 Nginx 服务器 IP 的 DNS 服务器