Установите для будущих сетевых подключений частное местоположение вместо общедоступного по умолчанию

Установите для будущих сетевых подключений частное местоположение вместо общедоступного по умолчанию

Можно ли в Windows Server 2012 и 2012R2 настроить будущие сетевые подключения на использование профиля частного брандмауэра вместо профиля по умолчанию публичного?

Я пробовал сделать все сетевые элементы частными в secpol.msc-> Параметры безопасности -> Политики диспетчера списка сетей, но когда я подключаюсь к новой сети, она по умолчанию всегда становится публичной.

В качестве альтернативы, есть ли способ снова включить диалоговое окно "Установить сетевое расположение", которое представлено в несерверных версиях Windows. Это, по крайней мере, помогло бы облегчить проблему.

решение1

Эта "функция" безопасности является намеренной. Серверы в "новой" или "нераспознанной" сети по умолчанию будут использовать публичный профиль. Поскольку он не находится в доменном профиле, не является DC и DNS-поиск (для идентификации сети) не работает, он определяет сеть, в которой вы находитесь, как "Неизвестную" сеть и, таким образом, по умолчанию использует "публичный" профиль.

Эту проблему можно обойти, присоединив сервер к домену, и тогда сетевое расположение будет установлено на «Сеть домена». Хотя это решение может быть не идеальным или даже невозможным для вас, если вы постоянно подключаетесь к «новым» сетям.

Если вы находитесь в доверенной сети и это происходит или этот сервер является контроллером домена, настройка службы «Определение сетевого местоположения» на отложенный запуск решит эту проблему.

Если ваш сервер «перемещается» по разным сетям или контроллер домена отсутствует, вы можете запустить следующий скрипт 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».

Связанный контент