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


14

Estou gerenciando uma rede de pequenas empresas com vários PCs com Windows 10 e 7. Usuários intermitentes, mas com bastante frequência, 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 ao infame "Rede não identificada detectada", que aplica o perfil de rede "Público" em vez do perfil de rede "Privado", portanto, o compartilhamento de grupo doméstico / arquivo etc. não funciona. Na minha pesquisa, esse é um problema comum para muitos usuários. Não vejo nenhuma solução proposta que funcione.

Meio Ambiente:

  • Todos os PCs com Windows são conectados via Ethernet com fio (embora possam ter uma placa de rede Wifi)
  • Todos eles estão 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:

Embora eu tenha configurado todos os perfis de rede ativos de todas as máquinas Windows = Privadas, elas frequentemente (a cada duas semanas) são revertidas para Público, 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 = Privadas
  • Identifiying Networks = Private

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 e o padrão é Público (mesmo que acima eu tenha configurado a Diretiva de Grupo Local como padrão Privada) . Muitos computadores mostram que o Windows detectou uma nova rede não identificada muitas vezes, ou seja, eles mostram "Rede 14", ou seja, existem 14 perfis de rede diferentes. Eu vejo esses vários perfis ao rever 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.

Questão:

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


1
Editei a sua pergunta um pouco para ajudar a focar na pergunta sobre a solução do problema real. Veja o problema XY .
Eu digo Restabelecer Monica

O NLA identifica uma rede com base no endereço MAC do gateway padrão especificado para esse adaptador de rede. É possível que seu roteador tenha se tornado inacessível para esses computadores? O problema parece afetar vários computadores em um curto espaço de tempo ou é apenas um usuário por dia e outro usuário em um horário completamente diferente?
Eu digo Restabelecer Monica

Talvez olhar Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ não gerenciado ou pelo menos em torno desse local no Registro - e ver se o jogo DefaultGatewayMAC e DNSSuffix o que você espera
Ross

PaulH - Confira minha resposta quando você chegar um momento; foi isso que eu usei com bastante sucesso em um ambiente de produção, como eu coloquei na seção Método 1 , mas também forneci mais detalhes com a seção Método 2 da minha resposta. Espero que você encontre alguma dessas soluções tão útil quanto eu para esse problema.
Juice Pimp TI

Respostas:


5

Método 1

Uma maneira de lidar com esse problema em um sistema Windows Server crítico em um ambiente que mantenho foi com um script em lote que usa Set-NetConnectionProfile e netsh , e defini explicitamente cada NIC / adaptador confiável na máquina como privado na inicialização do sistema com Agendador de tarefas usando Run whether user is logged on or note Run with highest privilegesopção.

insira a descrição da imagem aqui insira a descrição da imagem aqui

Nota: Enquanto a nota de agradecimento declara " A solução não deve causar perda de conectividade de rede para implementar ", eu queria mencionar que, quando esse problema ocorre, você tem uma interrupção na rede de qualquer maneira, executando esse script se o problema ocorrer aleatoriamente quando o sistema estiver instalado. não reinicializou que simplesmente executar esse mesmo script ainda resolverá rapidamente o problema e obterá novamente o acesso à rede da máquina do sistema operacional na ordem esperada e de trabalho.

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

Script de 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 para outros que se deparam com este post, caso isso os ajude, mas existem algumas maneiras de evitar isso inteiramente, talvez, mas existem sempre haverá vantagens e desvantagens em qualquer método que você escolher, então escolha seu veneno e faça o teste de acordo.

Método 2 (vários métodos)

Rede não identificada - mude de público para privado ou domínio

Se o NLA não puder determinar um local de conexão, ele o nomeará "Não identificado" e marcará o local como Público. Ele escolhe Público porque é o mais seguro e você não quer nada menos se a conexão estiver na DMZ.

Existem duas maneiras fáceis de corrigir isso. Um usa a Diretiva de Segurança Local para alterar o local padrão de redes não identificadas. O segundo método usa uma alteração nas propriedades da conexão de rede para fornecer ao NLA as informações necessárias para colocar o local corretamente.

Usando Diretiva de Segurança Local

Cuidado: Isso só deve ser usado se o computador nunca tiver nenhuma conexão na LAN pública. Caso contrário, você corre o risco de ter um perfil de firewall menos seguro aplicado à sua conexão pública.

  1. Abra " Diretiva de segurança local ".

  2. Clique em " Políticas do Network List Manager " no painel esquerdo. (Esta seleção está oculta em versões mais antigas do Windows.)

  3. Clique duas vezes em " Redes não identificadas " no painel direito.

  4. Para computadores que existem apenas na rede privada, não há problema em definir " Tipo de local " para " particular ".

    insira a descrição da imagem aqui

Usando propriedades de conexão de rede

Não se trata de adicionar um IP de gateway, pois isso não funciona corretamente em um servidor com hospedagem múltipla. Em vez disso, adicionaremos um sufixo DNS para que o NLA possa localizar corretamente o controlador de domínio, que sabe como marcar o local como "Rede de domínio".

  1. Vá para Conexões de rede (no Centro de rede e compartilhamento, clique em "Alterar configurações do adaptador".)

  2. Vá para as propriedades de uma conexão de rede marcada como " Não identificado ", mas na LAN privada.

  3. Vá para as propriedades do IPv4 .

  4. Clique no botão " Avançado ...".

  5. Selecione a guia DNS .

  6. Digite seu nome de domínio na caixa de texto para " Sufixo DNS para esta conexão: ".

