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。
我正在尝试在 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。