Способ 1
Один из способов решения этой проблемы в критически важной системе Windows Server в одной среде, которую я поддерживаю, заключался в пакетном сценарии, который использует Set-NetConnectionProfile и netsh, и явно устанавливал для каждого доверенного сетевого адаптера / адаптера на компьютере значение private при запуске системы с помощью Планировщик заданий, использующий Run whether user is logged on or not
и параметр « Run with highest privileges
.
Примечание. Хотя в примечании к награде говорится:« Решение не должно вызывать потерю возможности подключения к сети », я хотел бы упомянуть, что, поскольку при возникновении этой проблемы у вас все равно возникает сбой в сети, этот сценарий запускается, если проблема возникает случайно, когда система не перезагружается, если просто запустить этот же сценарий, он все равно быстро решит проблему и вернет сетевой доступ к машине ОС в рабочем и ожидаемом порядке.
Кроме того, вы можете использовать Get-NetConnectionProfile, чтобы получить псевдонимы NIC и номера индексов для включения в приведенный ниже пример пакета сценария для ваших нужд и / или систем.
Пакетный скрипт
@ECHO ON
::: The below PowerShell will set all the nework adapters to private rather than public and unknown as happens.
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 12 -NetworkCategory Private>>"%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 20 -NetworkCategory Private>>"%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 22 -NetworkCategory Private>>"%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 24 -NetworkCategory Private>>"%PSScript%"
:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
:: The below will disable and then re-enable each NIC one-by-one so the unidentfied goes away after set to "private" above
:ResetNICs
SET Array="Ethernet", "Ethernet 2", "Ethernet 3", "Ethernet 4"
FOR %%A IN (%Array%) DO (
netsh int set int "%%~A" admin=disable
netsh int set int "%%~A" admin=enable
)
EXIT
Ниже приведены несколько других методов, с одним из многих, что вы пробовали, но я оставил его там для других, которые сталкиваются с этим постом на случай, если он им поможет, но это несколько способов предотвратить это полностью, возможно, но есть Всегда будьте плюсы и минусы любого метода, который вы выберете, так что выбирайте яд и тестируйте соответственно.
Метод 2 (несколько методов)
Если NLA не может определить местоположение соединения, оно называет его "Неопознанный" и помечает местоположение как Публичное. Он выбирает Public, потому что это наиболее безопасно, и вы не захотите ничего меньше, если соединение находится в DMZ.
Есть два простых способа это исправить. Один использует Локальную Политику Безопасности, чтобы изменить местоположение по умолчанию неопознанных сетей. Второй метод использует изменение свойств сетевого подключения, чтобы дать NLA информацию, необходимую для правильного размещения местоположения.
Использование локальной политики безопасности
Предостережение. Это следует использовать только в том случае, если компьютер никогда не будет подключен к общедоступной локальной сети. В противном случае вы рискуете применить к общедоступному соединению менее безопасный профиль брандмауэра.
Откройте « Локальная политика безопасности ».
Нажмите « Политики диспетчера списка сетей » на левой панели. (Этот выбор похоронен в более старых версиях Windows.)
Дважды щелкните « Неопознанные сети » на правой панели.
Для компьютеров, которые существуют только в частной сети, можно установить « Тип местоположения » на « Частный ».
Использование свойств сетевого подключения
Речь идет не о добавлении IP-адреса шлюза, поскольку он не работает должным образом на многосетевом сервере. Вместо этого мы добавим DNS-суффикс, чтобы NLA мог правильно найти контроллер домена, который, как он знает, помечает местоположение как "Доменная сеть".
Перейдите в раздел Сетевые подключения (в Центре управления сетями и общим доступом нажмите "Изменить настройки адаптера".)
Перейдите к свойствам одного сетевого подключения, помеченного как « Неопознанный », но в частной локальной сети.
Перейдите в свойства для IPv4.
Нажмите кнопку « Дополнительно...».
Выберите вкладку DNS.
Введите свое доменное имя в текстовое поле для « DNS-суффикс для этого соединения: ».
Отключите и затем включите соединение, чтобы заставить NLA повторно идентифицировать местоположение. После включения соединения Статус должен измениться на доменное имя и категорию сети на "Доменная сеть". В зависимости от настроек может потребоваться "исправить" только одно соединение, чтобы все связанные соединения могли видеть домен.
Переход от частного к общему
Существует два распространенных способа заставить NLA пометить соединение как общедоступное.
Одним из них является использование правила брандмауэра для блокировки NLA, чтобы у него не было выбора, кроме как использовать местоположение по умолчанию. Другой - использовать реестр для отключения NLA в соединении.
Использование брандмауэра
Я не проверял это, но теория кажется обоснованной.
Откройте « Брандмауэр Windows в режиме повышенной безопасности » (например, wf.msc
).
Перейти к исходящим правилам.
Нажмите на « Новое правило …».
Используйте эти настройки:
- Тип правила: Пользовательский
- Программа: Выберите "Все программы", а затем нажмите «Настроить…». Выберите "Информация о расположении сети" (короткое имя NlaSvc).
- Протокол и порты: Тип протокола = Любой.
- Область: Локальные IP-адреса = Введите все ваши публичные IP-адреса. Дважды проверьте соединения с несколькими IP-адресами.
- Действие: Блок
- Профиль: Все
Как только правило включено, отключите и затем включите сетевое соединение, чтобы заставить NLA повторно идентифицировать местоположение.
Использование реестра
У меня не было этой работы для меня, но мои обстоятельства могут отличаться от ваших. Поиск правильного номера соединения немного ударил или пропустил, так как записей намного больше, чем вы ожидаете.
Запустите regedit
Перейдите в HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
Внизу вы должны увидеть несколько клавиш, помеченных 0000, 0001, 0002 и т.д. Просмотрите их и найдите адаптеры, где вы хотите отключить NLA.
Для каждого из адаптеров добавьте новое значение DWORD с именем "* NdisDeviceType" и установите для него значение 1 (убедитесь, что вы получите * в начале имени).
Получать радикальные
Профили местоположения размещаются в реестре, и, кажется, безвредно удалить их и позволить Windows перестроить их. Вы определенно захотите сделать резервную копию реестра в первую очередь, и вам, вероятно, нужно будет подключиться к серверу через KVM, а не удаленно (RDP). Я не буду брать на себя никакой ответственности, если вы выберете этот шаг, поскольку я в первую очередь ставлю его здесь для справки.
Расположение профилей:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
источник