みなさまこんにちは。
最近散歩が楽しく感じてきました。
ちょっとオヤジくさくなってきた気がします。
x3です。
今回はRDP Shortpathを試してみようと思います。
※RDP Shortpathは、2021/2/1現在プレビュー機能です。
目次
そもそもRDP Shortpathって?
RDP ShortpathとはWVDで新しくプレビューとなったネットワーク関連の機能となります。
今までのWVDは、クライアントとセッションホストの通信がAzureで管理されているコントロールプレーンの RD Gateway を経由していました。
しかし、RD Gatewayを経由することにより、セッションホストとの通信は必ずパブリックなネットワークを通ることになり、閉域接続でVDIを使用することが出来ずにいました。
しかし!
このRDP Shortpathを使用すると、クライアントとセッションホストを直接接続させることが可能となり、それによりクライアント⇔セッションホストの通信を閉域で実施することが可能となったのです。。
おそらくこの機能は多くのお客様が望んでいた機能かと思います(私の所感ですが・・)。
この記事で書かないこと
・WVD環境の構築について(WVD環境構築については、以下記事を是非参考にしてみてください。非ARM版の記事です。)
~ https://jmtechsupport.jp/azure/921/ ~
注意点
RDP Shortpathの機能を試すためには、クライアントとセッションホストが直接接続可能である必要があります。
そのため、、、
・ExpressRoute
・VPN(S2S、P2S)
・SessionHostにパブリックIPを割り当てる
などの対応が必要となりますので、事前に確認しておくようにしましょう。
今回はVPN(P2S)での接続にします。
それでは実践
マスタVMの設定
まずは、 RDP Shortpath リスナーを有効化します。
公式サイトでは、セッションホストで実施~みたいに書いてありますが、マスタイメージに適用、その後そのイメージを展開する流れでも問題ないです。
今回はマスタ上に設定を適用していきます。
マスタでレジストリエディタを起動し、以下パスまで移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
ここで、
・ fUseUdpPortRedirector という名前の新規DWORD値 「1」 (10進数)
・ UdpPortNumber という名前の新規DWORD値 「3390」 (10進数)
を設定します。
以下コマンドをPowerShellで実行することでも設定可能です。
$WinstationsKey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations' New-ItemProperty -Path $WinstationsKey -Name 'fUseUdpPortRedirector' -ErrorAction:SilentlyContinue -PropertyType:dword -Value 1 -Force New-ItemProperty -Path $WinstationsKey -Name 'UdpPortNumber' -ErrorAction:SilentlyContinue -PropertyType:dword -Value 3390 -Force
次にFirewall設定を変更します。
以下コマンドをPowerShell上で実行します。
下のコマンド実行後、Firewallで受信ポート3390が開放されます。
New-NetFirewallRule -DisplayName 'Remote Desktop - Shortpath (UDP-In)' -Action Allow -Description 'Inbound rule for the Remote Desktop service to allow RDP traffic. [UDP 3390]' -Group '@FirewallAPI.dll,-28752' -Name 'RemoteDesktop-UserMode-In-Shortpath-UDP' -PolicyStore PersistentStore -Profile Domain, Private -Service TermService -Protocol udp -LocalPort 3390 -Program '%SystemRoot%\system32\svchost.exe' -Enabled:True

必要に応じて、QoS DSCPの設定を実施します。
QoS DSCPを設定すると、WVD用の通信が、他の重要度の低い通信より優先度が上がり、WVD用通信の遅延等が減少します。
設定には、以下コマンドを実行します。
New-NetQosPolicy -Name "RDP Shortpath" -AppPathNameMatchCondition "svchost.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 3390 -IPSrcPortEndMatchCondition 3390 -DSCPAction 46 -NetworkProfile All
ここまで出来たら、このマスタ用VMを展開します。
そして接続
あらかじめP2Sの接続環境を用意していたので、それにつなげてWVDに接続してみましょう。

ツールバーの3本線をクリックして、
詳細表示して、
Network detailsのトランスポートプロトコルがUDPなら成功です!

うまくいかないとき
セッションホストで以下コマンドを実行して確認してみましょう。
Get-NetUDPEndpoint -OwningProcess ((Get-WmiObject win32_service -Filter "name = 'TermService'").ProcessId) -LocalPort 3390

上記画像のように表示されていなければ、設定がうまくいってない可能性があります。
見直してみましょう。
さいごに
皆様、今回も最後まで見ていただきありがとうございました。
今回VPNで実施しましたが、実は一番最初にパブリックIP付与のやり方で実践しておりました。
しかしうまくいかなかったのでVPNを使用するほうに切り替えた、という背景があります・・・(原因を調べ切れませんでした。)
次回はAzure CDN周りで1つ投稿できればいいなって考えています。
なるべく早く投稿できるよう頑張ります。