Google-Cloud-Platform

為什麼我無法訪問 GCP 實例的元數據伺服器?

  • March 22, 2022

嘗試訪問元數據伺服器時出現錯誤Could not resolve host metadata.google.internalCould not resolve host metadata

雖然我使用自己的 VPC 和自定義防火牆,但我不認為這是防火牆的問題,因為根據 Google 元數據伺服器流量永遠不會離開實例。此外,在我的主機文件中有一個條目可以證明這一點:

# Google Compute Engine metadata server 169.254.169.254 metadata.google.internal metadata

我嘗試 ping 169.254.169.254,但它返回General Failure(但是,它什麼也沒證明……我不確定 Metadata Server 是否允許 ICMP)。

我的 Stackdriver 日誌記錄代理也因此失敗。這是其日誌中的一行:

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 網路中的內部流量僅限於icmptcp:22(ssh)。

發生了什麼以及如何解決此問題?

雖然我使用自己的 VPC 和自定義防火牆,但我不認為這是防火牆的問題,因為根據 Google 元數據伺服器流量永遠不會離開實例。

GCP 元數據流量永遠不會離開執行實例的物理主機。此類請求會從客人的介面發出,但永遠不會被轉發。

實例中的主機級防火牆可以阻止流量到達元數據伺服器。因為它在離開來賓之前將數據包丟棄在實例的網路堆棧中。

通常元數據服務會響應 http、DNS 和 ICMP 回顯,但它們都不適合您。只有一跳,所以不像它可以被錯誤地路由。當然聽起來像防火牆。

引用自:https://serverfault.com/questions/982517