Pare o Windows NLA de detectar repetidamente a rede local como uma nova rede não identificada

11

Estou gerenciando uma rede de pequena empresa com vários PCs com Windows 10 e 7. De forma intermitente, mas com bastante frequência, os usuários reclamam que não podem mais acessar pastas compartilhadas com outros colegas de trabalho. A solução rápida de problemas determina que o problema se deve à infame "Rede não identificada detectada", que aplica o perfil de rede "Público" em vez do perfil de rede "Particular", portanto, o grupo doméstico / compartilhamento de arquivos etc. não funciona. Da minha pesquisa, esse é um problema comum para muitos usuários. Não vejo nenhuma solução proposta que funcione.

Ambiente:

  • Todos os PCs com Windows estão conectados via Ethernet com fio (embora eles possam ter uma placa de rede Wi-Fi)
  • Eles estão todos conectados a um switch gerenciado Avaya L2 de 48 portas, todos na mesma sub-rede 10.10.10.x
  • O switch está conectado a um roteador doméstico Asus RTN-66U
  • O roteador Asus se conecta ao modem a cabo
  • O roteador Asus fornece DHCP para máquinas Windows
  • Eu configurei o roteador com reservas DHCP para cada PC com Windows, ou seja, os PCs sempre obtêm o mesmo endereço IP na inicialização
  • Nenhum controlador de domínio

Problema:

Apesar de eu ter configurado todos os perfis de rede ativos das máquinas Windows = Private, eles freqüentemente (a cada duas semanas aproximadamente) retornam ao Public, o que impede o compartilhamento de arquivos, etc.

Correções tentadas:

Em cada PC com Windows, modifiquei a Diretiva de Grupo Local Computer Configuration->Security Settings->Network List Manager Policies :

  • Redes não identificadas = Particular
  • Identificando redes = Particular

Observações:

Acredito que o problema é que o serviço NLA (Windows Network Location Awareness) está detectando uma nova rede que faz com que um novo perfil de rede seja criado, que por padrão é Público (mesmo que acima eu configurei a Diretiva de Grupo Local como padrão para Particular). Muitos dos computadores mostram que o Windows detectou uma nova rede não identificada muitas vezes, ou seja, eles mostram a "Rede 14", ou seja, há 14 perfis de rede diferentes. Eu vejo esses vários perfis ao revisar os perfis aqui no Registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles .

Todos os 14 perfis são quando o computador estava realmente conectado à mesma rede descrita acima.

Não consegui encontrar um recurso que descreva exatamente como o NLA gera um identificador exclusivo para uma rede e, portanto, por que ele pode detectar que descobriu uma nova rede.

Pergunta:

Como evito que o Windows identifique incorretamente minha rede local como uma nova rede? Talvez ajudasse se eu soubesse quais os passos que o NLA segue para gerar um identificador único para uma rede?

    
por PaulH 07.01.2018 / 15:55

2 respostas

4

Método 1

Uma forma de lidar com esse problema em um sistema Windows Server crítico em um ambiente que eu mantive foi com um script em lote que usa Set-NetConnectionProfile e netsh , e defina explicitamente cada NIC / adaptador confiável na máquina como private na inicialização do sistema com Agendador de Tarefas usando a opção Run whether user is logged on or not e Run with highest privileges .

Observação:Emboraanotaderecompensaindique" A solução não deve causar perda de conectividade de rede para implementar " Eu queria mencionar que, quando esse problema ocorre, você tem um Se o problema ocorrer de maneira aleatória quando o sistema não for reinicializado e simplesmente executar esse mesmo script, ele ainda resolverá rapidamente o problema e recuperará o acesso à rede do sistema operacional na ordem de trabalho esperada.

Além disso, você pode usar o Get-NetConnectionProfile para obter os nomes de alias da NIC e números de índice para colocar no script de lote de exemplo abaixo para suas necessidades e / ou sistemas.

Script em lote

@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

Abaixo estão alguns outros métodos, com um dos muitos sendo o que você tentou, mas deixei-o lá para os outros que se deparam com este post, no caso de ajudá-los, mas estas são algumas maneiras de evitar isso totalmente, talvez mas sempre haverá vantagens e desvantagens em qualquer método que você escolher, então escolha seu veneno e teste de acordo.

Método 2 (Múltiplos Métodos)

Unidentified Network - Move from Public to Private or Domain

