【问题标题】:Open Windows Firewall for XDebug为 XDebug 打开 Windows 防火墙
【发布时间】:2014-01-03 23:31:38
【问题描述】:

这看起来应该很简单,所以我讨厌问。但我尝试配置 Windows 防火墙以允许 XDebug 连接到端口 9000 上的 PHPStorm,但没有成功。

XDebug 在带有专用网络连接的 Vagrant Box 上打开 - 所以主机有一个虚拟网络适配器。 Vagrant 为 192.168.33.10,宿主 PC 为 192.168.33.1。

在禁用 Windows 防火墙的情况下,XDebug 连接到 PHPStorm。但我显然不想关闭我的防火墙。

所以我尝试使用以下入站规则设置在 Windows 防火墙中打开一个端口:

  • 一般
    • 已启用:检查
    • 操作:允许连接
  • 计划和服务
    • 所有满足指定条件的程序:勾选
    • 服务
      • 适用于所有计划和服务:选中
  • 协议和端口
    • 协议类型:TCP
    • 本地端口:特定端口:9000
    • 远程端口:所有端口
  • 范围
    • 本地 IP 地址
      • 任何 IP 地址:选中
    • 远程 IP 地址
      • 任何 IP 地址:选中
  • 高级
    • 个人资料
      • 域:已选中
      • 私人:已检查
      • 公开:已检查
    • 接口类型
      • 所有接口类型:选中
    • 边遍历:块边遍历

但是让 XDebug 连接到 PHPstorm 是行不通的。我也尝试将协议设置为 UDP。而且我知道如果这条规则确实有效,它会过于开放(我可以收紧范围),但目前我只想在收紧之前看到它的工作。

【问题讨论】:

    标签: windows xdebug firewall


    【解决方案1】:

    Virtualbox 网络仅主机接口存在问题,因为它是环回接口,Windows 以不同的方式管理它。

    解决此问题的简单方法是打开“regedit”。搜索“HKLM:\system\CurrentControlSet\control\class{4D36E972-E325-11CE-BFC1-08002BE10318}”。有很多接口。只需查看一个名为“VirtualBox Host-Only Ethernet Adapter”的产品。然后添加名为“*NdisDeviceType”的新 DWORD(32) 键和值“1”(十六进制)。重启。

    我不知道是否需要添加标准的 fw 规则,例如主机端口 9000 允许所有人,因为我已经有了。

    更多信息 - http://brianreiter.org/2010/09/18/fix-virtualbox-host-only-network-adapter-creates-a-virtual-public-network-connection-that-causes-windows-to-disable-services/

    【讨论】:

    • 这将从“未识别的网络”中删除适配器。然后,我不得不从 Windows 防火墙 > 高级设置 > Windows 防火墙属性下的“公共配置文件”中删除网络连接。可能有更聪明的方法可以在注册表更改后允许访问,但至少这不需要完全关闭 Windows 防火墙。
    • 也为我工作!我必须为所有已创建的 VirtualBox Host-Only 以太网适配器设置此项。
    • 也为我工作。仅供参考,更容易在 regedit 中搜索 4D36E972-E325-11CE-BFC1-08002BE10318。我有多个 VirtualBox Host-Only 以太网适配器(多个 VirtualBox),所以我必须为每个适配器进行更改。
    【解决方案2】:

    我发现的最简单的方法:Windows 高级防火墙(在其中添加/删除规则)-> 右键单击​​ -> 属性(另一个用于启用/禁用本地/域/公共防火墙的地方)

    三个范围(本地/域/公共)中的每一个都有一个设置来完全排除特定网络接口的防火墙处理(!)

    为任何 vmware/virtualbox 网络接口打开 Windows 防火墙。 (除非您需要针对您的虚拟机使用它)

    这将允许从您的客人到您的主机的任何连接。

    【讨论】:

      【解决方案3】:

      一般来说,不根据协议或端口范围指定规则会更容易。相反,只需让程序可执行文件对所有内容都有防火墙例外。因此,不要为端口 9000 创建规则,只需为“xdebug.exe”创建规则,但不要将其限制为仅端口 9000。

      控制面板->Windows防火墙->点击“允许应用程序或功能通过Windows防火墙”,然后添加xdebug.exe(或任何可执行文件名)。这将添加一组新的入站规则(一个用于 UDP,另一个用于 TCP)。返回高级设置页面,找到已创建的新入站规则,并检查每个规则以验证“范围”复选框是否已设置(私有、域、公共)。

      有一种方法可以打开防火墙日志记录,这样您就可以在防火墙打开时发现被阻止的内容。然后你可以根据需要添加规则。

      http://technet.microsoft.com/en-us/library/cc787462(v=ws.10).aspx

      【讨论】:

      • 另外,我会启用“边缘遍历”,因为有一个虚拟机从这里涉及的 VM 主机获得一些伪 NAT 支持。
      • 在这种情况下,XDebug 在来宾机器中。主机上的 PHPStorm 设置为侦听端口 9000。出于参数考虑,我尝试为 PHPStorm 定义入站规则,但没有什么不同。我还启用了“边缘遍历”。防火墙日志显示端口 9000 上的连接被阻止。
      【解决方案4】:

      如果您的机器上除了虚拟适配器外还有 NAT 适配器,您可以将 php.ini xdebug.remote_host 参数中的 xdebug 配置更改为您机器上物理接口的 IP。最简单的方法是尝试 telnet 到 9000 端口。

      【讨论】:

      • 使用“xdebug.remote_log=/tmp/xdebug.log”来发现你的xdebug试图连接到哪个IP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 2016-06-06
      • 1970-01-01
      相关资源
      最近更新 更多