无法绑定到 google 计算引擎 VM 实例的外部 IP 地址
Cannot bind to external IP address of google compute engine VM instance
我正在尝试使用 python 在我的笔记本电脑和我的 google 计算引擎实例之间测试一个简单的客户端-服务器设置。该设置在 2 台笔记本电脑之间运行良好。但是当我 运行 我的 VM 实例中的服务器程序调用绑定命令后出现以下错误:“socket.error: [Errno 99] 无法分配请求的地址”
我正在尝试绑定到外部 IP 地址,以便我可以从外部设备接收数据。
这是代码片段
import socket
s = socket.socket()
port = 12345
s.bind(('xxx.xxx.xxx.xxx',port))
谁能告诉我为什么我不能绑定到外部IP地址。我试图在 Google 的文档和在线搜索中找到答案,但无济于事。我对此很陌生,甚至不知道 post 的哪些信息有助于故障排除。提前致谢。
这是我的防火墙规则
Google云的网络有区别internal and external IP addresses。特别是,GCE VM 实际上不会有与外部可见 IP 地址的接口——云基础设施在实例外部处理转换。
您需要为您的实例绑定到内部 IP 地址,GCP 的网络基础设施将为您处理路由,前提是您的 VPC firewall configuration.
允许此类路由
注意:如前所述,您当前的防火墙配置没有允许进入 12345 端口的规则,您需要添加此规则并确保它 applies to this particular instance(通过应用于实例的目标标签,或通过将规则应用于网络中的所有目标)
您也可以考虑使用 0.0.0.0 (or INADDR_ANY
) which in python is just the empty string。所以这也适用于您(同样,假设防火墙配置正确):
import socket
s = socket.socket()
port = 12345
s.bind(('',port))
我正在尝试使用 python 在我的笔记本电脑和我的 google 计算引擎实例之间测试一个简单的客户端-服务器设置。该设置在 2 台笔记本电脑之间运行良好。但是当我 运行 我的 VM 实例中的服务器程序调用绑定命令后出现以下错误:“socket.error: [Errno 99] 无法分配请求的地址”
我正在尝试绑定到外部 IP 地址,以便我可以从外部设备接收数据。
这是代码片段
import socket
s = socket.socket()
port = 12345
s.bind(('xxx.xxx.xxx.xxx',port))
谁能告诉我为什么我不能绑定到外部IP地址。我试图在 Google 的文档和在线搜索中找到答案,但无济于事。我对此很陌生,甚至不知道 post 的哪些信息有助于故障排除。提前致谢。
这是我的防火墙规则
Google云的网络有区别internal and external IP addresses。特别是,GCE VM 实际上不会有与外部可见 IP 地址的接口——云基础设施在实例外部处理转换。
您需要为您的实例绑定到内部 IP 地址,GCP 的网络基础设施将为您处理路由,前提是您的 VPC firewall configuration.
允许此类路由注意:如前所述,您当前的防火墙配置没有允许进入 12345 端口的规则,您需要添加此规则并确保它 applies to this particular instance(通过应用于实例的目标标签,或通过将规则应用于网络中的所有目标)
您也可以考虑使用 0.0.0.0 (or INADDR_ANY
) which in python is just the empty string。所以这也适用于您(同样,假设防火墙配置正确):
import socket
s = socket.socket()
port = 12345
s.bind(('',port))