2013-07-25 58 views
0

我有一臺亞馬遜ec2服務器,其中包含所有必要的端口,並且配置了防火牆。服務器應用程序監聽某個端口上的客戶端數據並響應ack。但它看起來像服務器接收數據,然後發送確認,但客戶端沒有收到它。當我嘗試在兩個不同的ec2實例上啓動服務器和客戶端應用程序時,它起作用,但如果客戶端在Amamzon之外的某個地方啓動,那麼ack數據包將永遠達不到它。無法接收來自亞馬遜EC2服務器的UDP數據包

有什麼想法?

謝謝!

回答

1

基本故障排除:

它看起來像服務器接收的數據和ACK

爾迴應, 「看起來像」?你是否在服務器上運行TCPDump來驗證響應是否被實際發送? (並驗證它是否發送到正確的IP /端口等)

您是否在客戶端上運行TCPDump以查看數據包是否被操作系統接收到,但以某種方式未傳遞到應用程序? (tcpdump -ni eth0 udp port 9999

您使用AWS VPC嗎? (VPC防火牆可以阻止傳出數據包)

是否還有其他防火牆參與? (也就是做一個NAT/STUN /等的家庭路由器)你能在亞馬遜以外的另一臺「裸」服務器上試用嗎?

您可以使用netcat的UDP模式來驗證它不是特定於您的代碼嗎?

您可以在其他端口上使用netcat的UDP模式來驗證它不是特定於一個UDP端口嗎?

+0

這是一個Windows服務器。 VPC已禁用。正如我所說 - 它適用於兩臺亞馬遜服務器和兩臺非亞馬遜計算機之間。 – Tutankhamen

+0

我在客戶端有一個防火牆,但我認爲這個防火牆應該通過所有的「響應」udp數據包回來,對嗎?換句話說,我從本地地址爲192.168.1.10:50000的客戶端發送udp數據包到全局地址爲54.54.54.54:44444的服務器...因此,我的路由器使用本地地址創建記錄並分配時間全局地址,類似於33.33.33.33:56784。現在,即使路由器防火牆或計算機防火牆上的所有端口都關閉,從服務器54.54.54.54:44444到33.33.33.33:56784的所有數據包都會被轉發到客戶端的本地地址。這是對的嗎? – Tutankhamen

+1

是的,這通常是他們的工作方式,但從不承擔任何事情。家庭路由器在實踐中變化很大。有些超時時間很短(一兩分鐘)用於識別響應,有些響應超過幾十個連接時會丟棄響應等。另外,一些家庭ISP爲您過濾各種「危險的」UDP端口。 – BraveNewCurrency