Google cloud platform 为什么GCP不允许在VM中使用外部公共IP

Google cloud platform 为什么GCP不允许在VM中使用外部公共IP,google-cloud-platform,static-ip-address,Google Cloud Platform,Static Ip Address,我一直在尝试在GCP的服务器上安装一些软件,并分配了一个公共静态IP。但是我没有通过ifconfig或ipaddr在VM中看到它。我知道要在虚拟机中显示IP,并且有一个从NAT到公共IP的1对1映射,但我不明白的是,为什么。虽然提问基本相同,但答案并不能清楚地回答为什么部分 我偶尔在我的windows PC上运行VM,有时我桥接适配器,以便VM在我的本地网络上获得IP,因此我知道这是可能的(除非我在这里遗漏了什么)。不过,IBMCloud似乎有这个功能 因此,我的问题是,这是不允许的,或尚未实施

我一直在尝试在GCP的服务器上安装一些软件,并分配了一个公共静态IP。但是我没有通过
ifconfig
ipaddr
在VM中看到它。我知道要在虚拟机中显示IP,并且有一个从NAT到公共IP的1对1映射,但我不明白的是,为什么。虽然提问基本相同,但答案并不能清楚地回答为什么部分

我偶尔在我的windows PC上运行VM,有时我桥接适配器,以便VM在我的本地网络上获得IP,因此我知道这是可能的(除非我在这里遗漏了什么)。不过,IBMCloud似乎有这个功能

因此,我的问题是,这是不允许的,或尚未实施的原因是什么?它解决或简化了哪些问题?为什么我不能用
ifconfig
IP addr
查看IP(我知道我不能,因为IP没有分配给接口,我的意思是说为什么没有接口)?作为一个初学者,我认为这个特性是人们所期望的,所以我想知道这背后的技术原因


谢谢

Google需要解析您创建的计算引擎实例的IP地址。正如@esqew所提到的,它使用NAT将公共IP地址转换为与您的实例相对应的Google内部私有地址

您的实例不在公共Internet上,也不能从公共Internet直接寻址。相反,公共IP地址将流量传输到谷歌前端,然后谷歌服务解析该地址。虽然IP地址可能会被绑定到实例上较长时间,但这些地址会被多次重用

其他机器,即使是您项目中的机器,也可能使用公共IP地址解析到您的实例,但此流量将路由到Google的解析程序,并通过网络发送回您的实例。使用实例的内部DNS或内部IP地址可能(!)更有效


在所有这些情况下,您的实例都不需要配置此IP地址。实例需要知道如何路由流量,连接到Internet的其他每台设备都需要能够到达您的实例,但仅此而已

您可以使用元数据服务确定实例的公共IP地址。从实例中:

元数据=”http://metadata.google.internal/computeMetadata/v1"
#接口0的外部IP访问配置0
curl——请求获取\
--标题“元数据风格:谷歌”\
${METADATA}/实例/网络接口/0/access配置/0/外部ip
#内部IP
curl——请求获取\
--标题“元数据风格:谷歌”\
${METADATA}/instance/networkinterfaces/0/ip

我绝对不是GCP方面的专家(更不用说它的内部),因为我的经验更多地依赖于Azure(它也做外部NATting),但我想至少部分原因是为了从实例本身之外减少基于池的IP分配的一些痛点。你能详细说明一下吗?IBM显然做到了(问题中有链接)。我对细节、问题、真正的痛点很感兴趣。我不知道,那是真的why@DazWilkin答案是好的。总之,不会将公共静态IP地址分配给您的VM。这就是为什么您无法在网络接口上看到它们。您可以从实例元数据中读取IP地址。公共IP地址分配给一个特殊的一对一NAT,该NAT管理公共IP到私有IP路由。谷歌定义:“如果网络接口有一个外部IP地址分配给它,谷歌云自动执行一对一NAT的数据包,其来源匹配接口的主要内部IP地址。”@JohnHanley“公共静态IP地址不分配给您的虚拟机”。我知道,我想知道为什么不呢?1/2):因为谷歌就是这样设计网络的。在GCP中,网络是在软件中完成的。公共IP地址必须分配给真正的硬件接口,然后路由到最终目的地(您的VM)。对于IBM来说,您谈论的是他们云的“遗留”版本。IBM legacy cloud可以为虚拟机分配公共IP地址,因为在这两者之间有一个最小的软件层虚拟化网络。IBM的云还提供了一个真正的虚拟化VPC网络。我知道你答案的前两段。我理解使用单个IP的好处,但我想知道为什么我不能通过GCP将IP放在接口上。我知道这是他们做出的积极决定,我想知道是否有任何潜在的原因。有些服务要求服务器具有公共IP,但这也不是重点。我想知道为什么。为什么在所有主要的云平台上都没有这个功能呢?“在所有这些情况下,你的实例都不需要配置这个IP地址”,没错,这并不是真的需要做什么,我正试图这样做,但意识到没有办法。我想知道为什么我基本上不被允许这么做。