я получаю Could not resolve host metadata.google.internal
или Could not resolve host metadata
ошибка при попытке доступа к серверу метаданных.
Хотя я использую свой собственный VPC с настраиваемым брандмауэром, я не думаю, что это проблема брандмауэра, потому что, согласно серверу метаданных Google, трафик никогда не покидает экземпляр. Кроме того, в моем хост-файле есть запись, подтверждающая это:
# Google Compute Engine metadata server
169.254.169.254 metadata.google.internal metadata
Я пробовал пинговать 169.254.169.254, но он возвращает General Failure
(но это ничего не доказывает .. Я не уверен, поддерживает ли сервер метаданных ICMP).
Мои агенты Stackdriver Logging также не работают из-за этого. Вот строчка из его журнала:
Failed to access metadata service: error_class=Errno::ENETUNREACH error="Failed to open TCP connection to 169.254.169.254:80 (A socket operation was attempted to an unreachable network. - connect(2) for \"169.254.169.254\" port 80)"
В случае, если это имеет значение, внутренний трафик в моей сети VPC ограничен до icmp
и tcp:22
Только (ssh).
Что происходит и как решить эту проблему?
Хотя я использую свой собственный VPC с настраиваемым брандмауэром, я не думаю, что это проблема брандмауэра, потому что, согласно серверу метаданных Google, трафик никогда не покидает экземпляр.
Трафик метаданных GCP никогда не покидает физический хост запуск экземпляра. Такие запросы выходят из гостевых интерфейсов, но никогда не перенаправляются.
Брандмауэр уровня хоста в экземпляре может предотвратить попадание трафика на сервер метаданных. Поскольку он сбрасывает пакеты в сетевой стек экземпляра, прежде чем они покинут гостя.
Обычно служба метаданных отвечает на эхо-запросы http, DNS и ICMP, и все они не работают для вас. Только один прыжок, поэтому он может быть неправильно маршрутизирован. Конечно, похоже на брандмауэр.
Чтобы решить эту проблему, вы можете попробовать добавить вручную внутренний DNS, вы можете сделать это, отредактировав файл resolv.conf, который вы найдете по пути: /etc/resolv.conf
Строка должна выглядеть так: nameserver 169.254.169.254,
Для получения дополнительной информации проверьте это документация
Я вижу из вашего сообщения, что вы уже добавили хост:
169.254.169.254 metadata.google.internal metadata
Кроме того, я предлагаю вам убедиться, что вы установили гостевую среду, вы можете узнать больше об этом и о том, как это сделать в этой документация.
Это может быть вызвано отключением учетной записи службы для экземпляра. Вам нужна авторизация для доступа к метаданным.
В Google Cloud Console:
Я рекомендую либо «Разрешить доступ по умолчанию», либо «Разрешить полный доступ ко всем облачным API». Реальный контроль доступа определяется ролями, назначенными учетной записи службы. Выбор «Области доступа» может только ограничивать эти роли и никогда не увеличивать их.
Затем избавьтесь от настраиваемой записи для метаданных в файле hosts.