2016-10-02 60 views
2

我正嘗試在Google Compute Engine上承載TCP套接字服務器,我在GCE防火牆規則(套接字端口0.0.0.0/0 tcp:11000)上添加了以下規則應用於所有的目標),但港口仍然無法從外部使用公共知識產權(我的情況是短暫的)。GCE允許特定端口上的傳入流量

在這種情況下還有更多工作要做嗎?我應該使用虛擬機上的ufw來設置其他規則嗎?

任何幫助或提示將不勝感激,thx。

編輯: 1)防火牆設置:

NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS

默認允許-HTTP默認0.0.0.0/0 TCP:80的HTTP服務器

默認允許-https default 0.0.0.0/0 tcp:443 https-server

default-allow-icmp default 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類(C#)給出了錯誤:

無法分配請求在System.Net.Sockets.Socket.DoBind(端點endPointSnapshot,爲SocketAddress的SocketAddress) 解決 在System.Net.Sockets.Socket.Bind(端點localEP)

「IPEndpoint由機器的公網IP的和端口11000

+0

1)將您的防火牆設置粘貼在這裏; 2)你得到什麼錯誤代碼? 3)嘗試通過內部IP從同一網絡中的另一臺虛擬機訪問它,以確保服務已啓動。 – Dagang

+0

@Dagang編輯我的問題,但目前我不能從另一個VM訪問。 – Salem

回答

1

這是GCE的一個經典問題,您必須將您的服務器套接字綁定到0.0.0.0,而不是外部IP。我不知道這是否是由設計。

外部IP是一個虛擬IP。基礎設施知道如何將針對IP的流量引導至您的虛擬機,但不會綁定到任何虛擬機的網絡接口。如果在虛擬機中運行sudo ifconfig,則只能在eth0上看到內部IP。

+0

令人驚歎!謝謝! – Salem

相關問題