Ciao a tutti e bentrovati.
Lo scopo di quest post non ? spiegarvi come funziona il protocollo SMB, che immagino utilizzate quotidianamente e conoscete gi? benissimo. Invece, vorremmo approfondire alcuni aspetti a basso livello che potrebbero rivelarsi utili, soprattutto perch? la nomenclatura potrebbe confondere alcuni utenti.
SMB, il protocollo che ci permette di accedere a files, cartelle e stampanti condivise in rete, pu? funzionare in due modi differenti, totalmente trasperenti all?utente finale.
?
NetBIOS over TCP/IP
Per compatibilit? con le versioni precedenti del sistema operativo, Windows Server 2003 pu? utilizzare ancora NetBIOS su TCP/IP per comunicazioni SMB. In questo caso, la porta utilizzata ? la TCP 139.
?
Direct-hosted SMB
Esiste, parallelamente, la possibilit? del Direct Hosting, cio? SMB direttamente su TCP, senza avere la necessit? di utilizzare NetBIOS. Questa tipologia di comunicazione viaggia sulla porta TCP 445. Il vantaggio di questa tecnologia ? indubiamente quello di semplificare il trasporto del traffico SMB, oltre ad utilizzare il DNS come modalit? di risoluzione nomi che al giorno d?oggi ? nettamente prevalente rispetto al WINS/NetBIOS.
Il comportamento di default di Windows sar? quindi di tentare una connessione su entrambe le porte 139 e 445, e semplicemente verr? utilizzata quella per cui si ottiene una risposta pi? veloce. Questo permette a Windows di funzionare correttamente anche con quei device che eventualmente non supportano il Direct Hosting.
Una volta determinata la modalit? di connessione, tutto lo scambio di dati a livello SMB ad alto livello avviene in modo analogo.
?
Come sono implementate queste due modalit? a livello di Kernel?
Una trattazione completa dell?implementazione di tutto lo stack ? disponibile a questo link:
Microsoft Windows Server 2003 TCP/IP Implementation Details
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13902
Per lo scopo di questo post, ? bene soffermarsi solo su alcuni punti chiave.
Il servizio Server, responsabile della gestione delle shares SMB, si appoggia direttamente al driver SRV.sys. Per funzionare correttamente, dovrebbe quindi aprire le due porte TCP che abbiamo descritto precedentemente e mettersi in stato di listening in attesa di connessioni incoming da parte dei vari client. Quello che molti non sanno ? che, seppur SRV ne sia responsabile, l?apertura della porta 445 ? delegata al driver NetBt.sys.
Al contrario, se abbiamo IPv6 abilitato, la gestione della porta 445 ? invece effettuata direttamente da SRV.sys
Qualora dovessimo avere dei problemi, la primissima cosa che dobbiamo controllare che ? NetBt sia attivo e funzionante in modo corretto. Inoltre, sono numerosissimi i casi in cui abbiamo dei filter drivers installati (ad esempio driver di Antivirus o real-time Network scanning) che si frappongono tra NetBt e SRV e che impediscono il corretto flow dei dati nello stack e pregiudicano il funzionamento delle connessioni su porta 445 - mentre funziona tutto liscio su 139.
?
Come verificare se il mio server sta funzionando correttamente, sulle porte 139 e 445?
Il metodo pi? facile ? verificare se entrambe le porte sono in stato di listening con il comando netstat ?ano
Pi? nel dettaglio, qualora dovessimo avere dei problemi con una delle porte non in ascolto correttamente, dobbiamo andare a verificare che siano effettivamente presenti i binding sia per il NetbiosSmb (che ? il trasporto direct-hosted sulla 445) che per il NetBT_Tcpip (che rappresenta il trasporto NetBIOS over TCP/IP quindi porta 139) tramite il comando net config server
? bene specificare che NetbiosSmb ? un global device (valido a livello di sistema operativo) mentre NetBT_Tcpip ? bindato ad ogni singola interfaccia di rete (di cui vediamo tutti i GUID nell?output di net config). Anche per questo motivo, sull?output di netstat vediamo la porta 445 in ascolto globalmente (TCP 0.0.0.0:445) mentre la 139 ? in ascolto su ogni singola interfaccia, con socket associato ai vari indirizzi IP (nel mio caso 10.0.0.15:139)
In caso di ulteriori complicazioni, ? opportuno verificare che tutte le interfacce siano linkate anche a livello di registry di Windows, di cui possiamo controllare la seguente chiave.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Linkage]
Name: Bind
Type: REG_MULTI_SZ
Value:\Device\NetbiosSmb\0
\Device\NetBT_Tcpip_{962378A9-E1CC-4707-8BB1-DE766C068347}\0
\Device\NetBT_Tcpip_{0BBC31F9-F0E1-4C3E-B7CB-14904D3925F5}
Come disabilitare l?utilizzo dell?una o dell?altra modalit??
1) Per disabilitare NetBIOS over TCP/IP, bisogna lavorare direttamente sulla scheda di rete, e selezionare ?Disable NetBIOS over TCP/IP? dal menu Propriet? / Internet Protocol (TCP/IP) / Propriet? / Avanzate / WINS
? bene ricordare che dopo questa operazione, non potr? pi? funzionare nessuna applicazione basata su NetBIOS.
2) Per disabilitare Direct-Hosted SMB, ? sufficiente modificare la seguente chiave di registro :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]
Name: SMBDeviceEnabled
Type: REG_DWORD
Value: 0
(il valore di default ? 1 che significa che la modalit? ? abilitata)
Ulteriori informazioni utili
Ciao e alla prossima!
Stefano Gagliardi
Support Engineer
Microsoft Enterprise Platform Support
Source: http://blogs.technet.com/b/itasupport/archive/2011/12/23/smb-e-netbios-in-windows-2003.aspx
velasquez vs dos santos manny pacquiao vs. juan manuel marquez manny pacquiao vs. juan manuel marquez cain velasquez vs dos santos cain velasquez vs dos santos oregon stanford oregon stanford
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন