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

时间:2016-10-02 14:25:35

标签: c# google-compute-engine firewall .net-core

我试图在Google Compute Engine上托管TCP套接字服务器,我在GCE防火墙规则上添加了以下规则(套接字端口0.0.0.0/0 tcp:11000适用于所有目标)但是使用公共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 default 0.0.0.0/0 icmp

default-allow-internal默认值10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp

default-allow-rdp默认值0.0.0.0/0 tcp:3389

default-allow-ssh默认值0.0.0.0/0 tcp:22

sockets-port default 0.0.0.0/0 tcp:11000

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

  

无法分配请求的地址      在System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot,SocketAddress socketAddress)      在System.Net.Sockets.Socket.Bind(EndPoint localEP)

" IPEndpoint由机器的公共IP和端口11000

组成

1 个答案:

答案 0 :(得分:1)

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

外部IP是虚拟IP。基础架构知道如何将针对IP的流量定向到您的VM,但它不受任何VM的网络接口的约束。如果在VM中运行execution(* mypackage.PersonaServiceImpl.*(..)),则只能在eth0上看到内部IP。