以前、Surface RT で SSMS を使ってみる という投稿をしました。
Surface RT は RemotApp は [RemoteApp とデスクトップ接続] を使用することができます。
以前の投稿では RDP ファイルを書き換えて RemoteApp を使用していましたが今回の投稿では Azure の VMs に RemoteApp の環境を作って Surface RT からアクセスしてみたいと思います。
この投稿の内容は Surface RT (Windows RT) だけでなく、Windows 7 /8 でも利用することができます。
今回はライセンスサーバーを用いていませんので 120 日の評価環境 での利用となります。
今回は Windows Azure の Virtual Machines の S インスタンス 2 台 (AD DS 用 / RemoteApp 用) を使用して RemoteApp の環境を作成しています。
Windows Server 2012 のイメージを使用しているのですが、AD DS と RemoteApp の共存はサポートされていないようでしたので。
Remote Desktop Services role cannot co-exist with AD DS role on Windows Server 2012
実際に、共存させようとしたところ以下の現象と同じエラーになってしまったのですが、回避することができませんでした。
Remote Desktop Management Service, Service-specific error %%2284126209
そのため、今回はAD DS 用と RempteApp 用の VM を分けて構築しています。
なお、ベースとなる OS はギャラリーから展開した Windows Server 2012 に日本語の言語パックをインストールして日本語環境として設定したものを使用しています。
また、今回の投稿では Azure の Virtual Network を使用していますが、その個所に関しては触れていません。
# インスタンス間が通信できればよいので使わないでもよいのかもしれませんが。
Azure の Virtual Network に関しては以下の技術文書を読んでおくとよいかと思います。
Create a Virtual Network in Windows Azure
Install a new Active Directory forest in Windows Azure
Contents
■構築する環境
今回は以下のような環境を構築します。
Surface RT はインターネット経由で Azure の RemoteApp にアクセスをします。
RemoteApp を使用するための環境として AD のドメインを使用するため、VM は Virtual Network で同一のネットワークに設定しています。
■VMs をドメインコントローラーとして設定
リモート デスクトップ サービスのインストールを完了するためにはドメインに参加させる必要があります。
ドメインに参加させていない (ドメインのユーザーでログインしていない) 状態でリモート デスクトップ サービスをインストールしようとすると以下のようなエラーになります。
そこで、最初に AD DS をインストールして Active Direcotry ドメイン環境を構築します。
AD DS の構築は以下の流れで実施します。
# Azure の VM を使用して AD を構築する場合でも通常の AD 構築と作業の流れは変わりません。
サーバーマネージャーの [役割と機能の追加] から [Active Directory ドメイン サービス] をインストールします。
役割の追加が終了したらドメインコントローラーに昇格します。
この辺りは通常のドメインコントローラーの作成と一緒ですので、あとの作業はウィザードに従い実施します。
# 新規のドメインコントローラーですので [新しいフォレストを追加する] を指定してドメインを作成します。
ドメインコントローラーのインストールが終了し、再起動が完了したらリモートデスクトップ環境の構築を行います。
Azure に Active Direcotory を構築するためのガイドラインは以下を読んでおくとよさそうですね。
Guidelines for Deploying Windows Server Active Directory on Windows Azure Virtual Machines
■リモートデスクトップ環境の構築
次に RemoteApp 用の VM の設定を行います。
先ほど作ったドメインに参加させる必要がありますので、RemoteApp 用の VM の DNS には作成した AD DS の IP アドレスを指定しています。
# この辺りはほかにも方法があると思いますが、今回は検証のリモートデスクトップで接続して直接変更しています。
ドメインの参加が終了したら、サーバーマネージャーから [役割と機能の追加] を起動します。
インストールはドメインアカウントで実行する必要がありますのでリモートデスクトップで接続する際に、 [別のアカウントを使用] からドメインユーザーでログインをします。
# 今回はドメインの Administrator でログインしています。
Windows Server 2012 では役割と機能の追加をする際に [リモート デスクトップ サービスのインストール] を選択することでシナリオに応じて必要な機能をインストールすることができます。
Azure の VMs にインストールされたアプリケーションにアクセスするシナリオを使用しますので [セッション ベースのデスクトップ展開] を選択します。
機能の追加の最中に自動的に再起動されますが、再起動が完了した後に機能の追加をしたユーザーでログオンしたサーバーマネージャーを起動する必要があるはずですのでご注意ください。
再度ログインしサーバーマネージャーを開いたタイミングでウィザードの処理が再開され、ウィザードが完了します。
■RemoteAppの設定
リモートデスクトップサービスのインストールが終了すると、サーバーマネージャーに [リモート デスクトップ サービス] が追加されます。
RemoteApp の管理もここから行います。
デフォルトでは [QuickSessionCollection] というコレクションができており、いくつかのプログラムが公開されています。
■外部からのアクセステスト
RemoteApp の Web ページアクセスするためには [https://<サーバー名>/RDWeb] でアクセスする必要があります。
そのため、外部からアクセスできるように RemoteApp 用のサーバーで 443 のエンドポイントを設定しておきます。
今回は自己署名証明書を使用しているのでアクセスした際に証明書の警告が表示されますが [このサイトの閲覧を続行する] を選択して閲覧を続けます。
ポータルが表示されたらドメインユーザー名とパスワードを入力してログインします。
以下のような画面が表示されれば外部からのアクセスも完了です。
■
証明書の発行
Azure の VM に外部からアクセスする場合は ~.cloudapp.net で接続をすることになります。
RemoteApp のサーバーはデフォルトではサーバー名で自己署名証明書が設定されています。
この状態だと外部からアクセスした際にセキュリティの設定でエラーとなってしまいますので AD CS を使用して外部アクセスで使用する名称で証明書を作成して、RemoteApp にインポートします。
AD DS の VM にログインし、[Active Directory 証明書サービス] を追加します。
今回や AD CS の役割サービスで [証明機関 Web 登録] を追加しています。
# それ以外はデフォルトで設定しています。なお、Web 登録はインストールしましたが使っていません。
役割の追加が終了したら展開後の構成を行います。
追加した役割サービスの構成をし、エンタープライズのルート CA として設定します。
基本的な設定はすべてデフォルトで行います。
次に証明書テンプレートの設定をします。
スタート画面から [証明機関] を起動します。
次に [証明書テンプレート] を右クリックして、[管理] をクリックします。
[Web サーバー] を右クリックして [テンプレートの複製] をクリックします。
[テンプレートの表示名] を適当なものに変更し、セキュリティに RemoteApp のコンピューターアカウントを追加して、[読み取り][登録] を設定し、[OK] をクリックします。
テンプレートの複製が終わったら、証明機関のスナップインに戻り、証明書テンプレートから [発行する証明書テンプレート] を選択します。
AD CS の構成が完了したら RemoteApp から証明書の発行要求を行います。
RemoteApp で MMC を実行してコンピューターアカウントの証明書のスナップインを追加します。
スナップインが起動したら [個人] の [証明書] から [新しい証明書の要求] を行います。
要求する証明書としては先ほど設定した証明書を選択します。
追加の設定が必要ですので、[この証明書を~] をクリックします。
DNS の名称を RemoteApp の DNS 名 (~.cloudapp.net) に設定します。
設定が完了したら証明書を登録します。
証明書の登録が完了したら IIS の HTTPS の証明書としてバインドします。
■Surface RT で RemoteApp とデスクトップ接続を設定
以降の作業は Surface RT で実施しています。
まずは MMC のスナップインから AD CS のルート証明書を [信頼されたルート証明機関] に、RemoteApp の証明書を [個人] の証明書にインポートして、ブラウザから HTTPS でアクセスした際に証明書の警告エラーが表示されないようにします。
次にコントロールパネルを開き、[RemoteApp とデスクトップ接続] を起動します。
# カテゴリ表示しすると見つけやすいです。また、[RemoteApp] を [設定] から検索しても見つけることができます。
起動したら [RemoteApp とデスクトップにアクセスする] をクリックします。
接続先の URL の入力が出ますので、[https://<VM の DNS名>/RDweb/Feed/webfeed.aspx] を設定て接続します。
認証ダイアログが表示されたらドメインユーザーの情報を入力して接続をします。
接続をするとスタート画面に RemoteApp のアプリケーションが表示され、RemoteApp 経由で Azure の VM 上のプログラムを起動することができます。
Windows Server 2012 には Live Writer をインストールすることが可能です。
そのためセッションベースのデスクトップ展開でも Live Writer を RemoteApp に登録することができます。
今までの設定で Remote App のプログラムを起動すると、Azure 上の VM のローカルのコンピューター名でアクセスされてしまい、起動することができません。
また、ポート番号もデフォルトですと 3389 に設定されています。Azure の VMs はデフォルトでは 3389 で外部からアクセスするのではなく、パブリックポートは 3389 以外が設定されそのポートにアクセスしたものをプライベートポートとして 3389 に流すというような仕組みになっています。
これをうまく調整するために RemoteApp のサーバーで PowerShell を使用してカスタム RDP の設定をします。
以下のようなコマンドを実行します。なお、CustomRdpProperty は改行で複数指定することができます。
詳細に関しては 山市良のえぬなんとかわーるど さんの Windows Server 2012 > RDS/VDI のカスタム RDP 設定 が参考になります。
PS>Set-RDSessionCollectionConfiguration -CollectionName QuickSessionCollection -CustomRdpProperty "server port:i:53xxxx >> full address:s:xxxxxx.cloudapp.net" |
これで接続先の設定が調整されて、Azure 上に構築された RemoteApp にアクセスすることができるようになります。
# もっとうまく実行する方法はあると思いますが。。。。
ここまでの作業をすると、スタート画面に登録された RemoteApp のプログラムから Live Writer を起動するというようなことができるようになります。
RemoteApp 環境がきちんと整備されていれば、RT からシームレスにプログラムを起動するということもできそうですね。
ここまで持ってくるのに微妙に疲れたりはしますがw