I bindings di Windows:
Nell’inglesismo tipico dell’informatica Italiana, con bindings o Network bindings, in Windows, si intendono quelle associazioni tra i componenti software di rete (protocolli, servizi, driver e client) e gli adattatori di rete (schede fisiche o virtuali) consentendo al sistema operativo di instradare il traffico di rete, esporre servizi a livello di rete e stabilire le funzionalità disponibili su ciascuna interfaccia attraverso i driver appropriati. Di seguito una descrizione per concetti chiave.
Cosa sono:
Un binding è un collegamento logico che mette in comunicazione un componente di rete (ad esempio il protocollo IPv4, IPv6, NetBIOS, il client o il servizio di condivisione file e stampanti) con un adattatore di rete specifico.
Senza binding, un protocollo o servizio esisterebbe come componente software ma non sarebbe attivo su nessuna interfaccia; il binding lo rende effettivamente operativo su quella interfaccia.
Componenti coinvolti:
Protocolli: es. ms_tcpip (IPv4), ms_tcpip6 (IPv6). Forniscono le regole di comunicazione, indirizzamento e instradamento.
Client: es. ms_msclient (Client for Microsoft Networks). Consentono al sistema di autenticarsi e usare risorse remote.
Servizi/Provider: es. ms_server (File and Printer Sharing). Espongono servizi locali alla rete.
Driver/NDIS bindings: driver di basso livello che collegano lo stack TCP/IP al dispositivo fisico (NDIS miniport, filter driver, protocol drivers).
Tipicamente nominati in formato ComponentID/Name/DisplayName: ogni binding ha identificatori diversi — Name (codice), DisplayName (testo leggibile), ComponentID (ID tecnico usato da cmdlet/strumenti).
Livelli di binding (concetto):
Stack di rete Windows è stratificato: driver hardware ↔ NDIS ↔ protocolli ↔ servizi/applicazioni. I binding stabiliscono i punti di collegamento fra questi livelli.
Esistono binding a livello di dispositivo (es. protocollo legato al miniport) e binding logici (es. servizi Microsoft legati all’interfaccia).
Come si presentano al Sistema Operativo:
In PowerShell/NetAdapterBinding: GetNetAdapterBinding mostra tutte le associazioni per ogni InterfaceAlias (o Name). Le proprietà tipiche: Name, DisplayName, ComponentID, InterfaceAlias/InterfaceDescription, Enabled.
In Pannello di controllo (vecchi sistemi): nella finestra Proprietà della scheda di rete si vede la lista dei componenti installati (checkbox per abilitare/disabilitare).
Nel registro di sistema e nelle impostazioni NDIS: i driver e i binding sono rappresentati da chiavi/valori che il sistema usa al boot per caricare e collegare i componenti.
Perché i binding sono importanti:
Funzionalità: abilitare un binding rende disponibile il relativo servizio o protocollo su quell’interfaccia (es. abilitare File and Printer Sharing permette alle altre macchine di accedere alle condivisioni sulla specifica NIC).
Sicurezza: disabilitare binding inutili riduce la superficie di attacco (es. disabilitare NetBIOS, SMB o componenti non necessari su interfacce esposte).
Prestazioni e troubleshooting: problemi di rete possono dipendere da binding errati o conflitti fra filter drivers; conoscere i binding aiuta a diagnosticare.
Policy e gestione: in ambienti aziendali si possono imporre binding mediante Group Policy o script per uniformare configurazioni.
Comportamenti e implicazioni pratiche:
Per-interfaccia: i binding sono specifici per ogni interfaccia — lo stesso protocollo può essere abilitato su alcune NIC e disabilitato su altre.
Persistenza: le modifiche ai binding vengono memorizzate (registro/driver) e sopravvivono ai riavvii; alcuni cambiamenti richiedono riavvio o riavvio dei servizi per avere effetto completo.
Dipendenze: alcuni componenti dipendono l’uno dall’altro; disabilitare un binding può rendere inutilizzabile un servizio correlato.
Ordine e priorità: specialmente per le route e per i driver NDIS, l’ordine dei driver/filter può influenzare il comportamento (es. filter driver per autenticazione, monitoraggio o virtualizzazione).
Strumenti per visualizzare e gestire i binding:
PowerShell: Get-NetAdapterBinding, Disable-NetAdapterBinding, Enable NetAdapterBinding
Netsh / Win32_NetworkAdapterConfiguration / WMI: metodi alternativi o retrocompatibili.
GUI: Proprietà connessione di rete (in Windows classico), Gestione dispositivi (per driver).
Registro di sistema / NDIS diagnostics per casi avanzati.
Di seguito due semplici script Powershell, utili a Disabilitare o Abilitare i bindings sulle Schede di rete, siano queste fisiche o virtuali.
Il primo elenca i binding attivi su ciascuna scheda di rete installata.
Il secondo di compone di una dichiarazione di array che contiene l’elenco dei nomi dei bindings da trattare, la funzione Enable-NetAdapterBinding ricorsiva per abilitare i bindings dell’elenco precedente e una funzione Disable-NetAdapterBinding ricorsiva per diabilitare i bindings dell’elenco precedente.
# -----------------------------------------------------------------------------
# - File Name : Get-NIC-Grouped-NetBindings.ps1
# - Author : Nicola Montemurro
# - Administrator : Nicola Montemurro - Mobile: -
# - Create : 07/02/2022
# - Last Update : 07/02/2022
# - Description : Elenca Network Bindings raggruppati per NIC
# - Position : C:\vmtools\ps
# - Note : NON modificare senza AUTORIZZAZIONE dell'AMMINISTRATORE
# ----------------------------------------------------------------------------
Get-NetAdapterBinding -Name "*" | Where-Object { $_.Enabled -eq $true } | Group-Object -Property InterfaceAlias |
ForEach-Object {
Write-Output "Adapter: $($_.Name)" $_.Group | Format-Table Name,DisplayName,ComponentID -AutoSize
""
}
# -----------------------------------------------------------------------------
# - File Name : Set-NIC-NetBindings.ps1
# - Author : Nicola Montemurro
# - Administrator : Nicola Montemurro - Mobile: -
# - Create : 07/02/2022
# - Last Update : 07/02/2022
# - Description : Disabilita/Abilita Network Bindings
# - Position : C:\vmtools\ps
# - Note : NON modificare senza AUTORIZZAZIONE dell'AMMINISTRATORE
# ----------------------------------------------------------------------------
$Bindings = @(
"ms_server",
"ms_msclient",
"ms_netbios",
"ms_tcpip6"
)
# Esempio: abilitare tutti i binding su interfacce che corrispondono a "VLAN9*"
foreach ($b in $Bindings) {
Enable-NetAdapterBinding -Name "VLAN9*" -ComponentID $b -Confirm:$false -ErrorAction SilentlyContinue
}
# Esempio: disabilitare tutti i binding su interfacce che corrispondono a "Ethernet*"
foreach ($b in $Bindings) {
Disable-NetAdapterBinding -Name "Ethernet*" -ComponentID $b -Confirm:$false -ErrorAction SilentlyContinue
}
Esempi di binding comuni e loro uso:
- ms_tcpip / ms_tcpip6 — rendono disponibili IPv4/IPv6 sull’interfaccia.
- ms_msclient — permette accesso a risorse di rete Microsoft (client SMB).
- ms_server — abilita la condivisione di file e stampanti (server SMB).
- ms_netbios / NetBIOS over TCP/IP — usato da vecchi servizi/compatibilità; spesso disabilitato per sicurezza.
- Driver di terze parti / filter drivers — usati da VPN, antivirus, monitoraggio traffico;
Le buone pratiche:
Abilitare solo ciò che serve su ciascuna interfaccia (principio del minimo privilegio funzionale).
In conclusione:
I binding di Windows sono le connessioni configurabili fra componenti di rete e adattatori: determinano quali protocolli, servizi e client sono attivi su ciascuna interfaccia, influenzando funzionalità, sicurezza e comportamento di rete, conoscerli e gestirli correttamente è fondamentale per una configurazione di rete sicura e stabile.