Azure VM のゲスト OS のファイアウォールがインバウンド トラフィックをブロックしている
適用対象: ✔️ Windows VM
この記事では、ゲスト オペレーティング システムのファイアウォールによりインバウンド トラフィックがブロックされた場合に発生するリモート デスクトップ ポータル (RDP) の問題を修正する方法を説明します。
現象
Azure 仮想マシン (VM) に接続するための RDP 接続を利用できません。 ブート診断 -> スクリーンショットから、ようこそ画面 (Ctrl + Alt + Del) にオペレーティング システムが完全に読み込まれたことを示します。
原因
原因 1
RDP 規則が RDP トラフィックを許可する設定になっていません。
原因 2
ゲスト システムのファイアウォール プロファイルが、RDP トラフィックを含めたすべてのインバウンド接続をブロックする設定になっています。
解決策
これらの手順を行う前に、バックアップとして、影響を受ける VM のシステム ディスクのスナップショットを取得します。 詳細については、「ディスクのスナップ」を参照してください。
この問題を解決するには、リモート ツールを使用して Azure VM に関する問題のトラブルシューティングを行う方法に関する記事で紹介されている方法のいずれかを使用して VM にリモート接続したうえで、ゲスト オペレーティング システムのファイアウォール規則を、RDP トラフィックを許可するように編集します。
オンライン トラブルシューティング
Serial コンソールに接続し、PowerShell インスタンスを開きます。 VM でシリアル コンソールが有効になっていない場合は、「VM をオフライン修復する」をご覧ください。
対応策 1
Azure エージェントが VM にインストールされ、正常に動作している場合は、VM メニューの Help>Reset password の下にある [構成のみのリセット] オプションを使用できます。
この回復オプションで行われることは、次のとおりです。
RDP コンポーネントが無効になっている場合に有効にします。
Windows ファイアウォール プロファイルを有効にします。
Windows ファイアウォールで RDP 規則がオンになっていることを確認します。
前の手順が機能しない場合は、ファイアウォール規則を手動でリセットします。 これを行うには、次のコマンドを実行して、"リモート デスクトップ" という名前を含むすべてのルールに対してクエリを実行します。
netsh advfirewall firewall show rule dir=in name=all | select-string -pattern "(Name.*Remote Desktop)" -context 9,4 | more
RDP ポートが 3389 以外のポートに設定されていた場合には、作成されてこのポートに設定されている可能性があるカスタム規則を探す必要があります。 カスタム ポートが設定されているインバウンド規則をすべて表示するクエリを実行するには、次のコマンドを実行します。
netsh advfirewall firewall show rule dir=in name=all | select-string -pattern "(LocalPort.*<CUSTOM PORT>)" -context 9,4 | more
規則が無効になっている場合には、有効にします。 組み込みのリモート デスクトップ グループなど、グループ全体を開くには、次のコマンドを実行します。
netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes
それ以外の場合は、特定のリモート デスクトップ (TCP-In) 規則を開くには、次のコマンドを実行します。
netsh advfirewall firewall set rule name="<CUSTOM RULE NAME>" new enable=yes
トラブルシューティングのために、ファイアウォール プロファイルをオフにすることができます。
netsh advfirewall set allprofiles state off
トラブルシューティングが完了し、ファイアウォールを正しく設定した後は、ファイアウォールをもう一度有効にします。
Note
変更を適用するために VM を再起動する必要はありません。
RDP 接続を使って VM にアクセスしてみます。
対応策 2
ファイアウォール プロファイルを表示するクエリを実行し、インバウンド ファイアウォール ポリシーが "BlockInboundAlways" に設定されているかどうかを確認します。
netsh advfirewall show allprofiles | more
Note
ファイアウォール ポリシーの設定方法に応じて、次のガイドラインがファイアウォール ポリシーに適用されます。
- BlockInbound: インバウンド トラフィックを許可する規則が有効になっていないかぎり、インバウンド トラフィックがすべてブロックされます。
- BlockInboundAlways: ファイアウォール規則がすべて無視され、トラフィックがすべてブロックされます。
DefaultInboundAction を常にブロックされないトラフィックに設定します。 そのためには、次のコマンドを実行します。
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
プロファイルを表示するクエリをもう一度実行し、変更が正常にできていることを確認します。 そのためには、次のコマンドを実行します。
netsh advfirewall show allprofiles | more
Note
変更を適用するために VM を再起動する必要はありません。
RDP 接続の受信規則を必ず追加してください。
RDP を使用して VM にもう一度アクセスしてみます。
オフラインの対応策
復旧 VM へのリモート デスクトップ接続を開始します。
ディスクが [ディスクの管理] コンソールで [オンライン] になっていることを確認します。 アタッチしたシステム ディスクに割り当てられているドライブ文字をメモします。
対応策 1
「ゲスト OS でファイアウォール規則を有効または無効にする方法を参照してください。
対応策 2
復旧 VM へのリモート デスクトップ接続を開始します。
システム ディスクを復旧 VM に接続したら、[ディスクの管理] コンソールでそのディスクが [オンライン] になっていることを確認します。 接続された OS ディスクに割り当てられたドライブ文字をメモします。
管理者特権の PowerShell インスタンスを開き、次のスクリプトを実行します。
REM Backup the registry prior doing any change robocopy f:\windows\system32\config f:\windows\system32\config.BACK /MT REM Mount the hive reg load HKLM\BROKENSYSTEM f:\windows\system32\config\SYSTEM REM Delete the keys to block all inbound connection scenario REG DELETE "HKLM\BROKENSYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v DoNotAllowExceptions REG DELETE "HKLM\BROKENSYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile" /v DoNotAllowExceptions REG DELETE "HKLM\BROKENSYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v DoNotAllowExceptions REG DELETE "HKLM\BROKENSYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v DoNotAllowExceptions REG DELETE "HKLM\BROKENSYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile" /v DoNotAllowExceptions REG DELETE "HKLM\BROKENSYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v DoNotAllowExceptions REM Unmount the hive reg unload HKLM\BROKENSYSTEM
問題が解決しているかどうかを確認します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。