所以我有一个小型实验室,里面有 2 个 DC,都运行 Server 2019 Core。我创建了一个包含一些防火墙规则的 GPO,并将其链接到域的顶部,应用于所有设备,包括两个 DC。
DC1 当前仍拥有所有 FSMO 角色,已收到策略,但规则未生效
DC2 已收到策略且所有规则均处于活动状态。
我终其一生都无法弄清楚为什么一个 DC 正确应用了规则而另一个却没有。我可以导航到注册表并查看两个 DC 上的防火墙规则,在 RSOP 中,它显示计算机肯定正在接收策略并对其进行解析,我甚至可以在 PowerShell 中搜索规则时看到它们,但是...然后在比较两个 DC 时会有所不同:
DC1(不适用规则):
EnforcementStatus Name Profile PrimaryStatus
----------------- ---- ------- -------------
ProfileInactive ComPlusNetworkAccess-DCOM-In Domain Inactive
{ProfileInactive, Enforced} RemoteDesktop-UserMode-In-UDP Any OK
{ProfileInactive, Enforced} RemoteDesktop-UserMode-In-TCP Any OK
ProfileInactive RemoteEventLogSvc-RPCSS-In-TCP Domain Inactive
ProfileInactive RemoteEventLogSvc-NP-In-TCP Domain Inactive
ProfileInactive RemoteEventLogSvc-In-TCP Domain Inactive
ProfileInactive RVM-RPCSS-In-TCP Domain Inactive
ProfileInactive RVM-VDSLDR-In-TCP Domain Inactive
ProfileInactive RVM-VDS-In-TCP Domain Inactive
ProfileInactive ComPlusRemoteAdministration-DCOM-In Domain Inactive
ProfileInactive WMI-ASYNC-In-TCP Domain Inactive
ProfileInactive WMI-WINMGMT-In-TCP Domain Inactive
ProfileInactive WMI-RPCSS-In-TCP Domain Inactive
ProfileInactive RemoteTask-RPCSS-In-TCP Domain Inactive
ProfileInactive RemoteTask-In-TCP Domain Inactive
而在 DC2 上它们看起来像这样:
EnforcementStatus Name Profile PrimaryStatus
----------------- ---- ------- -------------
Enforced ComPlusNetworkAccess-DCOM-In Domain OK
{ProfileInactive, Enforced} RemoteDesktop-UserMode-In-UDP Any OK
{ProfileInactive, Enforced} RemoteDesktop-UserMode-In-TCP Any OK
Enforced RemoteEventLogSvc-RPCSS-In-TCP Domain OK
Enforced RemoteEventLogSvc-NP-In-TCP Domain OK
Enforced RemoteEventLogSvc-In-TCP Domain OK
Enforced RVM-RPCSS-In-TCP Domain OK
Enforced RVM-VDSLDR-In-TCP Domain OK
Enforced RVM-VDS-In-TCP Domain OK
Enforced ComPlusRemoteAdministration-DCOM-In Domain OK
Enforced WMI-ASYNC-In-TCP Domain OK
Enforced WMI-WINMGMT-In-TCP Domain OK
Enforced WMI-RPCSS-In-TCP Domain OK
Enforced RemoteTask-RPCSS-In-TCP Domain OK
Enforced RemoteTask-In-TCP Domain OK
简而言之,通过 GPO 应用于 DC1 的所有规则都处于“非活动”状态,并将强制状态显示为“ProfileInactive” - 这表明域配置文件已被禁用,但事实并非如此 - 所有防火墙配置文件都在两个 DC 上启用,当然也有一些自定义(域配置文件)规则由 DCPromo 启用,因此该配置文件必须启动并运行,但这里是从两个 DC 开始的
DC1:
Name : Domain
Enabled : True
DefaultInboundAction : NotConfigured
DefaultOutboundAction : NotConfigured
AllowInboundRules : NotConfigured
AllowLocalFirewallRules : NotConfigured
AllowLocalIPsecRules : NotConfigured
AllowUserApps : NotConfigured
AllowUserPorts : NotConfigured
AllowUnicastResponseToMulticast : NotConfigured
NotifyOnListen : False
EnableStealthModeForIPsec : NotConfigured
LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log
LogMaxSizeKilobytes : 4096
LogAllowed : False
LogBlocked : False
LogIgnored : NotConfigured
DisabledInterfaceAliases : {NotConfigured}
数据中心2:
Name : Domain
Enabled : True
DefaultInboundAction : NotConfigured
DefaultOutboundAction : NotConfigured
AllowInboundRules : NotConfigured
AllowLocalFirewallRules : NotConfigured
AllowLocalIPsecRules : NotConfigured
AllowUserApps : NotConfigured
AllowUserPorts : NotConfigured
AllowUnicastResponseToMulticast : NotConfigured
NotifyOnListen : False
EnableStealthModeForIPsec : NotConfigured
LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log
LogMaxSizeKilobytes : 4096
LogAllowed : False
LogBlocked : False
LogIgnored : NotConfigured
DisabledInterfaceAliases : {NotConfigured}
有谁知道问题可能出在哪里吗?
答案1
在 DC1 上的网络设置中,您是否连接到域配置文件?设置 -> 网络和 Internet -> 网络和共享中心 -> 更改高级共享设置 -> 确保域是当前配置文件。
答案2
KB162 是正确的,因为 DC1 认为它位于公共网络位置而不是域中。
至于原因……
那么 NlaSvc(网络位置服务)服务负责确定设备的网络位置。为了做到这一点,它依赖于(可能还有其他)DNS。
该 DC 的 NIC 有 2 个 DNS 条目,如下所示(按此顺序):
- 127.0.0.1
- DC2
DNS 服务在 NLA 服务之后启动,导致服务器认为它位于公共位置。尽管 DC2 也有 127.0.0.1 作为第一个 DNS 服务器,但它没有遇到这些问题,这意味着发生了竞争条件,并且 DC1 可能并不总是受到此问题的影响。
一些研究显示了几个可能的解决方案:
- 将 NlaSvc 设置为自动(延迟启动)
- 为 NlaSvc 添加 DNS 依赖
- 将 DNS 服务器顺序更改为首先转到其他 DC,然后再转到其自身。
第一种方案不一定能解决问题,因为这是一个竞争条件,而且我们不知道 DNS 服务器需要多长时间才能启动。它很可能总能解决问题,但我认为我们不能 100% 肯定地保证这种情况永远不会再发生。
第二种选择有点像黑客攻击,我认为它不受支持,甚至可能是微软在更新期间更改了这些值,只是无法确定。
至于第三个选项……虽然它在至少其中一个 DC 处于启动状态的情况下解决了问题,但当两个 DC 都处于关闭状态时,它仍然会出现问题:第一个要启动的 DC 将查看另一个 DC 的 DNS,它不会回复,NlaSvc 将网络位置设置为公共,DNS 服务启动,NlaSvc 不再更改它。不过,启动第二个 DC 会没问题。
我认为我会选择第一个选项,因为它可以说提供了最好的支持,并且可以从那里进行监控。
感谢 KB162 帮助我找到这个解决方案。