次の方法で共有


Azure VM のゲスト OS 上のファイアウォール規則を有効または無効にする

この記事では、ゲスト オペレーティング システム ファイアウォールが仮想マシン (VM) で一部のトラフィックをフィルター処理する疑いがある場合のトラブルシューティング用の参照事項を提供します。 これが役立つと言える理由:

  • RDP 接続の失敗の原因となったファイアウォールに意図的に変更が行われた場合、カスタム スクリプト拡張機能を使用すると、問題を解決できます。

  • すべてのファイアウォール プロファイルを無効にするのは、RDP に固有のファイアウォール規則を設定するよりも間違いのないトラブルシューティングの方法です。

ソリューション

ファイアウォール規則を構成する方法は、必要な VM へのアクセスのレベルによって異なります。 次の例では、RDPを使用しています。 ただし、適切なレジストリ キーをポイントして、他の種類のトラフィックに同じメソッドを適用できます。

オンライン トラブルシューティング

軽減策 1: カスタム スクリプト拡張機能

  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
      
  2. Azure portal で、カスタム スクリプト拡張機能を使用してこのスクリプトをアップロードします。

軽減策 2: リモート PowerShell

VM がオンラインで、同じ仮想ネットワーク上の別の VM でアクセスできる場合、もう一方の VM を使用して次の軽減策を行うことができます。

  1. トラブルシューティング用 VM で、PowerShell コンソール ウィンドウを開きます。

  2. 必要に応じて、次のコマンドを実行します。

    • ルールを有効にする:

      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 を使用して次の軽減策を行うことができます。

  1. トラブルシューティング用の VM で、PSToolsをダウンロードします。

  2. 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 上のリモート レジストリを使用できます。

  1. トラブルシューティング用 VM で、レジストリ エディター (regedit.exe) を起動し、ファイル>ネットワーク レジストリへの接続を選択します。

  2. ターゲット マシン\SYSTEM 分岐を開き、次の値を指定します:

    • ルールを有効にするには、次のレジストリ値を開きます:

      ターゲット マシン\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      次に、文字列でActive = FALSEActive = 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 = TRUEActive = 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|

  3. 変更を適用するには VM を再起動します。

オフライン トラブルシューティング

どのメソッドでも VM に到達できない場合、カスタム スクリプト拡張機能は使えなくなり、オフライン モードでシステム ディスクから直接作業する必要があります。

これらの手順を行う前に、バックアップとして、影響を受ける VM のシステム ディスクのスナップショットを取得します。 詳細については、ディスクのスナップショットに関する記事を参照してください。

  1. 復旧 VM にシステム ディスクを取り付ける

  2. 復旧 VM へのリモート デスクトップ接続を開始します。

  3. ディスクが [ディスクの管理] コンソールで [オンライン] になっていることを確認します。 接続された システム ディスクに割り当てられたドライブ文字をメモします。

  4. 変更を行う前に、変更のロールバックが必要な場合に備えて、\windows\system32\config フォルダーのコピーを作成します。

  5. トラブルシューティング用 VM で、レジストリ エディター (regedit.exe) を起動します。

  6. HKEY_LOCAL_MACHINE キーを選択し、メニューから [ファイル]>[ハイブの読み込み] を選択します。

    レジストリ エディターの [ファイル] メニューにある HKEY_LOCAL_MACHINE キーと [ハイブの読み込み] オプションのスクリーンショット。

  7. \Windows\system32\config\SYSTEM ファイルを見つけて開きます。

    注:

    名前を求められます。 「BROKENSYSTEM」と入力し、HKEY_LOCAL_MACHINE を展開します。 これにより、BROKENSYSTEM という名前の追加キーが表示されます。 このトラブルシューティングでは、BROKENSYSTEM として、これらの問題のあるハイブをマウントします。

  8. BROKENSYSTEM ブランチでは、次の変更を加えます:

    1. どのControlSetレジストリ キーから VM が開始するかを確認します。 HKLM\BROKENSYSTEM\Select\Current でキー番号が表示されます。

    2. ルールを有効にするには、次のレジストリ値を開きます:

      HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      次に、Active = FALSEActive = 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|

    3. ルールを無効にするには、次のレジストリ キーを開きます:

      HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      次に、Active = TrueActive = 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|

  9. BROKENSYSTEM を強調表示し、メニューから [ファイル>アンロード Hive] を選択します。

  10. システム ディスクをデタッチし、VM を再作成します

  11. 問題が解決しているかどうかを確認します。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。