はじめに
この実験では、Wireshark のコマンドラインツールである Tshark を使用して、SMB サービスの応答時間を測定する方法を学びます。TCP ポート 445 でネットワークトラフィックをキャプチャし、セッションの応答時間を分析し、フィルタを適用して特定のホスト間の通信を調査します。
実践的な演習では、テストトラフィックを生成し、-z smb,srt のようなコマンドで SMB のパフォーマンス指標を計算し、Tshark の統計機能を使って結果を分析する手順を案内します。Linux 環境でキャプチャフィルタ (-f "tcp port 445") と表示フィルタ (-Y "ip.addr==10.0.0.1") を実際に操作する経験を積むことができます。
-f "tcp port 445" で SMB トラフィックをキャプチャする
このステップでは、Wireshark のキャプチャフィルタを使用して、SMB (Server Message Block) ネットワークトラフィックをキャプチャする方法を学びます。SMB は、主に Windows マシン間のファイル共有、プリンタアクセス、およびプロセス間通信に使用されるネットワークプロトコルです。通常、通信には TCP ポート 445 を使用するため、この特定のポートに焦点を当ててキャプチャを行います。
まずは環境を準備しましょう。
まず、LabEx 仮想マシン (VM) でターミナルを開きます。Xfce デスクトップのターミナルアイコンをクリックするか、ショートカット
Ctrl+Alt+Tを使用します。ターミナルですべてのコマンドを実行します。キャプチャファイルを保存するデフォルトの作業ディレクトリに移動します。これにより、プロジェクトを整理しやすくなります。
cd ~/project
- 次に、SMB トラフィックをキャプチャして調査するために使用するネットワークプロトコルアナライザである Wireshark を起動します。
&記号を使用すると、Wireshark がバックグラウンドで実行されるため、同じターミナルを引き続き使用できます。
wireshark &
Wireshark のメインインターフェイスで、キャプチャ設定を構成する必要があります。
- アクティブなネットワークインターフェイス (通常は
eth1) を選択します。これはトラフィックを監視するネットワークカードです。 - キャプチャフィルタフィールドに
tcp port 445と入力します。これにより、Wireshark は SMB が動作するポート 445 のトラフィックのみをキャプチャするように指示されます。 - 青いサメのヒレのアイコンをクリックしてキャプチャを開始します。インターフェイスにパケットが表示され始めます。
- アクティブなネットワークインターフェイス (通常は
キャプチャするための SMB トラフィックを生成するために、新しいターミナルウィンドウで
smbclientコマンドを使用します。このコマンドは、ローカルの SMB サーバーに接続しようとします (接続に失敗することはわかっていますが、キャプチャしたいトラフィックを生成します)。
smbclient -N -L //127.0.0.1
約 10 秒間キャプチャした後 (十分なトラフィックを生成するのに十分な時間)、赤色の四角いボタンをクリックしてキャプチャを停止します。これにより、パケットの表示が凍結され、調査することができます。
メインウィンドウでキャプチャされたパケットを確認します。宛先/送信元ポートが 445 の TCP パケットが表示されるはずです。これらが分析対象の SMB プロトコルパケットです。
最後に、将来的な参照のためにキャプチャを保存しましょう。
- 「ファイル」>「名前を付けて保存」を選択します。
- ファイル名を
smb_capture.pcapngとします (.pcapng 形式はすべてのキャプチャ情報を保持します)。 - セッションを開始した
~/projectに保存します。
-z smb,srt でサービス応答時間(SRT)を計算する
このステップでは、Wireshark のコマンドラインユーティリティである tshark を使用して、SMB セッション応答時間 (SRT: Session Response Time) を計算する方法を学びます。SRT は、クライアントが SMB リクエストを送信してからサーバーの応答を受け取るまでの時間を測定します。これは、SMB ファイル共有操作におけるパフォーマンスのボトルネックを特定するために重要です。
- まず、キャプチャファイルを操作するプロジェクトディレクトリにいることを確認します。
cd ~/project
- 前のステップで作成したキャプチャファイル
smb_capture.pcapngを使用します。このファイルには、SMB プロトコルの標準ポートであるポート 445 でキャプチャされたネットワークトラフィックが含まれています。このファイルがない場合は、以下のコマンドを実行して再作成できます。
wireshark -k -i eth1 -f "tcp port 445" -w smb_capture.pcapng &
10 秒間待って SMB トラフィックをキャプチャし、その後 Ctrl+C でキャプチャを停止します。
- メインのコマンドは SMB セッション応答時間を計算します。
-z smb,srtオプションは、tshark に SMB 応答時間の統計を分析するよう指示します。
tshark -r smb_capture.pcapng -z smb,srt
出力には、SMB セッションのパフォーマンス特性を理解するのに役立つ SRT 統計の詳細な表が表示されます。これには以下が含まれます。
- 処理された SMB リクエストの総数
- 最小応答時間 (最速の応答)
- 最大応答時間 (最遅の応答)
- 平均応答時間
- さまざまな時間範囲にわたる応答時間の分布
大きなキャプチャファイルを扱う場合、出力が長くなることがあります。読みやすくするために、出力を
lessにパイプすることができます。これにより、結果をページごとにスクロールできます。
tshark -r smb_capture.pcapng -z smb,srt | less
- これらの統計を後で分析またはレポートするために保存するには、出力をテキストファイルにリダイレクトします。
tshark -r smb_capture.pcapng -z smb,srt > smb_srt_stats.txt
catコマンドを使用して、いつでも保存された統計を調べることができます。これは、分析を再実行せずに結果を確認する必要がある場合に便利です。
cat smb_srt_stats.txt
-Y "ip.addr==10.0.0.1" でホストをフィルタリングする
このステップでは、Wireshark の表示フィルタ構文を使用して、特定のホストの IP アドレス (10.0.0.1) のネットワークトラフィックをフィルタリングする方法を学びます。これは、ネットワークキャプチャ内の特定のデバイスに関連するトラフィックに焦点を当てたい場合に便利です。
- まず、キャプチャファイルが保存されているプロジェクトディレクトリにいることを確認します。
cd ~/project
- 前にキャプチャした SMB トラフィックファイルを Wireshark で開きます。
&を使用すると、Wireshark がバックグラウンドで実行されるため、ターミナルを引き続き使用できます。
wireshark smb_capture.pcapng &
- Wireshark の表示フィルタバー (メインウィンドウの上部にあります) に、次のフィルタを入力して、IP アドレス 10.0.0.1 が関係するすべてのパケットを表示します。
ip.addr==10.0.0.1
その後、Enter キーを押すか、「適用」をクリックしてフィルタを有効にします。
パケットリストには、以下のいずれかの条件に該当するパケットのみが表示されるようになります。
- 送信元 IP が 10.0.0.1 (このホストからのトラフィック)
- 宛先 IP が 10.0.0.1 (このホストへのトラフィック)
より具体的に、10.0.0.1 宛のパケット (宛先トラフィック) のみをフィルタリングすることができます。
ip.dst==10.0.0.1
- 同様に、10.0.0.1 からのパケット (送信元トラフィック) のみを表示するには、次のようにします。
ip.src==10.0.0.1
- より精密な分析のために、論理演算子を使用してフィルタを組み合わせることができます。たとえば、10.0.0.1 との間の SMB トラフィック (TCP ポート 445 を使用する) のみを表示するには、次のようにします。
ip.addr==10.0.0.1 && tcp.port==445
- フィルタリングされたビューを後で分析するために保存するには、以下の手順を行います。
- 「ファイル」>「指定されたパケットをエクスポート」を選択します。
- 「表示されているもの」を選択して、フィルタリングされたパケットのみを保存します。
filtered_host.pcapngとして保存します。
-q で統計情報を表示する
このステップでは、Wireshark のコマンドラインツールである tshark を使用してネットワークトラフィックの統計を分析する方法を探ります。-q (quiet) オプションは、個々のパケットの詳細を非表示にし、統計の要約にのみ焦点を当てるため、全体的なトラフィックパターンを分析しやすくするので、特に便利です。
始める前に、キャプチャファイルが保存されている正しい作業ディレクトリにいることを確認しましょう。
cd ~/project
では、基本的な統計情報から始めましょう。このコマンドは、すべてのパケットを表示せずに、キャプチャファイルの内容の概要を提供します。
tshark -r smb_capture.pcapng -q
キャプチャ内でさまざまなネットワークプロトコルがどのように分布しているかを理解するために、プロトコル階層統計を使用します。これにより、各プロトコルに属するトラフィックの割合が表示されます。
tshark -r smb_capture.pcapng -qz io,phs
SMB トラフィックを扱っているので、SMB サービスの応答時間を具体的に分析することができます。これにより、サーバーがクライアントの要求にどれだけ迅速に応答するかを特定するのに役立ちます。
tshark -r smb_capture.pcapng -qz smb,srt
次に、エンドポイント統計を調べて、どの IP アドレスが最も多くのトラフィックを生成または受信しているかを確認しましょう。
tshark -r smb_capture.pcapng -qz endpoints,ip
ホスト間の通信パターンを理解するために、会話統計を使用します。これにより、特定の IP ペア間のトラフィック量が表示されます。
tshark -r smb_capture.pcapng -qz conv,ip
後で分析するために統計情報を保存することは、しばしば役に立ちます。ここでは、プロトコル階層をテキストファイルに保存します。
tshark -r smb_capture.pcapng -qz io,phs > protocol_stats.txt
最後に、保存された統計情報を表示して、出力を確認することができます。
cat protocol_stats.txt
まとめ
この実験では、Wireshark と tshark を使用して SMB サービスの応答時間を測定する方法を学びました。このプロセスでは、「tcp port 445」フィルタを使用して SMB トラフィックをキャプチャし、次に tshark の「-z smb,srt」パラメータを通じてセッション応答時間を分析し、SMB のパフォーマンスを評価しました。
また、「-Y」オプションを使用して IP アドレスでトラフィックをフィルタリングし、「-q」を使用して統計要約を生成する練習も行いました。これらの技術は、コマンドラインツールを使用したネットワークトラフィック分析と SMB プロトコルの監視に必要なスキルを提供します。