Desative e ative a conexão para que o NLA identifique novamente o local. Depois de ativar a conexão, o Status deve mudar para o nome de domínio e a Categoria de Rede para "Rede de Domínio". Dependendo da sua configuração, é provável que você precise "consertar" apenas uma conexão para que todas as conexões relacionadas vejam o domínio.

Mover de Particular para Público

Existem duas maneiras comuns de forçar o NLA a marcar uma conexão como pública. Uma é usar uma regra de firewall para bloquear o NLA, para que ele não tenha escolha, a não ser usar o local padrão. A outra é usar o registro para desativar o NLA na conexão.

Usando o Firewall

Eu não testei isso, mas a teoria parece sólida.

  1. Abra " Firewall do Windows com segurança avançada " (ou seja wf.msc).

  2. Vá para Regras de saída .

  3. Clique em " Nova regra ...".

  4. Use estas configurações:

    • Tipo de regra: personalizado
    • Programa: Selecione "Todos os programas" e clique em "Personalizar ...". Selecione "Reconhecimento do local da rede" (o nome abreviado é NlaSvc).
    • Protocolo e portas: Tipo de protocolo = Qualquer.
    • Escopo: IPs locais = Digite todos os seus IPs públicos. Verifique duas vezes se há conexões com vários IPs.
    • Ação: Bloquear
    • Perfil: Todos
  5. Depois que a regra estiver ativada, desative e ative a conexão de rede para que o NLA identifique novamente o local.

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 imprevisível, pois há muito mais entradas do que você esperaria.

  1. Execute regedit

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

  3. Abaixo, você deve ver várias teclas denominadas 0000, 0001, 0002, etc… Examine essas e encontre os adaptadores em que deseja desativar o NLA.

  4. 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).

Ficando drástico

Os perfis de localização estão alojados no registro e parece inofensivo excluí-los e permitir que o Windows os reconstrua. Definitivamente, você desejará fazer backup do registro primeiro e provavelmente precisará estar conectado ao servidor via KVM em vez de remoto (RDP). Não assumirei nenhuma responsabilidade se você escolher esta etapa, pois estou colocando isso aqui principalmente para referência.

A localização dos perfis é:

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

fonte


O primeiro método parece promissor. Não tenho certeza sobre os outros métodos que envolvem a reinicialização do serviço NLA, porque isso sempre resolve o problema de qualquer maneira, tornando difícil saber se a reinicialização do serviço foi a solução ou a outra ação. Agora eu só preciso de uma máquina que esteja fazendo isso errado para testar ....
eu digo Reinstate Monica

@TwistyImpersonator Sim, o método 1 é o método que eu usei e apenas o execute como inicialização. Nesse caso, é um servidor host virtual Hyper-V com 4 NICs e garantir que ele seja executado como inicialização até agora resolveu o problema para mim com esse sistema específico. Acho que ocorreu outra vez devido a uma reinicialização do comutador ou roteador da rede e, em vez de reiniciar o servidor host virtual, executei o script manualmente e ele resolveu o problema. Percebi a pergunta e postei a solução que usei e o outro recurso citado que parecia relevante e potencialmente útil.
Pimp Juice IT

Notei que você colocou a recompensa, mas acho que não percebi que era por sua necessidade, em vez de apenas tentar obter uma resposta do OP. É bom saber também.
Pimp Juice IT

0

Eu tive esse problema sem parar em apenas um sistema específico. Quebraria tudo a cada reinicialização. Eu tentei todas as soluções que você mencionou. Depois de esgotar todo o resto, comecei a desativar o serviço "Reconhecimento de local de rede". Pelo que posso dizer, não é necessário. Isso resolveu permanentemente meu problema. O único efeito colateral que notei é que a janela "Central de Rede e Compartilhamento" parece engraçada. Este serviço não existia antes do Windows 7 e não é útil para mim.

Services.msc

"Reconhecimento do local da rede", tipo de inicialização = "Desativado"


Hmmm, não tenho certeza se essa é uma boa idéia em um ambiente de domínio ... ou quando estiver usando um laptop entre redes confiáveis ​​e não confiáveis. Algum feedback sobre um desses cenários?
Eu digo Restabelecer Monica

Estou fazendo isso no meu ambiente de domínio. Funciona bem. Se você estiver usando seu laptop em um ambiente não confiável, precisará de outras proteções. NLA não vai te salvar. Tudo o que você pode fazer é desativar os compartilhamentos automaticamente. Eu sugeriria não permitir nenhum compartilhamento em laptops.
precisa saber é o seguinte

Sem o NLA, como seus sistemas alternam entre o domínio e os perfis privados, por exemplo, quando um funcionário leva um laptop para casa?
Eu digo Restabelecer Monica

Sem o NLA, não há perfis. Para que você está usando esses perfis?
HackSlash

Muitos dos sistemas que eu gerencio permitem tráfego de entrada quando conectados à rede do domínio, mas esse tráfego é bloqueado quando os sistemas saem do domínio. É assim que implementamos a defesa em profundidade ... as portas são abertas apenas quando necessário e fechadas em qualquer outro lugar.
Eu digo Restabelecer Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.