Evite que Windows NLA detecte repetidamente la red local como una red nueva no identificada

14

Estoy administrando una red de pequeñas empresas con varias PC con Windows 10 y 7. De manera intermitente pero con bastante frecuencia, los usuarios se quejan de que ya no pueden acceder a las carpetas compartidas con otros compañeros de trabajo. La solución rápida de problemas determina que el problema se debe a la infame "Red no identificada detectada" que luego aplica el perfil de red "Público" en lugar del perfil de red "Privado", por lo que el uso compartido de archivos / grupos en el hogar, etc. no funciona. Desde mi búsqueda, este es un problema común para muchos usuarios. No veo ninguna solución propuesta que funcione.

Ambiente:

  • Todas las PC con Windows están conectadas a través de Ethernet por cable (aunque pueden tener una NIC Wifi)
  • Todos están conectados a un conmutador administrado Avaya L2 de 48 puertos, todos en la misma subred 10.10.10.x
  • El interruptor está conectado a un enrutador doméstico Asus RTN-66U
  • El enrutador Asus se conecta al módem de cable
  • El enrutador Asus proporciona DHCP a máquinas con Windows
  • He configurado el enrutador con reservas DHCP para cada PC con Windows, es decir, las PC siempre obtienen la misma dirección IP en el arranque
  • Sin controlador de dominio

Problema:

Aunque he configurado todos los perfiles de red activos de las máquinas con Windows = Privado, con frecuencia (cada dos semanas más o menos) vuelven a Público, lo que impide compartir archivos, etc.

Arreglos intentados:

En cada PC con Windows he modificado la Política de grupo local Computer Configuration->Security Settings->Network List Manager Policies:

  • Redes no identificadas = Privadas
  • Identificar redes = privadas

Observaciones:

Creo que el problema es que el servicio de reconocimiento de ubicación de red de Windows (NLA) está detectando una nueva red que hace que se cree un nuevo perfil de red que luego se configura de manera predeterminada en Público (aunque anteriormente he configurado la Política de grupo local para que sea Privada) . Muchas de las computadoras muestran que Windows ha detectado una nueva red no identificada muchas veces, es decir, muestran "Red 14", es decir, hay 14 perfiles de red diferentes. Veo estos varios perfiles en la revisión de los perfiles aquí en el Registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Los 14 perfiles son cuando la computadora estaba realmente conectada a la misma red descrita anteriormente.

No he podido encontrar un recurso que describa exactamente cómo NLA genera un identificador único para una red y, por lo tanto, por qué podría detectar que ha descubierto una nueva red.

Pregunta:

¿Cómo evito que Windows identifique incorrectamente mi red local como una red nueva? ¿Quizás ayudaría si supiera qué pasos sigue NLA para generar un identificador único para una red?

PaulH
fuente
1
Edité su pregunta un poco para ayudar a centrarla en preguntar sobre cómo resolver el problema real. Ver problema XY .
Digo reinstalar a Mónica el
NLA identifica una red basada en la dirección MAC de la puerta de enlace predeterminada especificada para ese adaptador de red. ¿Es posible que su enrutador se haya vuelto inaccesible para estas computadoras? ¿Parece que el problema afecta a varias computadoras en un corto período de tiempo, o es solo un usuario un día, luego otro usuario en un momento completamente diferente?
Digo reinstalar a Mónica el
Quizás mire Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged o al menos alrededor de esa ubicación en el registro, y vea si DefaultGatewayMAC y DNSSuffix coinciden con lo que espera
Ross
PaulH - Mira mi respuesta cuando tengas un momento, esto es lo que he usado con bastante éxito en un entorno de producción como lo puse en la sección Método 1 , pero también proporcioné más detalles con la sección Método 2 de mi respuesta. Espero que encuentre estas soluciones tan útiles como yo para este problema.
Pimp Juice IT

Respuestas:

5

Método 1

Una forma en que he tratado este problema en un sistema crítico de Windows Server en un entorno que mantengo fue con un script por lotes que usa Set-NetConnectionProfile y netsh , y configuró explícitamente cada NIC / adaptador de confianza en la máquina como privado al inicio del sistema con Programador de tareas usando Run whether user is logged on or noty Run with highest privilegesopción.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Nota: Si bien la nota de recompensa dice " La solución no debe causar la pérdida de conectividad de red para implementar " Quería mencionar que, cuando ocurre este problema, hay una interrupción de la red de todos modos, que ejecutar este script si el problema ocurre al azar cuando el sistema está no reinicié que simplemente ejecutando este mismo script, aún así se resolverá rápidamente el problema y se obtendrá el acceso a la red de la máquina del sistema operativo en el orden de trabajo y esperado.

