12

Я управляю сетью малого бизнеса с несколькими ПК с Windows 10 и 7. Периодически, но довольно часто пользователи жалуются, что они больше не могут получить доступ к общим папкам с другими коллегами. Быстрое устранение неполадок определяет, что проблема связана с печально известной "Обнаружена неопознанная сеть", которая затем применяет "общедоступный" сетевой профиль вместо "частного" сетевого профиля, поэтому домашняя группа / общий доступ к файлам и т.д. Не работает. Из моих поисков это общая проблема для многих пользователей. Я не вижу никаких предлагаемых решений, которые работают.

Среда:

  • Все ПК с Windows подключены через проводной Ethernet (хотя они могут иметь Wi-Fi NIC)
  • Все они подключены к 48-портовому управляемому коммутатору Avaya L2, все в одной подсети 10.10.10.x
  • Коммутатор подключен к домашнему маршрутизатору Asus RTN-66U
  • Маршрутизатор Asus подключается к кабельному модему
  • Маршрутизатор Asus обеспечивает DHCP для компьютеров Windows
  • Я настроил маршрутизатор с резервированием DHCP для каждого ПК с Windows, т.е. ПК всегда получают один и тот же IP-адрес при загрузке
  • Нет контроллера домена

Проблема:

Несмотря на то, что я настроил все сетевые профили на всех компьютерах с Windows = частный, они часто (каждые пару недель или около того) возвращаются обратно к общедоступным, что предотвращает обмен файлами и т.д.

Попытки исправить:

На каждом ПК с Windows я изменил конфигурацию компьютера локальной групповой политики- Computer Configuration->Security Settings->Network List Manager Policies:

  • Неопознанные Сети = Частные
  • Идентификация сетей = Частная

Замечания:

Я полагаю, что проблема заключается в том, что служба Windows Network Location Awareness (NLA) обнаруживает новую сеть, в результате чего создается новый профиль сети, который по умолчанию становится общедоступным (даже несмотря на то, что для локальной локальной групповой политики по умолчанию установлено значение "Личная"). , Многие из компьютеров показывают, что Windows обнаруживала новые неопознанные сети много раз, то есть они показывают "Сеть 14", то есть существует 14 различных сетевых профилей. Я вижу эти несколько профилей при просмотре профилей здесь, в реестре:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles .

Все 14 профилей соответствуют фактическому подключению компьютера к той же сети, которая описана выше.

Я не смог найти ресурс, который точно описывает, как NLA генерирует уникальный идентификатор для сети и, следовательно, почему он может обнаружить, что обнаружил новую сеть.

Вопрос:

Как я не позволяю Windows неправильно идентифицировать мою локальную сеть как новую сеть? Возможно, это помогло бы, если бы я знал, какие шаги выполняет NLA для создания уникального идентификатора для сети?

2 ответа2

4

Способ 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 информацию, необходимую для правильного размещения местоположения.

Использование локальной политики безопасности

Предостережение. Это следует использовать только в том случае, если компьютер никогда не будет подключен к общедоступной локальной сети. В противном случае вы рискуете применить к общедоступному соединению менее безопасный профиль брандмауэра.

  1. Откройте « Локальная политика безопасности ».

  2. Нажмите « Политики диспетчера списка сетей » на левой панели. (Этот выбор похоронен в более старых версиях Windows.)

  3. Дважды щелкните « Неопознанные сети » на правой панели.

  4. Для компьютеров, которые существуют только в частной сети, можно установить « Тип местоположения » на « Частный ».

Использование свойств сетевого подключения

Речь идет не о добавлении IP-адреса шлюза, поскольку он не работает должным образом на многосетевом сервере. Вместо этого мы добавим DNS-суффикс, чтобы NLA мог правильно найти контроллер домена, который, как он знает, помечает местоположение как "Доменная сеть".

  1. Перейдите в раздел Сетевые подключения (в Центре управления сетями и общим доступом нажмите "Изменить настройки адаптера".)

  2. Перейдите к свойствам одного сетевого подключения, помеченного как « Неопознанный », но в частной локальной сети.

  3. Перейдите в свойства для IPv4.

  4. Нажмите кнопку « Дополнительно...».

  5. Выберите вкладку DNS.

  6. Введите свое доменное имя в текстовое поле для « DNS-суффикс для этого соединения: ».

Отключите и затем включите соединение, чтобы заставить NLA повторно идентифицировать местоположение. После включения соединения Статус должен измениться на доменное имя и категорию сети на "Доменная сеть". В зависимости от настроек может потребоваться "исправить" только одно соединение, чтобы все связанные соединения могли видеть домен.

Переход от частного к общему

Существует два распространенных способа заставить NLA пометить соединение как общедоступное. Одним из них является использование правила брандмауэра для блокировки NLA, чтобы у него не было выбора, кроме как использовать местоположение по умолчанию. Другой - использовать реестр для отключения NLA в соединении.

Использование брандмауэра

Я не проверял это, но теория кажется обоснованной.

  1. Откройте « Брандмауэр Windows в режиме повышенной безопасности » (например, wf.msc).

  2. Перейти к исходящим правилам.

  3. Нажмите на « Новое правило …».

  4. Используйте эти настройки:

    • Тип правила: Пользовательский
    • Программа: Выберите "Все программы", а затем нажмите «Настроить…». Выберите "Информация о расположении сети" (короткое имя NlaSvc).
    • Протокол и порты: Тип протокола = Любой.
    • Область: Локальные IP-адреса = Введите все ваши публичные IP-адреса. Дважды проверьте соединения с несколькими IP-адресами.
    • Действие: Блок
    • Профиль: Все
  5. Как только правило включено, отключите и затем включите сетевое соединение, чтобы заставить NLA повторно идентифицировать местоположение.

Использование реестра

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

  1. Запустите regedit

  2. Перейдите в HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. Внизу вы должны увидеть несколько клавиш, помеченных 0000, 0001, 0002 и т.д. Просмотрите их и найдите адаптеры, где вы хотите отключить NLA.

  4. Для каждого из адаптеров добавьте новое значение DWORD с именем "* NdisDeviceType" и установите для него значение 1 (убедитесь, что вы получите * в начале имени).

Получать радикальные

Профили местоположения размещаются в реестре, и, кажется, безвредно удалить их и позволить Windows перестроить их. Вы определенно захотите сделать резервную копию реестра в первую очередь, и вам, вероятно, нужно будет подключиться к серверу через KVM, а не удаленно (RDP). Я не буду брать на себя никакой ответственности, если вы выберете этот шаг, поскольку я в первую очередь ставлю его здесь для справки.

Расположение профилей:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

источник

0

У меня была эта проблема бесконечно только на одной конкретной системе. Это сломало бы все при каждой перезагрузке. Я перепробовал все решения, которые вы упомянули. После исчерпания всего остального я прибег к отключению сервиса "Network Location Awareness". Из того, что я могу сказать, это не нужно. Это навсегда решило мою проблему. Единственный побочный эффект, который я заметил, это то, что окно "Центр управления сетями и общим доступом" выглядит забавно. Этот сервис не существовал до Windows 7 и совершенно бесполезен для меня.

Services.msc

"Информация о сетевом расположении", Тип запуска = "Отключено"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .