自分の頭の中を整理するために、SMBについて分かったことを書いておこう、という趣旨の記事。それって備忘録…?
PowerShellコマンドレットGet-SmbConnectionのご報告です。
SMBバージョンあれこれ
SMBバージョンはOSによって使えるバージョンが決まっていて、上位バージョンを有するクライアントでは、完全な下位互換があると考えてよさそうです。
なのでお互いに確認しあって両方が使える一番上位のバージョンを使うような動きを取ります。
Windows XPやWindows Server2003より前のOSだと「SMB1.0(NTLM 0.12)」が使われ、
OSがWindows VistaやWindows Server2008では「SMB2.0(Dialectが2.0.2)」が使われ、
OSがWindows 7やWindows Server2008 R2では「SMB2.1(Dialectが2.1.0)」が使われ、
OSがWindows 8やWindows Server2012では「SMB3.0(Dialectが3.0.0)」が使われ、
OSがWindows 8.1やWindows Server2012 R2では「SMB3.0.2(Dialectが3.0.2)」が使われ、
OSがWindows 10やWindows Server2016では「SMB3.1.1(Dialectが3.1.1)」が使われます。
つまり、Windows10同士でSMB通信が開始した場合、お互いにSMB3.1.1が利用可能なので、すんなりSMB最新バージョンで通信を開始しますし、Windows10からWindows Server 2008 R2に接続すると、Windows Server2008 R2のSMB2.1にWindows10が合わせてくれる、といった動きになります。
このSMBバージョンを一通り頭に入れて、これ以降のダイアレクトの話を。
Get-SmbConnectionで一覧表示
PowerShellのコマンドレット「Get-SmbConnection」を使うと、現在操作しているデスクトップ上で接続しているSMB通信で接続している共有資源はSMBのバージョン幾つで接続がされているかを確認することができます。
※前回から抜粋。
-------------------------------------------------------
PS C:\Windows\system32> Get-SmbConnection
ServerName ShareName UserName Credential Dialect NumOpens
---------- --------- ---------------- --------------- ------- --------
smbfs Folder-a CompName\Usernm01 CompName\Usernm01 3.0 2
WinSVR-TR1 Folder01 CompName\Usernm01 CompName\Usernm01 3.0.2 3
WinSVR-TR1 IPC$ CompName\Usernm01 CompName\Usernm01 3.0.2 0
FileSVR Folder01 CompName\Usernm01 DomainNM\Usernm01 2.0.2 2
NASNE share2 CompName\Usernm01 CompName\Usernm01 1.5 1
NAS-3 Folder01 CompName\Usernm01 CompName\Usernm01 1.5 0
-------------------------------------------------------
Windows10からSMB接続の一覧。
sambaバージョン4のファイルサーバsmbfsではダイアレクトが3.0、Windows Server 2012 R2で共有しているファイルサーバWinSVR-TR1の共有フォルダへの接続はよりバージョンが高い3.0.2が使われていることが分かります。
同じsambaサーバでもバージョンが古いFileSVRというサーバではダイアレクト2.0.2が使われていますし、NASNEやTeraStationであるNAS-3ではダイアレクト1.5での接続になっています。
Get-SmbConnectionでさらに深堀り
各々の接続について詳細を見るためには、
Get-SmbConnectionコマンドレットに「-ServerName %サーバ名% | Select-Object -Property *」を付けて実行します。
-------------------------------------------------------
PS C:\Windows\system32> Get-SmbConnection -ServerName FileSVR | Select-Object -Property *
SmbInstance : Default
ContinuouslyAvailable : False
Credential : DomainNM\Usernm01
Dialect : 2.0.2
Encrypted : False
NumOpens : 3
Redirected : False
ServerName : FileSVR
ShareName : Folder01
Signed : False
UserName : CompName\Usernm01
PSComputerName :
CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
-------------------------------------------------------
表記には「Encrypted」SMB暗号化の有無や「Redirected」(たぶんSMBリダイレクト)の可否などが表記されています。接続について詳しい情報を閲覧することができるコマンドですね。