treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

sambaサーバのSMBバージョンアップ

SMB(Server Message Block)はご存知でしょうか?
今日は、普段気にかけないけど、縁の下の力持ちともいえる、重要なSMBをちょっと見てみたのでご報告します。

SMBって?

Windows ServerとPCの通信で利用される、サーバへの要求と応答の方式を定義したプロトコルを
SMB(Server Message Block:サーバメッセージブロック)
といいます。
ファイル共有、プリンタ共有、といった共有資源へのサービス接続要求として使われています。

どうやって見る?

いま、SMBのバージョンがいくつで接続されているかを簡単に確認する方法として
対象の共有フォルダや共有プリンタを開いた状態で、Powershellを起動し、
get-smbconnection
コマンドレットを利用する、という方法が簡単かつ分かりやすい方法です。

sambaサーバでsmb.confを設定する

Debianの旧バージョンでapt-get installでsambaサーバを導入していたもので、SMBが旧バージョンのままで稼働していました。
これをSMBv2に変更してみました。

グローバルセクションの中に「max protocol = SMB2」という記述を追記すると、
-------------------------------------------------------
[global]

#SMB Protcol setting
max protocol = SMB2
-------------------------------------------------------
SMB2で通信が可能な状態になります。
指定後はsambaサーバプロセスをリスタート(/etc/init.d/smb restart)します。

接続して確認してみる

「max protocol = SMB2」指定前に共有フォルダに接続したWindowsPCから、
get-smbconnectionコマンドレットを実行すると…
-------------------------------------------------------
PS C:\Windows\system32> get-smbconnection

ServerName ShareName     UserName             Credential              Dialect NumOpens
----------------- ------------------- -----------------------  ------------------------------ ------- --------
FileSVR         Folder01        CompName\Usernm01 DomainNM\Usernm01    1.5      2

-------------------------------------------------------
このようにDialect(ダイアレクト)という箇所の表記が1.5で表示されます。
「1.5」の表記はSMBv1を示しています。

これが、「max protocol = SMB2」指定後に接続すると…
-------------------------------------------------------
PS C:\Windows\system32> get-smbconnection

ServerName     ShareName    UserName                Credential         Dialect     NumOpens
-------------------- ------------------ ---------------------------- -------------------- ------- --------
FileSVR            Folder01        CompName\Usernm01 DomainNM\Usernm01   2.0.2       2

-------------------------------------------------------

とこのように、Dialect(ダイアレクト)の表記が2.0.2となりました。
これでSMBv2を利用している、ということが分かります。

確認してみた

Windows10のPCからget-smbconnectionコマンドレットで手持ちの共有フォルダの接続をみてみた状況です。

-------------------------------------------------------
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    1.5    2
NASNE share2 CompName\Usernm01 CompName\Usernm01    1.5    1
NAS-3 Folder01 CompName\Usernm01 CompName\Usernm01    1.5    0
-------------------------------------------------------
smbfs=sambaサーバ(2:4.2.14+dfsg-0+deb8u9=Version 4.2.14-Debian)
WinSVR-TR1=Windows Server 2012 R2で共有しているフォルダ
FileSVR=sambaサーバ(2:3.6.6-6+deb7u15=Version 3.6.6、DebianのLTSメンテナンスバージョン)
NASNE=nasne(ナスネ)システムソフトウェアがVersion 2.60
NAS-3=TeraStation

という稼働環境です。