2017-08-31 134 views
2

我有一臺在Azure雲中運行Windows Server 2012 R2的虛擬機。本機具有靜態分配的私有和公共IP地址。在那臺機器上,我正在運行客戶端應用程序(Jenkins Agent是特定的)。該客戶端打開TCP連接到其在​​服務器(Jenkins Master)上運行,該服務在Azure雲之外運行(位於某個公共IP地址後面)。 TCP連接建立正常。Azure虛擬機出站TCP連接中斷幾個步驟後

爲了保持這種連接活動,同時在客戶端和服務器都「查驗」對方每4-5分鐘。這個「ping」是通過交換幾個TCP包通過打開的TCP連接完成的。

一些隨機的時間間隔後,客戶端不能再到達服務器和服務器不能再到達客戶端。因此,客戶端和服務器端都會引發連接超時異常。

爲了分析這個問題,我正在使用Wireshark跟蹤此通信,Wireshark在Azure雲(客戶端應用程序正在運行)的Windows Server上運行。雖然通信效果很好,Wireshark的顯示TCP流量之間交換: - 客戶私人 IP地址/ 本地端口 - 服務器的公網IP地址/端口

這似乎是完全合乎邏輯的,因爲Azure的機器(客戶端)是不知道其公共IP地址和公開可見的端口(在應用NAT之後)。

當問題發生開始,我看到,無論是客戶端和服務器發送TCP重傳分組,這意味着他們都沒有收到TCP:ACK數據包到一些以前發送TCP:PSH包。最奇怪的是,客戶機正在從服務器接收這些TCP重傳,但問題是:這些包不會發送到客戶的私有IP /本地郵件。這些包在Wireshark中顯示爲發送到客戶的公共IP和公開可見的端口!顯然,客戶端應用程序沒有收到這些包,因爲機器的NIC /驅動程序丟棄了它們(這也是可以預料的)。

問:有沒有人有任何想法,爲什麼TCP響應發送到Azure的機器(客戶端)的公網IP地址,並公開可見的端口有時達到機器本身沒有NAT轉換應用到這些內容?

+0

這個問題似乎要由工作,圍繞**縮短執行ping時間間隔**。現在客戶端和服務器每隔30秒交換一次數據,並且連接在過去的2小時內看起來很健康。如果這仍然存在,我可以自由地斷定TCP會話不活動時間正在引發問題... –

回答

0

後跟蹤狀態3天,沒有問題再發生已經注意到了!所以我正在解決這個問題的結論:更頻繁的客戶端/服務器ping(即保持連接活躍)絕對可以解決這個Azure問題。