If NLA can't determine a connections location, it names it "Unidentified" and marks the location as Public. It chooses Public because that is most secure and you wouldn’t want anything less if the connection is on the DMZ.

There are two easy ways to fix this. One uses the Local Security Policy to change the default location of unidentified networks. The second method uses a change to the network connection properties to give NLA the information it needs to properly place the location.

Using Local Security Policy

Caution: This should only be used if the computer will never have any connections on the Public LAN. Otherwise, you run the risk of having a less secure firewall profile applied to your public connection.

  1. Open "Local Security Policy".

  2. Click on "Network List Manager Policies" in the left pane. (This selection is buried in older versions of Windows.)

  3. Double-click on "Unidentified Networks" in the right pane.

  4. For computers that only exist on the private network, it is OK to set "Location type" to "private".

    enter image description here

Using Network Connection Properties

This is not about adding a gateway IP as that doesn’t work properly on a multi-homed server. Instead we will be adding a DNS suffix so that NLA can properly locate the domain controller which is how it knows to mark the location as “Domain network”.

  1. Go to Network Connections (from the Network and Sharing Center, click on "Change adapter settings".)

  2. Go to the properties of one network connection marked as "Unidentified" but on the private LAN.

  3. Go to the properties for IPv4.

  4. Click the "Advanced..." button.

  5. Select the DNS tab.

  6. Enter your domain name into the text box for "DNS suffix for this connection:".

Disable and then enable the connection to get NLA to re-identify the location. After enabling the connection, the Status should change to the domain name and Network Category to "Domain network". Depending on your setup, it is likely that you only need to "fix" one connection to get all the related connections to see the domain.

Move from Private to Public

There are two common ways to force NLA to mark a connection as public. One is to use a firewall rule to block NLA so that it has no choice but to use the default location. The other is to use the registry to disable NLA on the connection.

Using the Firewall

I haven’t tested this but the theory seems sound.

  1. Open "Windows Firewall with Advanced Security" (i.e wf.msc).

  2. Go to Outbound rules.

  3. Click on "New Rule…".

  4. Use these settings:

    • Rule Type: Custom
    • Program: Select "All programs" and then click on "Customize…". Select "Network Location Awareness" (short name is NlaSvc).
    • Protocol and Ports: Protocol type = Any.
    • Scope: Local IPs = Enter all your public IPs. Double-check for connections with multiple IPs.
    • Action: Block
    • Profile: All
  5.   
  6. Quando a regra for ativada, desative e ative a conexão de rede para obter o NLA para reidentificar o local.

  7.   

Usando o registro

     

Eu não tive esse trabalho para mim, mas minha circunstância pode ser diferente da sua. Encontrar o número de conexão correto é um pouco   acertar ou errar, pois há muito mais entradas do que você esperaria.

     
  1. Execute o regedit

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

  4.   
  5. Abaixo você deve ver várias teclas rotuladas como 0000, 0001, 0002, etc ... Olhe através delas e encontre os adaptadores onde você deseja   desabilitar o NLA.

  6.   
  7. Para cada um dos adaptadores, adicione um novo valor DWORD chamado "* NdisDeviceType" e defina-o como 1 (certifique-se de obter o * no   início do nome).

  8.   

Como drástica

     

Os perfis de localização estão alojados no registro e parece inofensivo   para excluí-los e permitir que o Windows os reconstrua. Você definitivamente vai querer   para fazer o backup do registro primeiro e você provavelmente precisará estar conectado   para o servidor via KVM em vez de remoto (RDP). Eu não vou tomar nenhum   responsabilidade se você escolher este passo como eu estou colocando principalmente este   aqui para referência.

     

A localização dos perfis é:

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

fonte

    
por 12.01.2018 / 18:21
0

Eu tive esse problema infinitamente em apenas um sistema específico. Isso quebraria tudo a cada reinicialização. Eu tentei todas as soluções que você mencionou. Depois de esgotar todo o resto, recorri a desabilitar o serviço "Network Location Awareness". Pelo que posso dizer, não é necessário. Isso resolveu meu problema permanentemente. O único efeito colateral que notei é que a janela "Network and Sharing Center" parece engraçada. Este serviço não existia antes do Windows 7 e não é útil para mim.

Services.msc

"Network Location Awareness", Startup Type = "Disabled"

    
por 15.01.2018 / 18:51