Scott Reeves が、TCP および UDP トラフィックを分離するのに役立つ Wireshark フィルターを紹介します。
Wiresharkはダウンロード可能なプロトコルアナライザーです。今週の投稿では、Wiresharkの簡単な紹介と、2つの異なるトラフィッククラスを抽出できる2つの基本的なフィルターを紹介します。
Wiresharkはコマンドラインから起動できますが、通常はrootまたはsudoで実行する必要があります。図Aはキャプチャ画面を示しています。
図A
クリックすると拡大します。
キャプチャを開始するには、図Aの緑色の円で囲まれたアイコンをクリックするだけです。その隣にある赤色の円で囲まれたアイコンをクリックすると、キャプチャが停止します。図Aに 示すように、Wiresharkの出力は2つのペインで構成されています。上のペインにはパケットが表示され、下のペインには上のペインでハイライト表示されたパケットの詳細が表示されます。Wiresharkセッションを停止すると、出力をファイルに保存できます。これにより、キャプチャされたトラフィックをより詳細に分析できます。
この記事の前半で使用したWiresharkのキャプチャは、iperfを実行しているセッションから取得されました。iperfセッションは30秒間の連続送信でした。ネットワーク上にはiperfトラフィックに加えて、他のトラフィックも存在していました。
図 Bでは、接続を開始するための TCP 3 ウェイ ハンドシェイクが丸で囲まれています。
図B
クリックすると拡大します。
上部フレームでパケットをハイライト表示すると、図Bに示すように、下部ペインにパケットの概要が表示されます 。下部ペインのセクションを展開すると、パケットの内容をより詳細に調べることができます。例えば、図CではIPセクションとTCPセクションが展開されています。データセクションやイーサネットセクションを展開することもできます。
図C
クリックすると拡大します。
Wiresharkは、パケットが最大転送単位(MTU)に収まるようにフラグメント化されたかどうかを示します。この場合、MTUは1514バイトです。ちなみに、送信された各フレームのプロトコルオーバーヘッドも確認できます。この場合、フレームのプロトコルオーバーヘッドは54バイトであることがわかります。これは、イーサネットヘッダー情報(14バイト)、IPヘッダー(20バイト)、TCPヘッダー(20バイト)で構成されています。残りの1460バイトがデータ用です。
この記事の後半では、いくつかの基本的なフィルターを用いてトラフィッククラスを分離する方法について説明します。今回は、iperfを実行するのではなく、通常の使用期間中にキャプチャを行いました。最初に確認するクラスはhttpトラフィックです。このタイプのトラフィックはトランスポート層でTCPを使用し、ポート80で動作します。この場合に使用するフィルターはtcp.port==80です。使用したフィルターと出力を図Dに示します。
図D
クリックすると拡大します。
調査対象となったもう1つのトラフィックタイプ(ネットワーク問題のトラブルシューティングに役立つ可能性があります)はDNSトラフィックです。DNSはポート53を使用し、トランスポート層にはUDPを使用します。DNSトラフィックをフィルタリングするために、フィルタudp.port==53が使用されます。図Eに示すように、このキャプチャ中にDNSに対して4つのクエリが実行されました。これらのクエリを追跡することで、DNSルックアップに関連する問題の有無を確認することができます。
図E
クリックすると拡大します。
Wiresharkは、ネットワーク上で実際に何が起こっているかを確認したい場合に非常に役立つツールです。提供されたデータをさらに深く掘り下げるためのツールも備えています。今回は、TCPトラフィックとUDPトラフィックを観察するための2つの基本的なフィルターを見てきました。

スコット・リーブス3
25年間この業界で働き、現在はPython、データベース、ロボット工学、ネットワークなど、IT関連の分野を学生に教えています。それ以前は、主にUnix/Linuxのシステム管理に携わっていました。1990年代後半にC言語のプログラマーとしてキャリアをスタートし(今でもかなりC言語でプログラミングをしています)、Vodafone、HP、IBMでシステムエンジニアとして勤務しました。また、ストレージキット(EMC、HDS、IBM)とファイバーチャネルスイッチ(Cisco、Brocade、McData)の知識も持っています。