Además, puede usar el Get-NetConnectionProfile para obtener los nombres de alias de NIC y los números de índice para colocarlos en el script por lotes de ejemplo a continuación para sus necesidades y / o sistemas.

Script por lotes

@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

A continuación se presentan algunos otros métodos, uno de los muchos es lo que ha intentado, pero lo dejé allí para otros que se encuentran con esta publicación en caso de que los ayude, pero estas son algunas formas de evitar esto por completo, pero hay siempre tendrá ventajas y desventajas con cualquier método que elija, así que elija su veneno y pruebe en consecuencia.

Método 2 (métodos múltiples)

Red no identificada - Mover de público a privado o dominio

Si NLA no puede determinar la ubicación de una conexión, la nombra "No identificada" y marca la ubicación como Pública. Elige Público porque es más seguro y no querría nada menos si la conexión está en la DMZ.

Hay dos formas fáciles de solucionar esto. Uno usa la Política de seguridad local para cambiar la ubicación predeterminada de las redes no identificadas. El segundo método utiliza un cambio en las propiedades de conexión de red para darle a NLA la información que necesita para ubicar adecuadamente la ubicación.

Uso de la política de seguridad local

Precaución: Esto solo debe usarse si la computadora nunca tendrá conexiones en la LAN pública. De lo contrario, corre el riesgo de tener un perfil de firewall menos seguro aplicado a su conexión pública.

  1. Abra la " Política de seguridad local ".

  2. Haga clic en " Políticas de Network List Manager " en el panel izquierdo. (Esta selección está oculta en versiones anteriores de Windows).

  3. Haga doble clic en " Redes no identificadas " en el panel derecho.

  4. Para las computadoras que solo existen en la red privada, está bien establecer " Tipo de ubicación " en " privado ".

    ingrese la descripción de la imagen aquí

Usar propiedades de conexión de red

No se trata de agregar una puerta de enlace IP, ya que eso no funciona correctamente en un servidor de alojamiento múltiple. En su lugar, agregaremos un sufijo DNS para que NLA pueda ubicar adecuadamente el controlador de dominio, que es cómo sabe marcar la ubicación como "Red de dominio".

  1. Vaya a Conexiones de red (desde el Centro de redes y recursos compartidos, haga clic en "Cambiar la configuración del adaptador").

  2. Vaya a las propiedades de una conexión de red marcada como " No identificada " pero en la LAN privada.

  3. Vaya a las propiedades de IPv4 .

  4. Haga clic en el botón " Avanzado ...".

  5. Seleccione la pestaña DNS .

  6. Ingrese su nombre de dominio en el cuadro de texto para " Sufijo DNS para esta conexión: ".

Deshabilite y luego habilite la conexión para que NLA vuelva a identificar la ubicación. Después de habilitar la conexión, el Estado debería cambiar al nombre de dominio y la Categoría de red a "Red de dominio". Dependiendo de su configuración, es probable que solo necesite "arreglar" una conexión para obtener todas las conexiones relacionadas para ver el dominio.

Pasar de privado a público

Hay dos formas comunes de obligar a NLA a marcar una conexión como pública. Una es usar una regla de firewall para bloquear NLA para que no tenga más remedio que usar la ubicación predeterminada. El otro es usar el registro para deshabilitar NLA en la conexión.

Usando el cortafuegos

No he probado esto, pero la teoría parece sólida.

  1. Abra " Firewall de Windows con seguridad avanzada " (es decir wf.msc).

  2. Ir a las reglas de salida .

  3. Haga clic en " Nueva regla ...".

  4. Use esta configuración:

    • Tipo de regla: personalizada
    • Programa: Seleccione "Todos los programas" y luego haga clic en "Personalizar ...". Seleccione "Conocimiento de ubicación de red" (el nombre corto es NlaSvc).
    • Protocolo y puertos: Tipo de protocolo = Cualquiera.
    • Alcance: IP locales = Ingrese todas sus IP públicas. Verifique dos veces las conexiones con múltiples IP.
    • Acción: bloque
    • Perfil: Todos
  5. Una vez que se habilita la regla, deshabilite y luego habilite la conexión de red para que NLA vuelva a identificar la ubicación.

