将未来的网络连接设置为私人位置,而不是默认为公共位置

将未来的网络连接设置为私人位置,而不是默认为公共位置

在 Windows Server 2012 和 2012R2 中,是否可以将未来的网络连接设置为使用私有防火墙配置文件,而不是默认使用公共防火墙配置文件?

我已尝试在“安全设置”->“网络列表管理器策略”中将所有网络项设置为“私有” secpol.msc,但每当我连接新网络时,它总是默认为“公共”。

或者,有没有办法重新启用非服务器版本的 Windows 中显示的“设置网络位置”对话框。这至少有助于缓解这个问题。

答案1

此安全“功能”是设计使然。“新”或“无法识别”网络上的服务器将默认使用公共配置文件。由于它不在域配置文件上,不是 DC,并且 DNS 查找(用于识别网络)失败,因此它将您所在的网络定义为“未知”网络,因此默认使用“公共”配置文件。

您可以通过将服务器加入域来解决此问题,这样做会将网络位置设置为“域网络”。但是,如果您不断连接到“新”网络,此解决方案可能并不理想,甚至不可能。

如果您位于受信任的网络上并且发生这种情况或该服务器是 DC,则将服务“网络位置感知”设置为延迟启动将解决此问题。

如果您的服务器正在“旅行”到不同的网络或不存在 DC,则可以运行以下 powershell 脚本(从windows powershell 团队博客)将所有网络配置文件设置为“私有”:

# Skip network location setting for pre-Vista operating systems
if([environment]::OSVersion.version.Major -lt 6) { return }

# Skip network location setting if local machine is joined to a domain.
if(1,3,4,5 -contains (Get-WmiObject win32_computersystem).DomainRole) { return }

# Get network connections
$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}"))
$connections = $networkListManager.GetNetworkConnections()

# Set network location to Private for all networks
$connections | % {$_.GetNetwork().SetCategory(1)}

如果您想创建一个计划任务来在启动时运行此脚本,这里有一个很好的教程:“使用 Windows 任务计划程序运行 Windows PowerShell 脚本”

相关内容