Windows-Server-2008
Windows Server 2008,卡在 TCP 握手上
問題:
我的 Windows 2008 Server 無法與遠端機器建立 TCP 連接。
重現步驟:
我有一個服務在 Windows 2008 Server 機器上執行,埠為 40.000,ip 為 10.100.5.46。
從我嘗試使用的另一台 Linux 機器上
Telnet 10.100.5.46 40000
這導致了與國家的聯繫
SYN_RECEIVED
。我使用 netstat
-a | find "40000"
查看所有連接,嘗試 telnet 後,我可以看到 2 個連接
- 監聽埠 40000 的連接
- 狀態連接
SYN_RECEIVED
該程序已在其他機器和另一台 Windows 2008 機器上進行了測試,並在其中工作。
是否有任何想法有什麼問題以及如何修改 Windows 2008 伺服器以使其工作。
我們現在找到了解決我的問題的方法,我想分享這個解決方案。
該問題是由 Socket 上的一個選項引起的。
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);
當此選項設置為 true 時,我們的服務無法在 Windows 2008 上接收來自不同子網的任何連接。連接將卡在 TCP 握手階段。
對於來自同一台機器或來自同一子網上的機器的連接,這不是問題。
安裝在 Windows 2003 上的相同程序與來自其他子網的連接沒有問題。
好的,一些明顯的,但也許他們可以幫助:
- 伺服器是否正確接受其他入站連接,如文件共享、遠端桌面等?
- 該服務是否接受來自伺服器本身的連接,即
telnet localhost 40000
?- 該服務是 .NET 應用程序嗎?Windows Server 2008的.NET 框架子功能可能會變得很棘手***。***