Я включил Частный доступ к Google API для VPC и использую описанный HTTP-прокси для подключения моего внешнего центра обработки данных к бэкэнду Google Cloud.
Используя это решение, я убедился, что API хранилища объектов Google работает, используя gsutil для перемещения файлов по внешней сети.
Однако я не могу подключиться к mqtt.googleapis.com, который требуется для облачного IOT.
Я думаю, это связано с тем, что к брокеру MQTT, работающему на mqtt.googleapis.com, нельзя получить доступ через частную сеть, если он также не проксируется, как решение HTTP-прокси, описанное выше.
Между тем фактические команды gsutil IOT работают нормально, потому что я предполагаю, что они выполняются через Google HTTP API.
Я вижу, чтобы решить эту проблему, нам понадобится что-то из приведенного ниже, если у кого-то есть другой способ сделать это?
Запустите прокси-сервер брокера MQTT в частном VPC и направьте пакеты MQTT на mqtt.googleapis.com. Есть ли подходящий прокси-брокер MQTT, который мы можем использовать в этом случае?
Если мы получим диапазон общедоступных IP-адресов, на которых работает мост mqtt (mqtt.googleapis.com), мы можем просто построить сетевые маршруты для этого одного варианта использования. Это доступно?

Будет ли он работать через мост протокола HTTP в IoT Core? Можно ли использовать HTTP вместо MQTT?
Нет, так как мы хотели бы Device Heartbeats. Имеет ли смысл создавать брокера MQTT в экземпляре виртуальной машины, который настроен как мост к брокеру на mqtt.googleapis.com, для прокси-соединения mqtt?
Есть ли этому решение?
Ничего из коробки. Прокси-сервер вполне может быть подходящим вариантом. У меня нет опыта работы с частным доступом к API, поэтому я не уверен. Я не знаю простого решения «Просто сделай это». :( Мне жаль!
Мне удалось заставить это работать, используя NGINX в качестве обратного прокси-сервера и передавать TCP-трафик напрямую на mqtt.googleapis.com. Вот шаги для достижения этого
--with-stream. Это создает Nginx с функциями прокси-сервера потоковой передачи TCP./etc/nginx/nginx.conf
stream {
upstream google_mqtt {
server mqtt.googleapis.com:8883;
}
server {
listen 8883;
proxy_pass google_mqtt;
}
}
mqtt.googleapis.com в IP-адрес сервера Nginx.
Возникают ли ошибки при попытке доступа к mqtt.googleapis.com или просто истекло время ожидания? Что можно попробовать: «пинговать mqtt.googleapis.com» и traceroute «mqtt.googleapis.com». Кроме того, согласно этот документ, приложению может потребоваться добавить правила брандмауэра в вашем помещении и в сети Google. Я не смог найти никакой документации, указывающей, возможен ли доступ через Private Google Access.