Azure VM 来宾 OS 防火墙阻止入站流量

适用于:✔️ Windows VM

本文介绍如何修复来宾操作系统防火墙阻止入站流量时出现的远程桌面门户 (RDP) 问题。

现象

无法使用 RDP 连接来连接 Azure 虚拟机 (VM)。 从启动诊断 -> 屏幕截图显示操作系统已完全加载在欢迎屏幕(Ctrl+Alt+Del)。

原因

原因 1

未设置 RDP 规则来允许 RDP 流量。

原因 2

来宾系统防火墙配置文件设置为阻止所有入站连接,包括 RDP 流量。

防火墙设置窗口的“域配置文件”选项卡下阻止所有入站连接选项的屏幕截图。

解决方案

在执行这些步骤之前,请创建受影响 VM 的系统磁盘快照作为备份。 有关详细信息,请参阅拍摄磁盘快照

要解决此问题,请使用如何使用远程工具解决 Azure VM 问题中介绍的方法远程连接到 VM,然后将来宾操作系统防火墙规则编辑为“允许”RDP 流量

联机故障排除

连接到串行控制台并打开 PowerShell 实例。 如果 VM 上未启用串行控制台,请转到“脱机修复 VM”。

缓解措施 1

  1. 如果在 VM 上安装并正常运行 Azure 代理,则可以在 VM 菜单上的“帮助>重置密码”下使用“仅重置配置”选项。

  2. 运行此恢复选项将执行以下操作:

    • 如果已禁用 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
      
  3. 若发现该规则已禁用,请将其启用。 要打开整个组(例如内置的远程桌面组),请运行以下命令:

    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
    
  4. 要进行故障排除,可将防火墙配置文件设置为 OFF:

    netsh advfirewall set allprofiles state off
    

    完成故障排除并正确设置防火墙后,请重新启用防火墙。

    注意

    无需重启 VM 即可应用这些更改。

  5. 尝试建立 RDP 连接以访问 VM。

缓解措施 2

  1. 查询防火墙配置文件以确定入站防火墙策略是否设置为 BlockInboundAlways

    netsh advfirewall show allprofiles | more
    

    包含 BlockInboundAlways 的入站防火墙配置文件的查询结果的屏幕截图。

    注意

    以下准则适用于防火墙策略,具体取决于其设置方式:

    • BlockInbound:除非存在有效规则允许该流量,否则将阻止所有入站流量。
    • BlockInboundAlways:忽略所有防火墙规则,并阻止所有流量。
  2. DefaultInboundAction 设置为不始终阻止的流量。 为此,请运行以下命令:

    netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
    
  3. 再次查询配置文件,确保已成功完成更改。 为此,请运行以下命令:

    netsh advfirewall show allprofiles | more
    

    注意

    无需重启 VM 即可应用更改。

  4. 请确保为 RDP 连接添加入站规则。

  5. 再次尝试通过 RDP 访问 VM。

脱机缓解措施

  1. 将系统磁盘附加到恢复 VM

  2. 开始与恢复 VM 建立远程桌面连接。

  3. 确保磁盘在磁盘管理控制台中标记为“联机”。 请留意分配给附加系统磁盘的驱动器号。

缓解措施 1

请参阅 如何在来宾 OS 上启用-禁用防火墙规则。

缓解措施 2

  1. 将系统磁盘附加到恢复 VM

  2. 开始与恢复 VM 建立远程桌面连接。

  3. 将系统磁盘附加到恢复 VM 后,请确保磁盘在磁盘管理控制台中标记为 “联机 ”。 请注意分配给附加的 OS 磁盘的驱动器号。

  4. 打开提升的 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
    
  5. 拆离系统磁盘并重新创建 VM

  6. 检查是否解决了问题。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区