Usando el registro

No he tenido este trabajo para mí, pero mi circunstancia puede ser diferente a la suya. Encontrar el número de conexión correcto es un poco impredecible, ya que hay muchas más entradas de las que cabría esperar.

  1. Ejecute regedit

  2. Ir HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. Debajo, debería ver varias teclas con la etiqueta 0000, 0001, 0002, etc ... Mire a través de estas y encuentre los adaptadores donde desea desactivar NLA.

  4. Para cada uno de los adaptadores, agregue un nuevo valor DWORD llamado "* NdisDeviceType" y configúrelo en 1 (asegúrese de obtener el * al comienzo del nombre).

Poniéndose drástico

Los perfiles de ubicación se encuentran en el registro y parece inofensivo eliminarlos y dejar que Windows los reconstruya. Definitivamente, querrá hacer una copia de seguridad del registro primero y es probable que necesite estar conectado al servidor a través de KVM en lugar de a distancia (RDP). No asumiré ninguna responsabilidad si eliges este paso, ya que principalmente lo pongo aquí como referencia.

La ubicación de los perfiles es:

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

fuente

Pimp Juice IT
fuente
El primer método parece prometedor. No estoy seguro sobre los otros métodos que implican reiniciar el servicio NLA porque eso siempre soluciona el problema de todos modos, lo que dificulta saber si reiniciar el servicio fue la solución o la otra acción. Ahora solo necesito una máquina que esté haciendo esto mal para probar ...
Digo Reinstate Monica
@TwistyImpersonator Sí, el método 1 es el método que utilicé y solo lo ejecuté como inicio. En este caso, es un servidor host virtual Hyper-V con 4 NIC y garantizar que se ejecute como inicio hasta ahora me ha resuelto el problema con ese sistema en particular. Creo que hubo otra ocasión debido a un interruptor de red o reinicio del enrutador y, en lugar de reiniciar el servidor host virtual, simplemente ejecuté el script manualmente y resolvió el problema. Noté la pregunta y publiqué la solución que he usado y el otro recurso citado que parecía relevante y potencialmente útil.
Pimp Juice IT
Me di cuenta de que pusiste la recompensa, pero supongo que no me di cuenta de que era por tu necesidad en lugar de solo tratar de obtener una respuesta del OP. Eso también es bueno saberlo.
Pimp Juice IT
0

Tuve este problema infinitamente en un solo sistema específico. Rompería todo en cada reinicio. Probé todas las soluciones que mencionaste. Después de agotar todo lo demás, recurrí a deshabilitar el servicio "Conocimiento de ubicación de red". Por lo que puedo decir, no es necesario. Esto ha resuelto permanentemente mi problema. El único efecto secundario que he notado es que la ventana "Centro de redes y recursos compartidos" parece divertida. Este servicio no existía antes de Windows 7 y no me sirve para nada.

Services.msc

"Conocimiento de ubicación de red", Tipo de inicio = "Deshabilitado"

HackSlash
fuente
Hmmm, no estoy seguro de que sea una buena idea en un entorno de dominio ... o cuando se toma una computadora portátil entre redes confiables y no confiables. ¿Algún comentario sobre cualquiera de esos escenarios?
Digo reinstalar a Mónica el
Estoy haciendo esto en mi entorno de dominio. Funciona genial. Si está utilizando su computadora portátil en un entorno no confiable, debe tener otras protecciones. NLA no te salvará. Todo lo que podría hacer es deshabilitar los recursos compartidos automáticamente. Sugeriría no permitir ningún recurso compartido en computadoras portátiles.
HackSlash
Sin NLA, ¿cómo cambian sus sistemas entre el dominio y los perfiles privados, por ejemplo, cuando un empleado se lleva una computadora portátil a casa?
Digo reinstalar a Mónica el
Sin NLA no hay perfiles en absoluto. ¿Para qué estás usando estos perfiles?
HackSlash
Muchos de los sistemas que administro permiten el tráfico entrante cuando están conectados a la red de dominio, pero dicho tráfico se bloquea cuando los sistemas abandonan el dominio. Es cómo implementamos la defensa en profundidad ... los puertos solo se abren donde es necesario y se cierran en cualquier otro lugar.
Digo reinstalar a Mónica el