Windows

RDP:通過遠端桌面網關伺服器連接時,遠端應用程序不封裝流量

  • December 13, 2017

我有一個從第三方公司發布給我的一個客戶的遠端桌面應用程序。遠端桌面應用程序連接到遠端桌面網關伺服器 (RDGW),後者將請求轉發到遠端桌面伺服器群,其中使用最少的伺服器響應請求並打開應用程序。這適用於大多數情況。

今天我遇到了一種情況(假設該應用程序是為新客戶發布的),RemoteApp 會在驗證使用者並接受 RDS 場的證書後立即向使用者詢問他的憑據(域\使用者名和密碼), mstsc.exe 將停止工作,對取消或關閉按鈕完全沒有響應,並且必須通過任務管理器終止。

在解決此問題時,我發現 RemoteApp 與 RemoteDesktop Gateway 伺服器的連接方式有所不同。在我所有的正面測試場景中,我的 MSTSC 和遠端桌面伺服器網關之間的流量完全封裝在 HTTPS 中,如下所示:MS Netmon 中的成功遠端應用程序連接

在一個失敗的 mstsc 上記錄完全相同的過程的流量給了我這個: MS Netmon 中的遠端應用程序連接失敗

第一個會話(在 NetMon 中稱為)是到 RemoteDesktop 網關伺服器的 HTTPS 連接(HTTPS,埠 443),然後是一個單獨的 RDP 連接,它嘗試通過其私有 IP 地址連接到 RD 伺服器本身(我只是出於隱私和安全原因,在圖片中將其空白)。第二個連接最終失敗,因為 RD 伺服器不在同一個位置/子網中,因此 mstsc 無法訪問私有地址。

起初我懷疑客戶端防火牆,因為它會檢查 HTTPS 流量,替換證書,因此它可能會破壞與 RDGW 伺服器的成功 HTTPS 連接。禁用防火牆上的所有 webfilter 功能後,問題仍然存在。我還嘗試通過 OpenVPN 隧道路由流量,使其完全繞過防火牆,遺憾的是也沒有成功。

什麼會迫使 mstsc 不像成功連接那樣將 rdp 連接封裝在 HTTPS 流量中?這是某種備份策略還是只是一個簡單的錯誤?什麼可以用作遠端應用程序的高級故障排除,因為它沒有有價值的日誌文件,並且 RDS 和 RDGW 伺服器不受我的控制?

編輯(添加匿名配置文件):

redirectclipboard:i:1
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
devicestoredirect:s:*
drivestoredirect:s:*
redirectdrives:i:1
session bpp:i:32
prompt for credentials on client:i:1
span monitors:i:1
use multimon:i:1
remoteapplicationmode:i:1
server port:i:3389
allow font smoothing:i:1
promptcredentialonce:i:0
videoplaybackmode:i:1
audiocapturemode:i:1
gatewayusagemethod:i:2
gatewayprofileusagemethod:i:1
gatewaycredentialssource:i:0
full address:s:INTERNAL-FQDN-SERVER-HOSTNAME.CUSTOMER.NET <!! EDITED FOR ANONYMIZE REASON
alternate shell:s:||name_of_remote_app_on_wts <!! EDITED FOR ANONYMIZE REASON
remoteapplicationprogram:s:||name_of_remote_app_on_wts <!! EDITED FOR ANONYMIZE REASON
remoteapplicationname:s:name_of_remote_app_on_wts <!! EDITED FOR ANONYMIZE REASON
remoteapplicationcmdline:s:
workspace id:s:INTERNAL-FQDN-SERVER-HOSTNAME.CUSTOMER.NET <!! EDITED FOR ANONYMIZE REASON
use redirection server name:i:1
loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.RemoteApp-EXT
alternate full address:s:INTERNAL-FQDN-SERVER-HOSTNAME.CUSTOMER.NET <!! EDITED FOR ANONYMIZE REASON
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
gatewayhostname:s:external.gateway.ourcustomer.com <!! EDITED FOR ANONYMIZE REASON
signscope:s:Full Address,Alternate Full Address,Use Redirection Server Name,Server Port,GatewayUsageMethod,GatewayProfileUsageMethod,GatewayCredentialsSource,PromptCredentialOnce,Alternate Shell,RemoteApplicationProgram,RemoteApplicationMode,RemoteApplicationName,RemoteApplicationCmdLine,RedirectDrives,RedirectPrinters,RedirectCOMPorts,RedirectSmartCards,RedirectClipboard,DevicesToRedirect,DrivesToRedirect,LoadBalanceInfo
screen mode id:i:2
winposstr:s:0,3,0,0,800,600
compression:i:1
keyboardhook:i:2
connection type:i:7
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
disable wallpaper:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
audiomode:i:0
redirectposdevices:i:0
autoreconnection enabled:i:1
remoteapplicationicon:s:
shell working directory:s:
gatewaybrokeringtype:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:

那個設定:

gatewayusagemethod:i:2 

可能不適合此服務。

這對應於設置“繞過本地地址的 RD 網關伺服器”。

第三方公司不應在啟用該設置的情況下傳遞 RDP 文件。

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