Windows

遠端桌面協議實現

  • July 13, 2011

我正在嘗試為我自己的遠端桌面應用程序找到僅適用於 Windows(以上 XP)的最佳網路解決方案,並且我有以下要求:

  1. 首先,應用程序應該可以使用預設的作業系統網路配置工作,不需要進一步的代理(或任何其他)配置
  2. 它必須是防火牆感知的(也有一些基本配置)
  3. 它應該在 NAT 上工作(通信雙方都可能在 NAT 之後)

你會建議我什麼概念?您將如何(從網路的角度)開發遠端桌面應用程序?什麼協議和埠可能是最好的?

我很確定 80 埠上的 HTTP 可能滿足上述條件,但我覺得它對於遠端桌面應用程序效率不高。對於我的實現來說,最好使用我自己的基於 TCP 的協議(最好在一些安全層之後),但我認為這不會通過防火牆。

作為最好的候選人尋找我SSH,但我想它會被許多防火牆預設阻止,還是我錯了?

抱歉這個蹩腳(有點主觀)的問題,我真的不熟悉網路的東西。

我正在使用Synapse 庫來實現。

80 上的 HTTP 不符合您的限制。事實上,什麼都沒有:預設的作業系統配置被完全鎖定,在 NAT 上沒有為埠轉發打孔。您可能可以使用 uPnP 控制來打開路由器上的適當埠,但這假設您的程序執行在您能夠執行此操作的級別。

如果您正在替換遠端桌面(似乎不是這種情況,但我還是會提到它),您仍然會遇到同樣的問題。遠端桌面在啟用時通常會在本地 Windows 防火牆策略中添加一個例外,並在路由器中手動輸入一個漏洞。

哦,企業 NAT 肯定必須手動配置以允許您的程序。如果雙方都是公司 NAT,就沒有辦法解決這個問題。

選擇 3389 讓您有機會利用可能在遠端桌面的防火牆中創建的開口,但這些開口當然是因為遠端桌面通常在那裡執行而創建的。

選擇分配給特定服務的任何埠都是一件壞事™,因為 a) 人們希望在那裡找到該服務,並且 b) 它實際上可能已經在那裡了。

這讓我想到了最後一點:為什麼不使用遠端桌面?這是一個功能非常齊全的協議,可能最容易避免在這裡重新發明輪子。

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