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.
Open "Local Security Policy".
Click on "Network List Manager Policies" in the left pane. (This selection is buried in older versions of Windows.)
Double-click on "Unidentified Networks" in the right pane.
For computers that only exist on the private network, it is OK to set "Location type" to "private".
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”.
Go to Network Connections (from the Network and Sharing Center, click on "Change adapter settings".)
Go to the properties of one network connection marked as "Unidentified" but on the private LAN.
Go to the properties for IPv4.
Click the "Advanced..." button.
Select the DNS tab.
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.
Open "Windows Firewall with Advanced Security" (i.e
wf.msc
).Go to Outbound rules.
Click on "New Rule…".
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
Quando a regra for ativada, desative e ative a conexão de rede para obter o NLA para reidentificar 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 acertar ou errar, pois há muito mais entradas do que você esperaria.
Execute o regedit
Ir para
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
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.
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).
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