GCE 允许特定端口上的传入流量

GCE allow incoming traffic on specific ports

我正在尝试在 Google 计算引擎上托管 TCP 套接字服务器,我在 GCE 防火墙规则上添加了以下规则(套接字端口 0.0.0.0/0 tcp:11000 应用所有目标)但仍然无法使用 public IP 从外部访问该端口(在我的情况下是短暂的)。

在这种情况下是否还有更多工作要做?我应该在 VM 本身上使用 ufw 来设置额外的规则吗?

如有任何帮助或提示,我们将不胜感激。

编辑: 1) 防火墙设置:

名称网络 SRC_RANGES 规则 SRC_TAGS TARGET_TAGS

default-allow-http 默认 0.0.0.0/0 tcp:80 http-server

default-allow-https 默认 0.0.0.0/0 tcp:443 https-server

default-allow-icmp 默认 0.0.0.0/0 icmp

默认允许内部默认 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp

默认允许 rdp 默认 0.0.0.0/0 tcp:3389

默认允许 ssh 默认 0.0.0.0/0 tcp:22

套接字端口默认 0.0.0.0/0 tcp:11000

2) 在 VM 本身上,SocketListener class (C#) 给出错误:

Cannot assign requested address at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP)

"IPEndpoint 由机器的public IP和端口11000组成

这是 GCE 的经典问题,您必须将服务器套接字绑定到 0.0.0.0,而不是外部 IP。我不知道这是不是设计使然。

外部IP为虚拟IP。基础架构知道如何将以 IP 为目标的流量定向到您的 VM,但它未绑定到 VM 的任何网络接口。如果你在VM中运行 sudo ifconfig,你只会看到eth0上的内部IP。