Guida completa e operativa per capire perché un client di Configuration Manager si dichiara “Intranet” o “Internet”, come diagnosticare gli errori (incluso il caso post‑aggiornamento 2403) e come rimettere rapidamente in salute la comunicazione con l’MP.
Panoramica: cosa significa “Client is on Internet” e perché ti interessa
La modalità di connettività del client ConfigMgr (MECM/SCCM) influenza assegnazione del sito, distribuzione dei contenuti, gestione delle policy, inventario e compliance. Se un dispositivo interno viene rilevato come “Client is on Internet”:
- non contatterà gli Management Point (MP) interni contrassegnati come Intranet;
- potrebbe cercare una Cloud Management Gateway (CMG) o un proxy inesistente;
- potrebbe non ricevere policy, non registrarsi o fallire le installazioni.
Capire come il client decide Intranet/Internet è il primo passo per risolvere le anomalie in modo sistematico.
Come il client ConfigMgr decide: meccanismi e punti di controllo
Il client utilizza una combinazione di fonti: cache SLM (Service Location Management), profilo di rete del sistema operativo (NLA), confini di sito (Boundary/Boundary Group), fallback di stato (FSP), log e impostazioni locali/registro.
Meccanismo | Funzionamento | Cosa controllare / correggere |
---|---|---|
Management Point (MP) | Il client interroga gli MP elencati nella cache SLM. Se riesce a contattare un MP contrassegnato “Intranet”, si dichiara “Intranet”; in caso contrario tenta gli MP “Internet”. | – Verificare che gli MP interni siano raggiungibili (DNS, firewall, IIS). – Se esistono MP Internet/CMG, assicurarsi che le URL siano corrette e firmate da CA affidabile. |
Network Location Awareness (NLA) | Se l’interfaccia di rete riceve il profilo “Domain” da NLA, il client presume di trovarsi in Intranet. | – Controllare che la macchina sia membro del dominio e che i DC rispondano. – NIC multiple o VPN possono far ricadere NLA in “Public”. |
Boundary & Boundary Group | L’indirizzo IP/Subnet/AD‑Site del client deve rientrare in un Boundary che a sua volta appartiene a un Boundary Group con site‑systems Intranet. | – Evitare sovrapposizioni IP. – Inserire i nuovi subnet dopo migrazioni o after‑hours. |
Fallback Status Point (FSP) | Se il client non contatta un MP, invia lo stato al FSP: anche questo aiuta a definire la topologia. | – Verificare che l’FSP sia configurato solo per la rete interna. |
Log e registro | LocationServices.log , ClientLocation.log e CCMSetup.log tracciano i passaggi sopra. | – Cercare voci “Unable to find an Intranet MP”, “Client is on internet”, “AssignedSite=”. |
Chiavi di registro/parametri | Valori quali HKLM\Software\Microsoft\CCM\ClientAlwaysOnInternet o parametri di installazione (ad es. /host:cmg.contoso.com ) possono forzare la modalità. | – Rimuovere eventuali override non necessari. |
Procedura di base per la diagnosi
- Eseguire
nslookup <MP interno>
eping
per verificare la risoluzione interna. - Nel client aprire Configuration Manager Control Panel → Network e controllare la modalità.
- Analizzare
LocationServices.log
a partire da un riavvio del servizio SMS Agent Host. - Se la cache SLM è corrotta, cancellare
%WinDir%\CCM\SCClient*.dat
e riavviare il servizio.
Flusso decisionale (riassunto)
- Connettività: l’MP interno risponde su 443? (
Test-NetConnection -ComputerName mp.contoso.com -Port 443
) - NLA: il profilo è Domain? (
Get-NetConnectionProfile
) - Boundary: l’IP rientra in un Boundary assegnato a un Boundary Group con MP Intranet?
- Cache SLM: presente un riferimento errato a MP/CMG? (pulizia
SCClient*.dat
) - Override:
ClientAlwaysOnInternet
= 1? (rimuovere) - Certificato: EKU Client Authentication presente e mapping FQDN corretto?
Script utili per verifiche e fix rapidi
Verifica stato, NLA, proxy e raggiungibilità MP
# Esegui in PowerShell elevato
$mp = "mp.contoso.com"
Write-Host "=== NLA ==="
Get-NetConnectionProfile | Format-Table Name, NetworkCategory, IPv4Connectivity
Write-Host "=== Proxy di sistema (WinHTTP) ==="
netsh winhttp show proxy
Write-Host "=== Reachability MP 443 ==="
Test-NetConnection -ComputerName $mp -Port 443 -InformationLevel Detailed
Write-Host "=== Ultime righe LocationServices.log ==="
Get-Content "$env:windir\CCM\Logs\LocationServices.log" -Tail 50
Funzione “Get‑CMClientMode” (parsing dei log)
function Get-CMClientMode {
$ls = Join-Path $env:windir "CCM\Logs\LocationServices.log"
if (-not (Test-Path $ls)) { return "Log non trovato: $ls" }
$lines = Get-Content $ls -Tail 500 | Select-String -Pattern "Client is on internet|Currently detected as intranet|Intranet|Internet" -SimpleMatch
if ($lines) { return ($lines | Select-Object -Last 1).Line }
else { return "Nessun indicatore recente trovato in LocationServices.log" }
}
Get-CMClientMode
Reset della cache SLM e rimozione override
# Ferma il servizio client, pulisci SLM e override, riavvia
Stop-Service ccmexec -Force
Get-ChildItem "$env:windir\CCM" -Filter "SCClient*.dat" -ErrorAction SilentlyContinue | Remove-Item -Force
reg delete "HKLM\Software\Microsoft\CCM" /v ClientAlwaysOnInternet /f 2>$null
Start-Service ccmexec
Reinstallazione pulita (quando necessario)
# Tieni a portata di mano sitecode e MP
$SiteCode = "ABC"
$MP = "mp.contoso.com"
& "$env:windir\ccmsetup\ccmsetup.exe" /uninstall
Start-Sleep -Seconds 10
& "$env:windir\ccmsetup\ccmsetup.exe" /mp:$MP SMSSITECODE=$SiteCode CCMHOSTNAME=$MP /UsePKICert /NoCRLCheck
Controllo rapido del certificato client
# Mostra certificati con EKU Client Authentication adatti a ConfigMgr
Get-ChildItem Cert:\LocalMachine\My | Where-Object {
$_.EnhancedKeyUsageList.ObjectId -contains "1.3.6.1.5.5.7.3.2" # Client Authentication
} | Select-Object Subject, NotAfter, Thumbprint
Caso pratico post‑aggiornamento 2403: alcuni client rilevati come “Internet”
Sintomi ricorrenti
- In
CCMSetup.log
:IsSslClientAuthEnabled - Determining provisioning mode state failed with 80070002 Client is on internet
- Il client cerca un proxy che non esiste e non si registra con l’MP interno (solo‑HTTPS).
Possibili cause individuate
Categoria | Dettaglio |
---|---|
Cache SLM obsoleta | L’aggiornamento 2403 può lasciare riferimenti a vecchi MP o CMG non più validi. |
Profilo NLA errato | Su alcune VM/Server 2022 il profilo di rete passa da “Domain” a “Public” dopo reboot. |
Certificato client | Catena PKI valida ma il certificato selezionato non ha l’Enhanced Key Usage “Client Authentication” o non corrisponde al FQDN. |
Chiave di override | ClientAlwaysOnInternet=1 talvolta rimane impostata da precedenti test IBCM/CMG. |
Bug 2403 | Hotfix (ad es. KB28458746 e successivi) risolvono incoerenze di localizzazione client. |
Azioni correttive consigliate
- Pulizia e riparazione del client
ccmrepair /retry:0 oppure ccmsetup.exe /uninstall seguita da reinstallazione con sitecode e MP espliciti
- Flush della cache SLM e reset registro
net stop ccmexec del /Q %WinDir%\CCM\SCClient*.dat reg delete HKLM\Software\Microsoft\CCM /v ClientAlwaysOnInternet /f net start ccmexec
- Verifica NLA
- Assicurarsi che l’interfaccia primaria sia “Domain”.
- Rimuovere NIC virtuali inutilizzate e adattatori di vecchie VPN.
- Controllo certificati
- In
CCMSetup.log
cercareSelected Certificate
. - Selezione manuale tramite client setting o script (
certutil -repairstore
).
- In
- Boundary e Boundary Groups
- Riesaminare IP/Subnet delle macchine interessate (soprattutto nuovi VLAN/Subnet).
- Monitorare
ClientLocation.log
dopo ogni modifica.
- Applicare gli hotfix correnti
- Importare l’ultimo rollup per 2403 (incluso KB28458746) da Updates and Servicing.
- Riavviare i client o forzare reinstallazione dell’agente se richiesto.
Convalida post‑fix (cosa aspettarsi nei log)
LocationServices.log
: righe del tipo “Attempting to retrieve Default Management Points from SLP/AD” seguite da “Assigned MP: https://mp.contoso.com” e “Currently detected as intranet”.ClientIDManagerStartup.log
: registrazione completata (“RegTask: Success”), nessun fallback a FSP.CCMHttp.log
/CCMHTTPS.log
: handshake TLS completato e risposta 200/OK dal virtual directory/ccm_system
.
Approfondimento: NLA, VPN e profili “ballerini”
NLA determina il profilo in base all’autenticazione al dominio e ad altri fattori. In presenza di:
- VPN split‑tunneling: il traffico verso i DC potrebbe non passare, NLA resta “Public”.
- NIC virtuali di vecchi hypervisor/containers: possono prendere priorità o introdurre route / metriche anomale.
- Clock skew: un tempo di sistema fuori sync (Kerberos) impedisce il riconoscimento del dominio.
Rimedi pratici
- Forzare il profilo corretto rimuovendo NIC obsolete; verificare metrica interfacce (
Get-NetIPInterface
). - Assicurarsi che il DNS primario punti ai DC interni; evitare DNS pubblici come primari sui client.
- Resync dell’orologio:
w32tm /resync
.
Boundary: evitare gli “angoli ciechi”
Boundary e Boundary Group devono riflettere tutte le subnet in uso. Migrazioni di rete, nuove VLAN e siti di DR spesso introducono IP non mappati, causando fallback non desiderati o contatti verso MP/CMG errati.
Anti‑pattern | Rischio | Correzione consigliata |
---|---|---|
Boundary “a ragnatela” con sovrapposizioni | Client vaganti tra group diversi; bilanciamento incoerente | Subnet puntuali per area e aggregazione, nessuna sovrapposizione |
Uso esclusivo di AD‑Site senza manutenzione | Nuovi subnet non ereditati, client “orfani” | Mix IP/Subnet + AD‑Site; processo di onboarding delle nuove VLAN |
Boundary Group senza MP intranet assegnati | Ricerca MP Internet o CMG quando non necessario | Associare almeno un MP intranet per ogni gruppo che serve client on‑prem |
Certificati: i 3 controlli che risolvono l’80% dei casi HTTPS
- EKU: il certificato selezionato deve includere Client Authentication (OID
1.3.6.1.5.5.7.3.2
). - Subject/SubjectAltName: il nome deve corrispondere al FQDN del client (quando richiesto dalla tua PKI/policy).
- Catena: l’intera chain deve essere presente nel Local Machine (Root + Intermediate); attenzione a CRL/OCSP non raggiungibili.
Esempio di selezione manuale in ambienti con più cert validi:
# Imposta la selezione certificato tramite client setting o WMI sezione CCM
(approccio di massima; preferire le Client Settings quando possibile)
Playbook operativo: dal sintomo al fix
Sintomo A: “Client is on internet” su PC fisso in LAN
- DNS & 443:
Test-NetConnection
verso l’MP interno deve riuscire. - NLA: assicurati che il profilo sia Domain. Se “Public”, sistemare join, DNS o metriche.
- Log:
LocationServices.log
→ cerca “Unable to find an Intranet MP”. - Cache: elimina
SCClient*.dat
e riavvia ccmexec. - Override: cancella
ClientAlwaysOnInternet
. - Cert (se HTTPS): verifica EKU e thumbprint usato.
Sintomo B: dopo upgrade 2403, ~15 macchine solo
- Pulizia SLM +
ccmrepair
in remoto (PSRemoting). - Riesamina Boundary delle nuove VLAN coinvolte.
- Applica rollup/hotfix (incluso KB28458746 ove applicabile).
- Se necessario, reinstallazione con MP esplicito.
Sintomo C: client prova a usare un proxy “fantasma”
netsh winhttp show proxy
→ se impostato, considera reset (netsh winhttp reset proxy
).- Verifica policy/MDM che impongono proxy di sistema.
- Controlla applicazioni di sicurezza (SSL inspection) che interferiscono con TLS.
Automazione: verifica post‑patch e monitoraggio continuo
Automatizza il controllo della modalità con uno script che interroga i log e restituisce un report CSV.
$computers = Get-Content .\fleet.txt
$results = foreach ($c in $computers) {
try {
$line = Invoke-Command -ComputerName $c -ScriptBlock {
$ls = "$env:windir\CCM\Logs\LocationServices.log"
if (Test-Path $ls) {
(Get-Content $ls -Tail 400 | Select-String "Client is on internet|Currently detected as intranet" | Select-Object -Last 1).Line
}
}
[pscustomobject]@{ Computer=$c; Mode=$line }
} catch {
[pscustomobject]@{ Computer=$c; Mode="Errore o offline" }
}
}
$results | Export-Csv .\ClientModeReport.csv -NoTypeInformation
Integra il report con Client Health in console e configura alert su transizioni ripetute Intranet↔Internet. In presenza di CMG, confronta il numero di richieste verso la CMG rispetto al baseline: picchi inattesi possono indicare boundary mancanti o NLA “Public”.
Appendice: log, percorsi e chiavi di registro
Elemento | Percorso / Chiave | Note |
---|---|---|
LocationServices.log | %WinDir%\CCM\Logs\LocationServices.log | Ricerca e selezione MP, stato Intranet/Internet |
ClientLocation.log | %WinDir%\CCM\Logs\ClientLocation.log | Boundary e assegnazione sito |
CCMSetup.log | %WinDir%\CCMSetup\Logs\CCMSetup.log | Installazione agente, certificati selezionati, errori iniziali |
CCMHTTPS.log / CCMHTTP.log | %WinDir%\CCM\Logs\CCMHTTPS.log | Dettagli handshake TLS / risposta IIS |
Cache SLM | %WinDir%\CCM\SCClient*.dat | Contiene informazioni su MP/CMG; eliminare per rigenerare |
Override Internet | HKLM\Software\Microsoft\CCM\ClientAlwaysOnInternet | Se presente e impostata a 1, forza la modalità Internet |
Proxy WinHTTP | netsh winhttp show proxy | Impatta download policy e HTTP client |
Domande frequenti
Il client è Intranet ma usa comunque la CMG: è normale?
Può succedere se nei Boundary Group sono selezionate preferenze di contenuto/MP che includono cloud (per carichi specifici). Se non desiderato, rivedi i “Site system servers” associati e le priorità. Serve davvero l’FSP oggi?
L’FSP resta utile per raccogliere stati dai client non assegnati o che non raggiungono gli MP. Tienilo solo in rete interna e monitora eventuali fiammate di errori. È un problema se NLA dice “Public” ma tutto sembra funzionare?
Sì, perché molte decisioni (policy, boundary) dipendono anche da questo segnale. Sistema NLA per evitare derive future, specialmente con VPN e laptop ibridi. HTTPS obbligatorio: quale certificato usa il client?
Controlla in CCMSetup.log
la riga Selected Certificate. Verifica EKU e scadenza. In caso di più certificati validi, imposta criteri di selezione (Client Settings) o normalizza il template PKI.
Checklist finale (copy‑paste)
- MP interni raggiungibili su 443? (DNS/Firewall/IIS ok)
- NLA = Domain? (no NIC superflue, DNS verso DC, orologio sincronizzato)
- Boundary/Boundary Group completi e senza sovrapposizioni
- Cache SLM pulita (
SCClient*.dat
) - Nessun override
ClientAlwaysOnInternet
- Certificati con EKU corretta e chain completa (in HTTPS)
- Proxy WinHTTP coerente o disabilitato se non necessario
- Hotfix/rollup 2403 applicati; in caso,
ccmrepair
o reinstall - Verifica nei log: “Assigned MP (Intranet)” e “Currently detected as intranet”
Raccomandazioni finali
- Documenta MP, Boundary e certificati (template, EKU, durata). Evita conoscenza tribale.
- Automatizza il post‑patch con script che leggono
ClientLocation.log
e restituiscono la modalità conGet‑CMClientMode
. - Monitora la console Client Health e configura alert sulle transizioni anomale Intranet↔Internet.
- Standardizza il profilo di rete riducendo NIC virtuali, VPN legacy e DNS “creativi”.
- Pianifica la manutenzione dei Boundary con ogni cambio IP (change management obbligatorio).
Seguendo la diagnosi sui log, la pulizia della cache e l’applicazione degli hotfix si risolve nella maggior parte dei casi la rilevazione errata “Client is on internet” e si ripristina una corretta comunicazione con l’MP intranet.
Riferimenti operativi sintetici
- Servizi e processi: SMS Agent Host (ccmexec), Windows Update se co‑gestito, WinHTTP.
- Virtual directory tipici:
/ccmsystem
,/ccmclient
. - Test TLS:
Invoke-WebRequest https://mp.contoso.com/ccm_system/request
(account SYSTEM/contesto amministrativo), validazione certificato server. - Server‑side: verifica MP Control Manager, log IIS (
%SystemDrive%\inetpub\logs\LogFiles
) e certificato del sito web (IIS Bindings).
Errori comuni da evitare
- Imporre
ClientAlwaysOnInternet
durante un test e dimenticarlo abilitato. - DNS pubblici come primari nei client interni.
- Boundary definiti solo per AD‑Site senza un processo di aggiornamento delle subnet.
- Certificato client senza EKU corretta o con CN non coerente con la policy aziendale.
- Rimozione “a caldo” di CMG o MP senza pulizia SLM lato client.
Esempi pratici di comandi “one‑liner”
# 1) Ultima modalità rilevata
Select-String -Path "$env:windir\CCM\Logs\LocationServices.log" -Pattern "Client is on internet","intranet" | Select-Object -Last 1
2) Connettività veloce vs MP
tnc mp.contoso.com -port 443
3) Pulizia rapida SLM (attenzione: ferma/avvia il servizio)
Stop-Service ccmexec -Force; Remove-Item "$env:windir\CCM\SCClient*.dat" -Force -ErrorAction SilentlyContinue; Start-Service ccmexec
4) NLA & metrica
Get-NetConnectionProfile; Get-NetIPInterface | Sort-Object InterfaceMetric | Format-Table InterfaceAlias, AddressFamily, InterfaceMetric
5) Proxy WinHTTP
netsh winhttp show proxy
Conclusioni
La distinzione Intranet/Internet nel client ConfigMgr nasce da un equilibrio tra fonti locali (NLA, registro, cache SLM) e topologia di sito (MP, boundary, FSP). Un approccio disciplinato—con check di rete, verifica NLA, log‑driven troubleshooting e pulizia della cache—consente di riportare i client in Intranet in tempi brevi, anche in seguito a upgrade come il 2403. Stabilizzare la postura con processi di change per Boundary, standardizzazione DNS e automazione post‑patch evita recidive e migliora la resilienza operativa dell’infrastruttura.