Azure VM のゲスト OS 上のファイアウォール規則を有効または無効にする
適用対象: ✔️ Windows VM
この記事では、ゲスト オペレーティング システム ファイアウォールが仮想マシン (VM) で一部のトラフィックをフィルター処理する疑いがある場合のトラブルシューティング用の参照事項を提供します。 これが役立つと言える理由:
RDP 接続の失敗の原因となったファイアウォールに意図的に変更が行われた場合、カスタム スクリプト拡張機能を使用すると、問題を解決できます。
すべてのファイアウォール プロファイルを無効にするのは、RDP に固有のファイアウォール規則を設定するよりも間違いのないトラブルシューティングの方法です。
解決策
ファイアウォール規則を構成する方法は、必要な VM へのアクセスのレベルによって異なります。 次の例では、RDPを使用しています。 ただし、適切なレジストリ キーをポイントして、他の種類のトラフィックに同じメソッドを適用できます。
オンライン トラブルシューティング
軽減策 1: カスタム スクリプト拡張機能
次のテンプレートを使用して、スクリプトを作成します。
ルールを有効にする:
netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
ルールを無効にする:
netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=no
Azure portal で、カスタム スクリプト拡張機能を使用してこのスクリプトをアップロードします。
軽減策 2: リモート PowerShell
VM がオンラインで、同じ仮想ネットワーク上の別の VM でアクセスできる場合、もう一方の VM を使用して次の軽減策を行うことができます。
トラブルシューティング用 VM で、PowerShell コンソール ウィンドウを開きます。
必要に応じて、次のコマンドを実行します。
ルールを有効にする:
Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) Enable-NetFirewallRule -DisplayName "RemoteDesktop-UserMode-In-TCP" exit
ルールを無効にする:
Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) Disable-NetFirewallRule -DisplayName "RemoteDesktop-UserMode-In-TCP" exit
軽減策 3: PSTools コマンド
VM がオンラインで、同じ仮想ネットワーク上の別の VM でアクセスできる場合、もう一方の VM を使用して次の軽減策を行うことができます。
トラブルシューティング用の VM で、PSToolsをダウンロードします。
CMD インスタンスを開き、内部 IP (DIP) を通してVM にアクセスします。
ルールを有効にする:
psexec \\<DIP> -u <username> cmd netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
ルールを無効にする:
psexec \\<DIP> -u <username> cmd netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=no
軽減策 4: リモート レジストリ
VM がオンラインにあり、同じ仮想ネットワーク上の別の VM でアクセスできる場合、他の VM 上のリモート レジストリを使用できます。
トラブルシューティング用 VM で、レジストリ エディター (regedit.exe) を起動し、ファイル>ネットワーク レジストリへの接続を選択します。
ターゲット マシン\SYSTEM 分岐を開き、次の値を指定します:
ルールを有効にするには、次のレジストリ値を開きます:
ターゲット マシン\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
次に、文字列でActive = FALSEをActive = TRUEに変更します:
v2.22|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|
ルールを無効にするには、次のレジストリ値を開きます:
ターゲット マシン\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
次に、Active = TRUEをActive = FALSEに変更:
v2.22|Action=Allow|Active=FALSE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|
変更を適用するには VM を再起動します。
オフライン トラブルシューティング
どのメソッドでも VM に到達できない場合、カスタム スクリプト拡張機能は使えなくなり、オフライン モードでシステム ディスクから直接作業する必要があります。
これらの手順を行う前に、バックアップとして、影響を受ける VM のシステム ディスクのスナップショットを取得します。 詳細については、ディスクのスナップショットに関する記事を参照してください。
復旧 VM へのリモート デスクトップ接続を開始します。
ディスクが [ディスクの管理] コンソールで [オンライン] になっていることを確認します。 接続された システム ディスクに割り当てられたドライブ文字をメモします。
変更を行う前に、変更のロールバックが必要な場合に備えて、\windows\system32\config フォルダーのコピーを作成します。
トラブルシューティング用 VM で、レジストリ エディター (regedit.exe) を起動します。
HKEY_LOCAL_MACHINE キーを選択し、メニューから [ファイル]>[ハイブの読み込み] を選択します。
\Windows\system32\config\SYSTEM ファイルを見つけて開きます。
Note
名前を求められます。 「BROKENSYSTEM」と入力し、HKEY_LOCAL_MACHINE を展開します。 これにより、BROKENSYSTEM という名前の追加キーが表示されます。 このトラブルシューティングでは、BROKENSYSTEM として、これらの問題のあるハイブをマウントします。
BROKENSYSTEM ブランチでは、次の変更を加えます:
どのControlSetレジストリ キーから VM が開始するかを確認します。 HKLM\BROKENSYSTEM\Select\Current でキー番号が表示されます。
ルールを有効にするには、次のレジストリ値を開きます:
HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
次に、Active = FALSEをActive = Trueに変更します。
v2.22|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|
ルールを無効にするには、次のレジストリ キーを開きます:
HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
次に、Active = TrueをActive = FALSEに変更します。
v2.22|Action=Allow|Active=FALSE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|
BROKENSYSTEMを強調表示し、メニューから File>Unload Hive を選択します。
問題が解決しているかどうかを確認します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。