検索
連載

Linuxはサンバ(Samba)で踊る――WindowsとLinuxのファイル共有のいまその知識、ホントに正しい? Windowsにまつわる都市伝説(25)(2/2 ページ)

前回は、ネットワーク上を流れるパケットをキャプチャすることで、同じまたは異なるバージョンのWindows間のSMBネゴシエーションの様子を明らかにしました。今回は、同じ方法でWindowsとLinux間のSMBファイル共有の様子をのぞいてみましょう。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Linuxカーネルの「cifs.ko」でWindowsに接続すると……

 Linuxのカーネルモジュール「cifs.ko」には、Windows 8.1と同じ最新のSMB 3.02の最低限の実装が行われているそうです。その事実を確認してみましょう。

 「cifs.ko」を使用してWindowsの共有フォルダーに接続するには、「mount」コマンドの「-t cifs」オプションまたは「mount.cifs」コマンドを使用して、Windowsの共有フォルダーをマウントポイントにマウントします。

sudo mount -t cifs //<コンピューター名>/<共有名> <マウントポイント> -o <オプション>

または

sudo mount.cifs //<コンピューター名>/<共有名> <マウントポイント> -o <オプション>


 「mount」コマンドの「-t cifs」オプションは「mount.cifs」を呼び出すものであり、どちらのコマンドラインを実行しても結果は同じです(画面5)。また、「mount.cifs」は「cifs-utils」パッケージに依存します。このパッケージはUbuntuに既定でインストールされないので、「sudo apt-get install cifs-utils」を実行してインストールしておく必要があります。

画面5
画面5 Linuxカーネル組み込みのSMBクライアント機能を利用するには、「mount -t cifs」または「mount.cifs」を使用する。これらの方法を使用するには、「cifs-utils」のインストールが必要

 以下の画面6は、「mount」コマンドで必要最小限のオプション指定(前出の画面5でcifs-utils不足により失敗したコマンドライン)で接続したときの、SMBネゴシエート要求の最初のパケットです。UbuntuのSMBクライアントは、Windows 8.1のSMBサーバーに対して「NT LM 0.12」を含むMS-SMBのダイアレクトを提示し、ネゴシエートの結果、Windows 8.1とは「NT LM 0.12」を使用して接続します。

画面6
画面6 SMBプロトコルバージョンを明示的に指定しない場合、SMB 1.0/CIFSを使用してWindowsの共有フォルダーに接続する

 このように、Linuxカーネルに組み込まれたSMBクライアント機能もまた、既定ではSMB 1.0/CIFSのクライアントとして動作します。提示しているダイアレクトの種類の違いからも、SambaのSMBクライアント機能ではないことが分かるでしょう。

 「mount」コマンドおよび「mount.cifs」では、「vers=」オプションで使用するSMBプロトコルのバージョンを指定できます。「man mount.cifs」でマニュアルを確認すると、「vers=」オプションには、「1.0」「2.0」「2.1」「3.0」のいずれかを指定できるとあります(画面7)。指定しない場合は「vers=1.0」を指定したのと同じ扱いになります。

画面7
画面7 「mount -t cifs」に「vers=」オプションを指定することで、特定のSMBバージョンによる接続が可能。最低限の実装であるため、「vers=3.02」オプションの使用は推奨しない

 「vers=」オプションに「2.0」「2.1」「3.0」のいずれかを指定した場合は、指定したSMBバージョンのダイアレクトのみでネゴシエートしようとします。最上位のSMBバージョンを規定するSambaクライアントの「client max protocol = SMB3」とは動作が異なるので注意してください。

 「vers=」オプションを使用する場合は、相手がそのSMBバージョンに対応しているかどうかに注意する必要があります。例えば、Windows 7の共有フォルダーに対しては、「vers=3.0」オプションで接続することはできません。

 マニュアルには書いてありませんが、試しに「3.02」を指定してWindows 8.1の共有フォルダーに接続してみたところ、SMB 3.02による接続ができました(画面8)。ただし、Linuxのカーネルモジュール「cifs.ko」のSMB 3.02対応は最低限の実装であるため、実際の利用ではSMB 3.0を使用した方がよいでしょう。おそらく、SMB 3.02のダイアレクトに対応しただけで、SMB 3.02に追加されたアプリケーションレベルの新機能には対応していないと思います。

画面8
画面8 「vers=3.02」オプションを指定して、Windows 8.1の共有フォルダーに接続したときのSMBネゴシエート要求。SMBクライアントは、SMB 3.02(0x0302)のダイアレクトだけに対応

Samba 4.1サーバーは既定でSMB 3.0まで対応

 最後に、Linuxを共有フォルダーを提供する側のSMBサーバーとして利用する場合の動作、つまり、Samba 4.1のSMBサーバー機能の動作を見てみましょう。

 Ubuntu Desktopの場合、標準の「ファイル」(Nautilus)を使用して、簡単にSMBの共有フォルダーを設定することができます。初めて共有設定を行う場合は、「Windowsネットワーク共有サービス」のインストールが求められますが、これはSambaのパッケージをインストールするものです(画面9)。UNIXやLinuxで共有といえば古くから「NFS(Network File System)」が標準的ですが、Ubuntu標準の共有機能はSMBベースの共有なのです。

画面9
画面9 初めて共有設定をするときに、「Windowsネットワーク共有サービス」(Sambaのこと)のインストールが求められる

 「Windowsネットワーク共有サービス」のインストールが完了すると、Sambaが既定の設定で導入され、共有フォルダーが公開されます。Ubuntuの再起動は必要ありません。Windows 8.1からUbuntuの共有フォルダーに接続してみると、SMB 3.0で接続することができました(画面10)。

画面10
画面10 Ubuntu 14.10 Desktopの共有フォルダーにWindows 8.1から接続すると、SMB 3.0で接続される。Ubuntu側の設定は変更していない

 Samba 4.1のSMBサーバーが使用するSMBプロトコルのバージョンは、SMBクライアント機能と同様に「/etc/samba/smb.conf」ファイルで制御できます。SMBサーバー機能は[global]セクションの「server max protocol =」または「max protocol =」行に、「SMB3」「SMB2」「NT1」の値を設定します。

 この設定を変更しなくても、Windows 8.1からの接続にはSMB 3.0が使用されました(Samba 4.1はSMB 3.02に非対応)。つまり、Samba 4.1のSMBサーバー機能の既定は、「server max protocol = SMB3」なのです。

 そして、明示的に「server max protocol = SMB2」を指定すればSMB 1.0/CIFSからSMB 2.0、およびSMB 2.1までに対応したSMBサーバーとして動作するようになります。「server max protocol = NT1」を指定すれば、SMB 1.0/CIFSのみに対応したレガシーなSMBサーバーとして動作します(画面11)。

画面11
画面11 「/etc/samba/smb.conf」ファイルの[global]セクションに「server max protocol = NT1」または「max protocol = NT1」を追加すると、SMB 1.0/CIFSのみに対応したレガシーなSMBサーバーとして動作する

 LinuxやSambaがSMB 2.1やSMB 3.0に対応していることは知っていても、本当にSMBの新しいバージョンが使用されているかどうかは、今回の記事のような方法で確認してみないと判断できません。SMB 2.1やSMB 3.0で使っていると思い込んでいるだけで、実際にはSMB 1.0/CIFSでのんびりとファイルをやりとりしているかもしれませんね。

 次回は、WindowsとMacの間で、今回と同じことを調査します。

「その知識、ホントに正しい? Windowsにまつわる都市伝説」バックナンバー

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2015)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る