Windows-Server-2008

Windows Server 2008,卡在 TCP 握手上

  • August 28, 2009

問題:

我的 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 個連接

  1. 監聽埠 40000 的連接
  2. 狀態連接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 框架子功能可能會變得很棘手***。***

引用自:https://serverfault.com/questions/58865