現代のビジネスシーンでは、効率的な情報共有が非常に重要です。
特に、複数人が関わるプロジェクトやチーム作業では、ファイルやデータのアクセス性が業務のスムーズさを左右します。
このような背景から、企業や組織内でのファイル共有手段として、SMB(Server Message Block)プロトコルの活用が注目されています。
本記事では、SMBの概要や仕組み、接続方法、活用事例について解説するので、ぜひご参照ください。
独自の導入設計をして、SMBの開発を検討している方であれば、株式会社Jiteraにご相談ください。
独自のAI技術を使った高品質なシステム・アプリ開発が得意で、他社よりも3倍早く開発した実績もあります。
幅広い分野において開発実績があり、システム・アプリ開発だけではなく、企業の業務効率化をするための開発にも対応しています。
SMBとは
SMBとはServer Message Blockの略称で、主にWindowsを中心としたネットワーク上でファイルやプリンターなどのリソースを共有するためのプロトコルです。
簡単に言うと、ネットワーク上のパソコンやサーバーに保存されているファイルやフォルダを、ネットワーク上の別のコンピュータから参照したり利用したりすることができるようにする仕組みです。
例えば、会社のオフィスにあるサーバー機に大量のデータを保存しておき、そこに保存されているデータを自分のパソコンから見たり、変更したり、コピーしたりできるようにすることがSMBの大まかな役割です。
家庭内でも、自分のパソコンに保存した写真データを、同じネットワーク内にあるスマートフォンやタブレットから参照できるようにしたり、プリンターをネットワーク経由で共有するのにもSMBが使われています。
つまり、ネットワーク上でデバイス間のファイル共有を実現するための標準規格がSMBです。主にWindows OSを利用している環境で広く使われているプロトコルと言えます。
SMBの仕組み
SMBが実現するファイル共有の仕組みについて見ていきましょう。以下、詳しく解説していきます。
プロトコル
SMBが利用している通信プロトコルの特徴として、TCP/IP上で動作するため、インターネット経由での通信ができる点が挙げられます。インターネットと同様の通信技術を利用しているため、物理的に離れた拠点間でもデータの共有が実現できます。
また、TCP/IPは信頼性の高い通信を実現するプロトコルです。データ転送時のエラー検出と再送信の制御により、データ欠落を防ぎ確実な通信を行えます。このため大容量データの転送にも対応できます。
その上で、SMBプロトコルによってクライアント認証、ファイルオープン・クローズ・ロック、Read/Write、ディレクトリ変更などのファイル操作が行えるAPIが提供されています。
サーバー上のファイルシステムへのアクセス制御もSMBで行われるため、1つの共有フォルダを複数ユーザで共有利用できるようにアクセス権限の管理もできます。
以上のように、TCP/IPとSMBプロトコルを組み合わせることで、安定した通信を前提とした柔軟なファイル共有システムを構築できるのがSMBの大きな特徴です。
※TCP/IP・・・TCP/IPはインターネットなどのネットワークで広く利用されている通信プロトコルのひとつです。TCP(Transmission Control Protocol)とIP(Internet Protocol)から構成されており、コンピュータ間のデータ送受信の仕組みを規定しています。
ファイル共有
SMBサーバー上の共有フォルダは、ネットワーク上のクライアントからは通常のフォルダと同じように扱うことができます。
例えば、共有フォルダ内にあるファイルをクライアント側からダブルクリックして開いたり、ファイルをドラッグ&ドロップして共有フォルダにコピーしたり、共有フォルダ内で右クリックして新規作成や名前変更、削除などができます。
ただし、共有フォルダのアクセス権限によって、許可された操作だけが実行できるようになっています。読み取り専用に設定されていれば、クライアントからファイルを変更することはできません。
権限設定では個別のユーザーやユーザーグループごとに、フォルダおよびファイルのアクセス許可を細かく指定できます。
ネットワーク上の複数ユーザーが同じファイルに自由にアクセスするのを防ぎ、必要な範囲でのみ操作できるようアクセス制御することが可能です。
SMBとCIFSの関係性について
SMBプロトコルは、1980年代にMicrosoftが開発したファイル共有プロトコルです。当初はMicrosoftのOS間でのみ利用可能な独自規格でした。
その後1990年代に入りインターネットの普及が進む中で、OSを越えたファイル共有の需要が高まりました。このためSMBプロトコルは、インターネット対応を前提とした汎用プロトコル「CIFS」へと拡張・改良が加えられていきます。
CIFSではインターネット上のファイル操作を定義した、RPC(Remote Procedure Call)という通信方式を取り入れています。RPCを用いることで、遠隔のサーバー上のファイルを自分のPC上にあるかのように操作できるようになりました。
その後、SMB/CIFSは事実上の業界標準のファイル共有プロトコルとして広く利用されるようになりました。Windowsを含む多くのOSがSMB/CIFSクライアントを標準実装するようになったことが、その普及を後押しした大きな要因です。
NFSとSMBの違い
NFSとSMBはともにネットワーク上のファイル共有を実現するプロトコルですが、以下のような違いがあります。以下、詳しく解説していきます。
プロトコルの違い
項目 | SMB | NFS |
ベースプロトコル | TCP | UDP |
主な用途 | WANを想定したファイル共有 | LANを想定したファイル共有 |
通信の特徴 | コネクション型、高信頼性、大容量データ転送に強い | コネクションレス型、軽量、小規模データ転送に強い |
エラーチェックと再送信 | あり | なし |
流量制限機能 | あり(ネットワーク混雑緩和) | なし |
同時接続数 | 多数 | 少数 |
まず初めに、NFSがUDPベースである理由はLocal Area Network(LAN)内での使用を想定して設計されたためです。LAN内では物理的な距離が近いので、UDPのようなコネクションレス型でもパケットロスは少なく、軽量な通信ができます。
一方、SMBはもともとWide Area Network(WAN)を想定していました。WANでは物理的距離が離れているため、TCPを利用することは必要不可欠です。
SMBがTCPを利用するのは、遠く離れた拠点間でもデータを確実に送信できる必要があるためです。TCPはデータ送信時に、相手側からの受信確認を待って、確実にデータが届いたかどうかをチェックします。送信したデータに誤りがあったり、途中で消失したりすると、再送信を行ってデータを完全に相手に届けることができます。
離れた拠点間の通信では、電波状況の影響などでデータが消失することがあります。そのためTCPのようなエラーチェックと再送信機能が必要不可欠なのです。
UDPではこの機能がないため、ネットワーク帯域を意識せずにデータを送信してしまい、サーバー/ネットワークの過負荷を引き起こす可能性があります。
※UDP・・・コネクションレス型の通信プロトコルです。データを分割してパケットと呼ばれる単位で送受信を行います。軽量で高速なデータ送信が特徴ですが、データ欠落等の検出機能はありません。
※TCP・・・コネクション型の通信プロトコルです。データ送信時のエラーチェックと再送制御により、安定したデータ通信を実現します。大容量データ送信に強みがありますが、処理が複雑なためUDPよりも通信速度は遅くなります。
認証の違い
項目 | NFS | SMB |
認証 | 不要 | 必須 |
認証方法 | ‐ | Windowsドメイン |
認証単位 | ‐ | 個々のユーザー |
アクセス制御 | サーバー側で困難 | ユーザー単位で細かく設定可 |
用途 | LAN内を想定 | WANを想定 |
セキュリティレベル | 低 | 高 |
NFSがクライアント認証を必要としないのは、もともとローカルエリアネットワーク内での利用を想定していたためです。LAN内ではセキュリティ面でのリスクが比較的低いため、認証なしでも実用上問題ありませんでした。
一方SMBは、インターネット経由のグローバルなネットワークでのファイル共有を目的としていました。広域ネットワークでは不正アクセスのリスクが高く、個々のユーザーを認証して権限を区別する必要があります。
SMBではユーザー認証にWindowsドメイン認証が使われます。アカウントとパスワードで個別に認証するため、誰がサーバーにアクセスしたのかを特定できます。また、認証されたユーザーごとにアクセス権限を細かく設定できるのが特徴です。NFSではサーバー側でのアクセス制御が困難なため、セキュリティ面でSMBが優れています。
ファイルシステムの違い
項目 | NFS | SMB |
前提とするファイルシステム | UNIX | Windows |
ファイルパスの区切り | 「/」 | 「\」 |
権限制御 | 所有者・グループ・その他を区別 | Windows方式 |
文字コード | UNIX標準 | Windows標準 |
ファイル操作の命令体系 | UNIX方式 | Windows方式 |
主な用途 | UNIXマシン間ファイル共有 | Windowsマシン間ファイル共有 |
NFSがUNIX系ファイルシステムに依存しているのは、開発当初からUNIXマシン間のファイル共有を主目的としていたためです。
UNIXではファイルパスの表記規則(「/」でディレクトリ階層を表す)や、ファイルの権限制御(所有者・グループ・その他を区別)、文字コードなどに独自の規格があります。NFSはこれに合わせて設計されています。
一方、SMBはWindowsMACHINE間のファイル共有を目的としており、Windowsのファイルシステムをベースに構築されています。
Windowsではファイルパスの区切りに「\」を利用し、ファイルの権限制御もUNIXとは異なります。文字コードにはWindows標準のものが使われます。
SMBにおけるファイル操作の命令体系は、Windowsファイルシステムを前提としたものになっています。このため、NFSはUNIX、SMBはWindowsという異なるファイルシステムにそれぞれ特化していると言えます。
パフォーマンスの違い
項目 | NFS | SMB |
プロトコル | UDP | TCP |
小規模ファイル転送 | ◯ | △ |
大規模ファイル転送 | △ | ◯ |
同時多ユーザーアクセス | △ | ◯ |
エラー対策 | ✕ | ◯ |
混雑制御 | ✕ | ◯ |
オーバーヘッド | 小 | 大 |
拡張性 | 低 | 高 |
NFSのUDPベースの軽量な設計は、小規模なファイル転送に対して高速な性能を発揮します。ただし、ファイルサイズや同時アクセスユーザー数が増加すると、UDPのコネクションレス性が問題となり、エラーや遅延が発生しやすくなります。
一方SMBのTCPでは、ネットワークの混雑状況を監視し、混み合っている場合はデータ送信の量を自動で調整する機能があります。
TCPでは、データ送信のために各種の制御処理が発生します。例えば、エラーチェックや混雑制御などの働きです。UDPにはこれらの制御処理はなく、純粋にデータ送信に集中できます。したがって、TCPはUDPと比べて、データ送信の際に余計な「通知」が発生します。
ビジネスシーンでのファイルサーバー利用を考えると、SMBの拡張性の高さが大きなメリットになります。
SMBのポート番号
SMBで利用される主なポート番号とその役割について、以下に詳しく解説していきます。
ポート番号 | プロトコル | 役割 | 特徴 |
139 | TCP | サーバーとクライアントのセッション確立 | SMB1で使用、セキュリティが脆弱 |
445 | TCP | サーバーとクライアントのセッション確立 | SMB2/3で使用、暗号化通信 |
137 | UDP | NetBIOS名からIPアドレスへの変換 | NBNSで使用 |
138 | UDP | NetBIOS機器間のデータ転送 | NBDSで使用 |
UDP/137 | UDP | NBNSのクエリー送信用 | NetBIOSで使用 |
UDP/138 | UDP | NBNSからの応答受信用 | NetBIOSで使用 |
ポート139
ポート139は、SMB1でサーバーとクライアント間のTCPセッションを確立するために使用されます。クライアントからサーバーへTCP接続要求パケットを送信し、サーバーが139番ポートを開いて接続を受け入れることで、両者の間にTCPセッションが形成されます。
このセッション上でクライアントは認証を行い、共有フォルダへのアクセスやファイル操作のコマンドを送信することができます。
139番ポートはリモートからのアクセスを受け付けるため、ファイアウォールでの開放やアクセス制限が必要になります。最近のWindows OSでは、セキュリティ向上のためポート445がデフォルトで使われるようになり、ポート139は無効化されています。
ポート445
ポート445は、SMB2およびSMB3で利用されるデフォルトのTCPポート番号です。
SMB1のポート139ではプレーンテキストでの非暗号化通信だったのに対し、445では初期接続時からSSL/TLSによる暗号化通信が行われます。
また、SMB2とSMB3では並列処理の多用やメタデータの削減などで、高速化が図られています。
Windows Vista/Server 2008以降のWindows OSでは、セキュリティと速度面を考慮して445がデフォルトのSMBポートとして使われるように変更されました。リモートからのアクセスを受ける場合はファイアウォールでの開放が必要ですが、可能な限り139よりも445を利用をおすすめします。
※非暗号化通信・・・データを暗号化せずに平文のまま送受信する通信のことです。通信内容が第三者に見えてしまうため、セキュリティ面で脆弱です。
※メタデータ・・・データに付加される属性情報や記述情報のことです。データの内容そのものではなく、データを説明する補助情報のようなものです。
※並列処理・・・1つの処理を細分化し、複数同時に実行することで全体の処理を高速化する手法です。
ポート137,138,UDP/137,UDP/138
ポート137はNBNS(NetBIOS Name Service)が利用するUDPポートで、ネットワーク上のNetBIOS名からIPアドレスへの変換に使用されます。
ポート138はNBDS(NetBIOS Datagram Service)が利用するUDPポートで、NetBIOS名を持つ機器間でデータグラム送受信を行う場合に使われます。
UDP/137はNBNSのクエリー送信用ポート、UDP/138は応答受信用ポートとして利用されています。
これらの補助ポートは、SMBプロトコルの前段階としてネットワーク内のサーバーやクライアントの検出に利用されています。NetBIOS機能を利用する場合は、これらのUDPポートもファイアウォールで開放する必要があります。
※UDPポート・・・UDPプロトコルで通信を行うためのポート番号のことです。コネクションレス型のUDPは制御が簡易なため高速通信が特徴です。
※ファイヤーウォール・・・外部ネットワークから内部ネットワークへの不正アクセスを防ぐためのネットワークセキュリティシステムのことです。通信を制限して安全性を確保します。
※クエリー送信用ポート・・・サーバーなどに対してデータ要求の問い合わせを送信するために利用するポート番号のことです。クエリー送信専用のポートを割り当てることが一般的です。
SMBサーバー
SMBサーバーには主に3つの種類があります。以下、SMBサーバーの役割と各サーバーについて、詳しく解説していきます。
SMBサーバーの役割
SMBサーバーの主な役割は、ネットワーク上のクライアントからのファイル共有の要求に応えることです。サーバーに保存されたファイルに対して、クライアントはファイルの参照やダウンロード、アップロードができるようになります。
それ以外にも、SMBサーバーの主な役割は以下の通りです。
- 共有フォルダの作成と共有設定の管理
- クライアントからの接続要求を受け付けること
- クライアントの認証処理を行うこと
- クライアントに対するアクセス制御の設定と実施
- ファイルやフォルダの操作要求に応じて、読み取り/書き込み等の処理を実行すること
- ファイルやフォルダのアクセス権限情報を管理すること
- クライアントとのデータ転送を行うこと
このように、認証やアクセス制御、データの受け渡しと保管を中心とした機能を持っているのがSMBサーバーの役割です。安全なファイル共有を実現しています。
ネイティブSMBサーバー
WindowsやMacなどのOSに標準で搭載されているSMB機能のことです。簡単なファイル共有を行う分には、OS側のネイティブなSMBサーバー機能を使うことができます。
Windows Serverには、ユーザーアカウントを集中管理する機能が標準で備わっています。この機能を使って、ユーザーのアカウント情報を一元管理できます。またWindowsパソコンには標準で「ファイルとプリンターの共有」という機能が搭載されています。この機能を使うと、簡単な操作でPC上のフォルダをネットワーク上で共有できます。Macにも標準でファイル共有機能があるため、WindowsとMacのコンピューター間でもスムーズにファイルのやり取りができます。
ネイティブSMBサーバーはライセンスコストがかからないメリットがありますが、大規模システムには向きません。
専用SMBアプライアンス
SMBアプライアンスは、SMB専用の高性能なハードウェアと、それに対応したソフトウェアで構成されます。大容量のHDDを搭載した上、RAID構成に対応することで、大量のファイル共有にも耐えられる信頼性を確保しています。
また専用OSやSMBソフトウェアを搭載することで、Windowsサーバーよりも高速なファイル共有が可能になります。管理インターフェイスも備えているので、GUIベースで簡単に設定変更やモニタリングが行えます。
大規模なビジネスシステムで、ファイルサーバーとしての利用に耐えられる高性能な製品が提供されています。
※RAID構成・・・複数のドライブを組み合わせて、1つのストレージシステムのように使用する技術。ドライブの冗長性を高め、故障時のデータ保護が可能。
※GUIベース・・・画面上のアイコンやメニューを、マウスでクリックすることで操作できるインターフェース。コマンド入力ではなく、視覚的な操作性が特徴。
ソフトウェアベースのSMBサーバー
ソフトウェアSMBサーバーは、サーバー用のソフトウェアを購入してインストールするだけで構築できるため、初期コストを抑えられるメリットがあります。 新規のハードウェア購入は不要です。ただし、ハードウェアのリソースに依存するため、I/O性能や同時接続数に限界があるのが欠点です。 大量のアクセスが集中する場合は対応しきれなくなります。
そのためソフトウェアSMBサーバーは、概ね100人程度以下の規模のシステム向けと位置付けられています。スペックの高いサーバー機器を利用すれば、ある程度大規模な運用も可能ですが、専用SMBアプライアンスほどの耐負荷性は望めません。
コストと機能面を比較検討し、用途に合ったSMBサーバーの選定が重要です。
※I/O性能・・・コンピュータの入出力に関する性能のことです。特にストレージの読み書き速度や、ネットワーク経由のデータ送受信速度が、システム全体のパフォーマンスを大きく左右します。I/O性能が高いほどデータのやり取りが高速に行えるため、システムの応答性能が向上します。
SMBの接続方法(コネクト方法)
SMBサーバーに接続する方法は、使用するデバイスによって以下のように異なります。
Windowsでの接続
- エクスプローラーを開く
- 左側の「ネットワーク」をクリック
- 接続したいSMBサーバーを選択し、ダブルクリック
- ユーザー名とパスワードを入力し、[OK]
この手順で、SMBサーバー上の共有フォルダにアクセスできるようになります。エクスプローラーの「ネットワーク」には、同じネットワークに接続されている他のコンピュータが表示されます。接続したいSMBサーバーが見つからない場合は、アドレスバーに「\サーバーのIPアドレス」と入力するとアクセスできます。
サーバーに初めて接続するときは、ドメイン名、ユーザー名、パスワードを入力するダイアログが表示されます。以降はアクセス許可のある共有フォルダがエクスプローラー上にネットワークドライブとして追加されるので、ローカルドライブのようにファイル操作ができます。
スマホ(iPhone)での接続
- 「ファイル」アプリを開く
- 右上の[…]をタップ
- 「サーバーへ接続」をタップ
- サーバーアドレスを入力し、[次へ]
- ユーザー名とパスワードを入力し、[次へ]
この手順で、iPhoneからもSMBサーバーに接続できるようになります。「ファイル」アプリのサーバー追加画面で、SMBサーバーのIPアドレスやホスト名を入力します。次の画面でサーバーに登録済みのユーザー名とパスワードを入力する必要があります。
認証に成功すると、SMBサーバー上の共有フォルダがiPhoneの「ファイル」アプリ内に表示されるようになります。以降は共有フォルダ内のファイルを自由にタップして開いたり、新規追加したり、移動やコピー、削除などのファイル操作が可能です。
iOS搭載のスマホでも手軽にSMBサーバーを利用できるのが便利な点です。
SMBの活用事例
SMBを利用したシステムの代表的な活用事例を以下に詳しく解説していきます。
ファイルサーバー構築
会社の共有ファイルを1つのサーバーに集約し、社員は自分のコンピュータからサーバー上のファイルにアクセスできるシステムです。SMBを用いたファイルサーバーは、社内の各部門が保有する膨大なデータを1台のサーバーに集約することができます。工程表や製品図面、営業資料や契約書類などが全て1箇所に揃います。
これにより部署間での情報共有がスムーズになり、業務の効率化が図れます。新たにファイルを用意する必要がなくなるのでコスト削減の効果も大きいでしょう。サーバーの耐障害性を高めておくことで、大容量データの安全性を確保できます。また、アクセス権限を細かく設定できるので情報漏洩リスクも低減できます。
大量のファイルデータを社内で共有するのであれば、SMBを活用した中央集約型のファイルサーバー構築が効果的です。
バックアップ
個人PCの重要なデータをSMBサーバー上にバックアップすることで、PCが壊れてもデータを復元できます。サーバー上ではデータの暗号化も可能なので、セキュリティ面でも安心です。個人PCのデータを外付けHDDなどにバックアップすることが一般的ですが、複数台のPCデータをSMBサーバーに集約的にバックアップすることもできます。
サーバーを複数台用意して、データを同じ内容でコピーしておくことで、サーバーが1台壊れても安全です。また、遠く離れた場所にある別のサーバーにも同じデータのコピーを保管しておくことで、万が一の事態にも対処できます。このように、サーバーを増やして同じデータを重複させることで、データを確実に保護できます。
また、SMBはネットワーク経由でのバックアップも可能なため、全社的な重要データを定期的にサーバーにバックアップする運用が実現できます。個人PCのバックアップに加え、BCP対策として全社のバックアップシステムをSMBで構築することを検討する価値があるでしょう。
※BCP対策・・・企業が災害等で業務が停止した際の事業継続計画のことです。大地震などの災害時に、システムやデータを迅速に回復し、事業の中断を最小限に留めるための対策です。
※外付けHDD・・・外付けHDDとは、コンピューター本体外で使用するための外部ハードディスクドライブのことです。USBやeSATAなどのインターフェイスでPCと接続してデータの保存先として利用します。大容量かつ持ち運びが可能なデータの保管装置として用いられています。
スマホとの連携
自宅のSMBサーバーに接続すれば、スマホからでも家のPCに保存されている写真や動画を見たり聞いたりできます。外出先からでも自宅のデータにアクセスでき便利です。スマホには専用のSMBアプリをインストールする必要がありますが、アプリさえ入れれば手軽にサーバーに接続できます。
iPhoneやAndroidなど主要なスマホに対応したアプリが公式/サードパーティから提供されていて、使い勝手が良いものがあります。アプリからサーバーにログインすると、サーバー上のファイルがスマホ上でもファイル管理アプリのように扱えるので、とても使いやすいのがメリットです。
外出先からでもサーバーのファイルを自由に閲覧・編集できるので、テレワークなどの用途でも重宝します。
SMBのまとめ
今回の記事では、SMBの基本的な定義から、仕組み、サーバーの種類、設定方法などについて解説しました。
簡単にまとめると、SMBはWindowsを中心としたネットワーク環境で、サーバー上のファイルをクライアントPCから共有するための標準規格です。
サーバーにデータを集中させることで、簡単かつ安全に社内外の情報共有が実現できるのが大きなメリットです。SMBを活用したシステム導入に興味がある場合は、導入前にしっかりヒアリングと要件定義を行うことをおすすめします。
SMBなどのシステム導入などを検討している方は、株式会社Jiteraにぜひお気軽にお問い合わせください。