即使允许,防火墙也会阻止连接

即使允许,防火墙也会阻止连接

我无法从网络上的另一台计算机与我的 Windows 7 计算机建立任何连接。当我关闭防火墙时,我突然能够建立这些连接。远程桌面就是这样的一个连接。我还尝试访问共享文件夹和 powershell 远程处理。我还尝试过nmap端口 1-1024,但都已关闭。

以下是输出netsh advfirewall firewall show rule name="Remote Desktop (TCP-In)"(未显示公共网络的第二条远程桌面规则)

Rule Name:                            Remote Desktop (TCP-In)
----------------------------------------------------------------------
Enabled:                              Yes
Direction:                            In
Profiles:                             Domain,Private
Grouping:                             Remote Desktop
LocalIP:                              Any
RemoteIP:                             Any
Protocol:                             TCP
LocalPort:                            3389
RemotePort:                           Any
Edge traversal:                       No
Action:                               Allow

以下内容出现在我的 %systemroot%\system32\logfiles\firewall\pfirewall.log 中:

#Fields: date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path
...
2014-11-06 18:12:08 DROP TCP 10.2.10.39 10.2.10.87 58992 3389 52 S 3548206488 0 8192 - - - RECEIVE
2014-11-06 18:12:08 DROP TCP 10.2.10.39 10.2.10.87 58992 3389 52 S 3548206488 0 8192 - - - RECEIVE
2014-11-06 18:12:08 DROP TCP 10.2.10.39 10.2.10.87 58992 3389 52 S 3548206488 0 8192 - - - RECEIVE

netsh advfirewall show currentprofile显示如下:

Domain Profile Settings:
----------------------------------------------------------------------
State                                 ON
Firewall Policy                       BlockInbound,AllowOutbound
LocalFirewallRules                    N/A (GPO-store only)
LocalConSecRules                      N/A (GPO-store only)
InboundUserNotification               Enable
RemoteManagement                      Disable
UnicastResponseToMulticast            Enable

Logging:
LogAllowedConnections                 Enable
LogDroppedConnections                 Enable
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log
MaxFileSize                           4096


Public Profile Settings:
----------------------------------------------------------------------
State                                 ON
Firewall Policy                       BlockInbound,AllowOutbound
LocalFirewallRules                    N/A (GPO-store only)
LocalConSecRules                      N/A (GPO-store only)
InboundUserNotification               Enable
RemoteManagement                      Disable
UnicastResponseToMulticast            Enable

Logging:
LogAllowedConnections                 Disable
LogDroppedConnections                 Disable
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log
MaxFileSize                           4096

Ok.

似乎还有其他几个与此类似的问题,但没有一个得到回答,也没有一个列出我列出的详细信息,因此我创建了一个新问题。

答案1

问题出在 Oracle VirtualBox 的“以太网适配器 VirtualBox 仅主机网络”网络适配器上。此网络适配器在 Windows 中注册为“公共”网络,从而激活了我的防火墙规则公共配置文件。我可以使用本文中的方法纠正此问题:

http://brianreiter.org/2010/09/18/fix-virtualbox-host-only-network-adapter-creates-a-virtual-public-network-connection-that-c​​auses-windows-to-disable-services/

这个想法是告诉 Windows 这个网络适配器是一个虚拟的,所以它可以忽略它,只要防火墙规则允许。一个简单的注册表编辑就可以实现这一点。这里有一些 powershell 可以自动应用这个注册表更改:

cd 'HKLM:\system\CurrentControlSet\control\class\{4D36E972-E325-11CE-BFC1-08002BE10318}'
ls ???? | where { ($_ | get-itemproperty -name driverdesc).driverdesc -eq 'VirtualBox Host-Only Ethernet Adapter' } | new-itemproperty -name '*NdisDeviceType' -PropertyType dword -value 1

我仍然不明白为什么 Windows 决定对所有流量使用公共配置文件,而不是只对通过此网络适配器的流量使用公共配置文件。我有其他机器似乎不受此现象的影响。例如,在一台机器上,我有以下输出netsh advfirewall firewall show rule name="Remote Desktop (TCP-In)"

Rule Name:                            Remote Desktop (TCP-In)
----------------------------------------------------------------------
Enabled:                              Yes
Direction:                            In
Profiles:                             Domain,Private
Grouping:                             Remote Desktop
LocalIP:                              Any
RemoteIP:                             Any
Protocol:                             TCP
LocalPort:                            3389
RemotePort:                           Any
Edge traversal:                       No
Action:                               Allow
Ok.

输出如下netsh advfirewall show currentprofile

Domain Profile Settings:
----------------------------------------------------------------------
State                                 ON
Firewall Policy                       BlockInbound,AllowOutbound
LocalFirewallRules                    N/A (GPO-store only)
LocalConSecRules                      N/A (GPO-store only)
InboundUserNotification               Enable
RemoteManagement                      Disable
UnicastResponseToMulticast            Enable

Logging:
LogAllowedConnections                 Enable
LogDroppedConnections                 Enable
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log
MaxFileSize                           4096


Public Profile Settings:
----------------------------------------------------------------------
State                                 ON
Firewall Policy                       BlockInbound,AllowOutbound
LocalFirewallRules                    N/A (GPO-store only)
LocalConSecRules                      N/A (GPO-store only)
InboundUserNotification               Enable
RemoteManagement                      Disable
UnicastResponseToMulticast            Enable

Logging:
LogAllowedConnections                 Disable
LogDroppedConnections                 Disable
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log
MaxFileSize                           4096

Ok.

但是我可以很好地与这台计算机建立远程桌面连接。实际上,如果我的问题发生在存在 virtualbox 适配器的任何时候,那么安装了 virtualbox 的任何人都无法远程进入他们的计算机,所以这肯定是一个尚未确定的特殊情况。

所以问题仍然存在,Windows 如何处理多个网络连接的多个不同配置文件?我原来的问题机器和我工作的机器之间有什么不同?它是否像我的第一台机器那样选择最不安全的配置文件并将其应用于所有网络流量,还是像我的第二台机器那样为每个适配器分别应用一个配置文件?如果我发现这个问题的答案,我会编辑这篇文章。同时,至少我有一个解决问题的方法!

相关内容