无法绑定到Google计算引擎VM实例的外部IP地址

时间:2020-07-25 17:14:46

标签: python google-cloud-platform google-compute-engine

我正在尝试使用python测试笔记本电脑和Google计算引擎实例之间的简单客户端服务器设置。该设置在两台笔记本电脑之间正常工作。但是,当我在VM实例中运行服务器程序时,在调用bind命令后出现以下错误:“ socket.error:[Errno 99]无法分配请求的地址”

我试图绑定到外部IP地址,以便可以从外部设备接收数据。

这是代码段

import socket

s = socket.socket()

port = 12345

s.bind(('xxx.xxx.xxx.xxx',port))

任何人都可以告诉我为什么我无法绑定到外部IP地址。我试图在Google的文档中以及通过在线搜索找到答案,但无济于事。我对此并不陌生,甚至都不知道要发布什么信息来帮助进行故障排除。预先感谢。

这是我的防火墙规则 Firewall rules

1 个答案:

答案 0 :(得分:0)

Google Cloud的网络在internal and external IP addresses之间有所区别。特别是,GCE VM实际上将没有与外部可见IP地址的接口-云基础架构将在实例外部处理转换。

您需要绑定到实例的内部IP地址,并且GCP的网络基础架构会为您处理路由,前提是您的VPC firewall configuration允许这种路由。

注意:按照规定,您当前的防火墙配置没有允许12345端口进入的规则,您需要添加并确保它applies to this particular instance(通过应用于实例或通过将规则应用于网络中所有目标的目标标记

您还可以考虑使用0.0.0.0(或INADDR_ANY),它在python中只是the empty string。因此,这也应该对您有用(再次,假设防火墙配置正确):

import socket

s = socket.socket()
port = 12345
s.bind(('',port))