將未來的網路連線設定為專用位置,而不是預設為公共位置

將未來的網路連線設定為專用位置,而不是預設為公共位置

在 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 腳本”

相關內容