コンシューマー向けVPNクライアントのインストールが終わって数分後も、ポータルはVMが実行中だと言い、パブリックIPは変わらず、RDPは応答しません。ふつうはVMがクラッシュしたかネットワークセキュリティグループが変わったと推測しますが、どちらもたいてい間違いです。変わったのはマシンが置かれているWindowsファイアウォールのプロファイルであり、以前は一致していたRDPのルールが一致しなくなっています。修復は、RDPに依存しない経路でシェルを取るところから始まります。

VMは実行中で、ルールが一致しなくなった

Windowsのファイアウォールルールはプロファイルの集合を持ち、プライベートまたはドメインに限定されたルールは、マシンがパブリックプロファイルにある間は効果がありません。VPNのインストーラーはアダプターとルートを追加し、その多くが副作用としてパブリックを厳格化します。リスナーは3389に束縛されたままでパケットも届きますが、プロファイルの不一致がそれを破棄します。

電源状態と到達可能性は別の事実であり、ポートが閉じた実行中のVMは外から見るとクラッシュしたVMとまったく同じに見えます。

何かを変更する前にポートを調べます。3389への接続がタイムアウトする一方でゲストエージェントのコマンドがまだ出力を返すなら、ホストのファイアウォールが疑われます。ポートが応答するのにRDPが失敗し続けるなら、障害はネットワーク層より上にあり、この修復では触れません。残りの計画はそれに依存するため、どちらの状況を見たのかを記録してください。

二つのゲートは独立して閉じる

まずファブリックのポリシーが働きます:ネットワークセキュリティグループはゲストより先にパケットを見ます。この順序のため、ホストがパケットを破棄すれば完璧なNSGエントリも無意味になり、ファブリックが拒否すれば開いたホストルールも無意味になります。別々のゲートとして扱い、それぞれ単独で試してください。

ポータルかCLIでNSGの有効なルールを読み、ゲスト自身のルールと比較します。覚えている最後の変更が有効になったものだと決めつけないでください。

コンシューマー向けクライアントは、Windowsファイアウォールより下で通信を止めるフィルタードライバーやキルスイッチをインストールすることもあります。ファイアウォールのルールが正しく見えてもポートが失敗するなら、その層が次の容疑者です。

ゲストエージェントを戻る経路として使う

リモート実行の二つの機能、Run CommandとCustom Script Extensionは、ファブリックのエージェントを通じてゲストの内部で動きます。どちらもRDPを必要としないため、ファイアウォールの誤りは影響しません。どちらもスクリプトの出力を返すので、診断と修復の両方の経路になります。

どちらかを変更する前に、有効なプロファイルとRDPのルールを読みます:

Get-NetConnectionProfile
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Select-Object Name, Enabled, Profile

そのプロファイルで受信ルールを再有効化するのは一時的な措置であり、目的ではありません。セッションを得るために使い、その後は穴をきちんと閉じます:

Set-NetFirewallProfile -Name Public -AllowInboundRules True

そのスイッチはプロファイルのすべての受信ルールを開くもので、RDPだけではありません。セッションを得たら、限定したルールに置き換え、本当に必要な設定を元に戻します。エージェントも使えない場合の代替はシリアルコンソールか再構築したディスクであり、エージェントを健全に保つ実務上の理由がここにあります。

セッションを閉じる前に穴を狭める

一時的なプロファイル変更は、そのプロファイルのすべての受信ルールに対して開け放したドアです。それを、送信元アドレスとRDPポートに限定したルールで置き換え、プロファイルが本来の状態に戻ったことを確認します。次の誤りは遠隔から元に戻せないかもしれないため、セッションがあるうちに行ってください。変更の間はBastionやシリアルコンソールのような第二の管理経路を用意しておきます。

ワークステーションからポートテストで、ゲストの内部からはルール一覧で結果を確認します:

Test-NetConnection -ComputerName 203.0.113.25 -Port 3389
Get-NetFirewallRule -DisplayName "RDP from admin" | Get-NetFirewallPortFilter

テストの間はファイアウォールのログを有効にします。3389と有効なプロファイルを示す破棄パケットの一行は、もう一度再起動するより速く答えを出します。

次のインストーラーに同じことをさせない

そのホストがクライアントを動かす理由を持たないなら、アンインストールします。インストールされたクライアントは、次の更新が再びプロファイルを書き換えるための常設の招待状であり、次の担当者はポータルから同じ障害をデバッグすることになります。

何かがネットワーク設定を書き換える前にディスクのスナップショットを取り、必要になる前に第二の管理経路を用意しておきます。

インストーラーが何を変更したかを記録します:アダプター、ルート、ファイアウォールプロファイル、フィルタードライバー、サービスです。その記録は次のインシデントを新たな調査ではなく既知のパターンに変えます。VMがちょうど一つのサービスへのトンネルを必要とするなら、クライアントをワークステーションに置くか、サーバーにノートPC向け製品を入れる代わりにサイト間リンクを構築します。コンシューマー向けクライアントはノートPCを対象にしており、遠隔で管理するサーバーはそうではありません。

関連記事