共用方式為


啟用或停用 Azure VM 客體作業系統上的防火牆規則

適用於:✔️ Windows 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 入口網站 中上傳此腳本。

風險降低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. 開啟 TARGET MACHINE\SYSTEM 分支,然後指定下列值:

    • 若要啟用規則,請開啟下列登錄值:

      TARGET MACHINE\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|

    • 若要停用規則,請開啟下列登錄值:

      TARGET MACHINE\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|

  3. 重新啟動 VM 以套用變更。

離線疑難解答

如果您無法透過任何方法存取 VM,使用自訂腳本擴充功能將會失敗,而且您必須直接透過系統磁碟運作,才能在 OFFLINE 模式中運作。

遵循這些步驟之前,請建立受影響 VM 系統磁碟的快照集作為備份。 如需詳細資訊,請參閱 快照集磁碟

  1. 將系統磁碟連結至復原 VM

  2. 啟動與復原 VM 的遠端桌面連線。

  3. 請確定磁碟在磁碟管理控制台中標示為 [在線 ]。 請注意,指派給鏈接系統磁碟的驅動器號。

  4. 進行任何變更之前,請建立 \windows\system32\config 資料夾的複本,以防需要復原變更。

  5. 在疑難解答 VM 上,啟動註冊表編輯器 (regedit.exe)。

  6. 反白顯示HKEY_LOCAL_MACHINE鍵,然後從功能表中選取 [檔案>載入 Hive]。

    登錄編輯器的 [檔案] 選單中HKEY_LOCAL_MACHINE機碼和 [載入 Hive] 選項的螢幕快照。

  7. 找出並開啟 \windows\system32\config\SYSTEM 檔案。

    注意

    系統會提示您輸入名稱。 輸入 BROKENSYSTEM,然後展開 [HKEY_LOCAL_MACHINE]。 您現在會看到名為 BROKENSYSTEM 的其他金鑰。 針對此疑難解答,我們會將這些問題 Hives 掛接為 BROKENSYSTEM

  8. 在 BROKENSYSTEM 分支上進行下列變更:

    1. 檢查 VM 正在啟動的 ControlSet 登錄機碼。 您會在 HKLM\BROKENSYSTEM\Select\Current 中看到其索引鍵編號。

    2. 若要啟用規則,請開啟下列登錄值:

      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|

    3. 若要停用規則,請開啟下列登錄機碼:

      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|

  9. 反白顯示 BROKENSYSTEM,然後從功能表中選取 [ 檔案>卸除 Hive ]。

  10. 中斷鏈接系統磁碟並重新建立 VM

  11. 檢查問題是否已解決。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。