@IT さんの記事『ファイル共有プロトコル、SMBとCIFSの違いを正しく理解できていますか?(前編)』に出てくる、Direct Hosting IPX (NetBIOS over IPX (NBX, NBIPX) でないやつ) ですが、クライアント側は Windows 95 と Windows for Worgroups 3.11 まで、サーバー側は Windows Server 2003 R2 まで対応していたらしい。
現在の MS-CIFS に規定されている Direct Hosting は、Direct Hosting of SMB (Microsoft-DS) ではなく、こっちの古い Direct Hosting IPX のほう。IPX は、Novell NetWare の初期のコア プロトコルである IPX/SPX の下位 (ネットワーク層) のプロトコル。企業内 LAN では、TCP/IP よりも、NetBEUI よりも、IPX/SPX がメジャーだった時代もありました。
参考:
MSDN Library > [MS-CIFS]: Common Internet File System (CIFS) Protocol > 2.1.2.1 Direct IPX Transport
[URL] https://msdn.microsoft.com/en-us/library/ee442180.aspx
Description of Microsoft NWLINK IPX/SPX-Compatible Transport
[URL] http://support.microsoft.com/kb/203051
"NOTE: Windows 95 and Windows for Workgroups 3.11 use Direct Hosting by default. Windows NT Server 3.5 and later support Direct Hosting using the Server service only. "
MSDN Library > EnableWFW311DirectIPX
[URL] https://msdn.microsoft.com/ja-jp/library/cc757933(v=ws.10).aspx
今、Direct Hosting IPX を試そうとしても、クライアント環境を用意するのが大変ですが、この前復活した Windows 95 の仮想マシン (→メモ: Microsoft Virtual PC で作成した WIN95 仮想マシンを Windows Virtual PC で...) と Windows Server 2003 R2 SP1 仮想マシンの組わせで試してみました。もはや何の役にもたたない情報ですが、Windows や SMB の歴史的な価値のある情報かと。
2015/01/21
2015/01/20
cURL と SMB/CIFS
@IT さんの連載で SMB と CIFS の違いについて説明を試みています。今後の連載では、Windows で SMB 2/3 を無効にする方法や、SMB/CIFS と Linux、SMB/CIFS と Mac について説明していくつもりです。
ファイル共有プロトコル、SMBとCIFSの違いを正しく理解できていますか?(前編)
[URL] http://www.atmarkit.co.jp/ait/articles/1501/19/news092.html
以下の MS さんのブログを見ると、“CIFS-The ancient version of SMB that was part of Microsoft Windows NT 4.0 in 1996. SMB1 supersedes this version. ” “SMB 1.0 (or SMB1)-The version used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2 ” と書いあります。これを見て ??? と感じた方は、@IT さんの私の記事を見てみてください。
Windows Server 2012 R2: Which version of the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0 or SMB 3.02) are you using?
[URL] http://blogs.technet.com/b/josebda/archive/2013/10/02/windows-server-2012-r2-which-version-of-the-smb-protocol-smb-1-0-smb-2-0-smb-2-1-smb-3-0-or-smb-3-02-you-are-using.aspx
ところで、今月、cURL の新バージョン 7.40.0 がリリースされました。cURL (カール)は、HTTP や HTTPS、FTP などのプロトコルでファイル転送を行うための、Linux や BSD ではお馴染みのコマンドライン ツールです。新バージョン 7.40.0 では、SMB/CIFS プロトコルのサポートが追加されたそうです。
cURL
[URL] http://curl.haxx.se/
openSUSE 13.2 で cURL 7.40.0 の smb:// への対応を確認しました。(Windows 版の cURL 7.40.0 だと、smb:// を使えないかも)
この cURL の SMB/CIFS プロトコルのサポートが言っている SMB/CIFS は何かというと、SMB ダイレクト NT LM 0.12 の SMB 1.0/CIFS のことでした。現在の SMB/CIFS の解釈に従った正しい表現です。以下のキャプチャを見るとわかるように、NT LM 0.12 より古いダイアレクトと、SMB 2.0 以降の新しいダイアレクトには対応していません。使用する TCP ポートは、Microsoft-DS (445/TCP) でした。
ソースコード
(smb.c)
を見ても、現時点では「NT LM 0.12」だけに対応していることがわかります。
static CURLcode smb_send_negotiate(struct connectdata *conn)
{
const char *msg = "\x00\x0c\x00\x02NT LM 0.12";
return smb_send_message(conn, SMB_COM_NEGOTIATE, msg, 15);
}
ソースコード (urldata.h) を見ると、NetBIOS Session (139/TCP) にも対応していないのがわかります。
#define PORT_SMB 445
cURL の TODO リスト を見ると、現在は、NTLMv1 にのみ対応し、NTLMv2 への対応は今後の予定だそうな。
追記)
Windows 版 (Win64 - Generic) の cURL 7.40.0 では smb:// を使えないようですが、Windows だと普通に SMB (SMB 1.0/CIFS より速い SMB 2.x 以降を含む) が使えるので、意図的に無効化されているのかもです。
ファイル共有プロトコル、SMBとCIFSの違いを正しく理解できていますか?(前編)
[URL] http://www.atmarkit.co.jp/ait/articles/1501/19/news092.html
以下の MS さんのブログを見ると、“CIFS-The ancient version of SMB that was part of Microsoft Windows NT 4.0 in 1996. SMB1 supersedes this version. ” “SMB 1.0 (or SMB1)-The version used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2 ” と書いあります。これを見て ??? と感じた方は、@IT さんの私の記事を見てみてください。
Windows Server 2012 R2: Which version of the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0 or SMB 3.02) are you using?
[URL] http://blogs.technet.com/b/josebda/archive/2013/10/02/windows-server-2012-r2-which-version-of-the-smb-protocol-smb-1-0-smb-2-0-smb-2-1-smb-3-0-or-smb-3-02-you-are-using.aspx
ところで、今月、cURL の新バージョン 7.40.0 がリリースされました。cURL (カール)は、HTTP や HTTPS、FTP などのプロトコルでファイル転送を行うための、Linux や BSD ではお馴染みのコマンドライン ツールです。新バージョン 7.40.0 では、SMB/CIFS プロトコルのサポートが追加されたそうです。
cURL
[URL] http://curl.haxx.se/
openSUSE 13.2 で cURL 7.40.0 の smb:// への対応を確認しました。(Windows 版の cURL 7.40.0 だと、smb:// を使えないかも)
この cURL の SMB/CIFS プロトコルのサポートが言っている SMB/CIFS は何かというと、SMB ダイレクト NT LM 0.12 の SMB 1.0/CIFS のことでした。現在の SMB/CIFS の解釈に従った正しい表現です。以下のキャプチャを見るとわかるように、NT LM 0.12 より古いダイアレクトと、SMB 2.0 以降の新しいダイアレクトには対応していません。使用する TCP ポートは、Microsoft-DS (445/TCP) でした。
static CURLcode smb_send_negotiate(struct connectdata *conn)
{
const char *msg = "\x00\x0c\x00\x02NT LM 0.12";
return smb_send_message(conn, SMB_COM_NEGOTIATE, msg, 15);
}
ソースコード (urldata.h) を見ると、NetBIOS Session (139/TCP) にも対応していないのがわかります。
#define PORT_SMB 445
cURL の TODO リスト を見ると、現在は、NTLMv1 にのみ対応し、NTLMv2 への対応は今後の予定だそうな。
追記)
Windows 版 (Win64 - Generic) の cURL 7.40.0 では smb:// を使えないようですが、Windows だと普通に SMB (SMB 1.0/CIFS より速い SMB 2.x 以降を含む) が使えるので、意図的に無効化されているのかもです。
2013/12/20
Windows 以外でも SMB2/SMB3 が利用可能になってた
Windows 以外も SMB2 以降への対応が知らない間に進んたという話。
Mac は OS X 10.8 Mountain Lion 以前は SMB 1.0/CIFS に対応。OS X 10.9 Mavericks からは SMB 1.0/CIFS と SMB2に対応し、SMB2がデフォルト(AFP よりも優先)。
OS X 200を超える新機能 > コアテクノロジー > SMB2
[URL] http://www.apple.com/jp/osx/whats-new/features.html#core
SMB ネットワークにアクセスできない(Mac OS X 10.9 Mavericks)
[URL] http://helpx.adobe.com/jp/x-productkb/global/cq11102248.html
SMB 2.0 なのか、SMB 2.1 までなのか、Mac を持っていないので確認はできませんが、以前公開されていた OSXMaverics Core Technology Overview のドキュメントには、"as well as large MTU support ..."とあるので SMB 2.1 だと思います。terminal で smbutil statshares -a を実行すると、マウント中の SMB 共有の SMB バージョンを確認できるみたいです。OS X 10.9 Mavericks をお持ちの方はお試しあれ(こんどどっかのお店で試してこようかな)。ちなみに、Apple が公開している smbutil のソース コード (statshares.c) を見ると、SMB_2.002 (SMB 2.002 は SMB 2.0 のこと)、SMB_2.1、SMB_1 を出力するようになっています。
Linux の CIFS クライアント (cifs.ko) は、2012 年 12 月に出た Linux kernel 3.7 以降、この 1 年間で SMB 2.0 以降への対応が一気に進んだようです。kernel 3.11 からは SMB 3.02 (の一部) まで対応しているらしいです。
[URL] http://snia.org/sites/default/files2/SDC2013/presentations/Revisions/StevenFrench_SMB3_Meets_Linux_ver3_revision.pdf#search='kernel+3.11+smb3'
早速、Ubuntu 13.10 (kernel 3.11) で試してみたら...
登録:
コメント (Atom)


