このチュートリアルでは、tshark コマンドを使用する際のいくつかの実用的で役立つシナリオについて説明します。
キャプチャを複数のファイルに自動保存する方法、時間制限に基づいてキャプチャを自動保存する方法、キャプチャ用に独自のバッファ サイズを指定する方法、キャプチャから特定のフィールドを抽出する方法、およびキャプチャから特定のプロトコルの統計を表示する方法を理解できます。 br />
1.キャプチャを複数のファイルに自動保存
たとえば、運用サーバーで、トラフィック データを長期間キャプチャする必要があるとします。これらのキャプチャを後で使用して、データを分析したいと考えています。
そのような状況では、すべての出力を 1 つのファイルに保存する代わりに、指定したサイズに基づいてキャプチャを複数のファイルに自動的に分割することができます。
次の例では、ネットワーク トラフィックを 20 個のファイル (それぞれのサイズは 100 KB) にキャプチャし、キャプチャは自動的に停止します。
# tshark -b filesize:100 -a files:20 -w temp.pcap Running as user "root" and group "root". This could be dangerous. Capturing on eth0 28 # ls -lrt total 12 -rw------- 1 root root 1088 Apr 10 16:02 capture_00001_20140410160213.pcap -rw------- 1 root root 1088 Apr 10 16:02 capture_00002_20140410160215.pcap
上記では:
- -b はリングバッファオプションです
- filesize:100 は、出力キャプチャ ファイルの最大サイズが 100 KB であることを示します
- files:20 は、作成する出力ファイルの総数が 20 であることを示します
- -a は自動停止を示します
2.制限時間に基づいてキャプチャを自動保存
次の例では、ネットワーク トラフィックを複数のファイルにキャプチャします。ただし、ファイルサイズが 10240KB に達するか、1 秒経過すると新しいファイルに切り替わります。それに応じて自動停止条件を使用できます。
# tshark -b filesize:10240 -b duration:1 -w temp.pcap Running as user "root" and group "root". This could be dangerous. Capturing on eth0 34 # ls -lrt -rw------- 1 root root 1863 Apr 10 16:13 temp_00001_20140410161312.pcap -rw------- 1 root root 1357 Apr 10 16:13 temp_00002_20140410161313.pcap -rw------- 1 root root 1476 Apr 10 16:13 temp_00003_20140410161314.pcap -rw------- 1 root root 1216 Apr 10 16:13 temp_00004_20140410161315.pcap
3.キャプチャ バッファ サイズの指定
このシナリオは、キャプチャ中にパケット ドロップが発生した場合に役立ちます。
このような状況では、-B オプションを使用してキャプチャ バッファ サイズを MB 単位で指定できます。デフォルトのキャプチャ サイズは 1MB です。
これは、データがディスクに書き込まれるまで、パケット データをバッファリングするためにキャプチャ ドライバによって使用されます。キャプチャ中にパケット ドロップが発生した場合は、このサイズを増やしてみてください。
# tshark -B 2 2. Running as user "root" and group "root". This could be dangerous. 3. Capturing on eth0 4. 0.000000 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.59.101? Tell 10.30.32.1 5. 0.064507 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.70.11.143? Tell 10.70.0.1 6. 0.067515 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.70.11.143? Tell 10.70.0.1 7. 0.089554 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.50.212? Tell 10.30.32.1 8. 0.183726 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.36.86? Tell 10.30.32.1
4. 「decode as」オプションを使用してキャプチャ
このシナリオは、レイヤー タイプを分析する方法を指定する必要がある場合に役立ちます。
これはwiresharkの「decode as」オプションと同じですが、指定されたセレクタ値がパケットに存在する値と異なる場合があります。たとえば、diameter パケットの送信元と宛先のポート番号が 3868 (デフォルトのポート番号) とは異なる場合、適切に分析できるように、この値を tshark に指定する必要があります。
# tshark -r capture.pcap -d sctp.port==3869,diameter 82 212.059173 192.168.105.20 -> 192.168.105.30 DIAMETER 262 cmd=Capabilities-ExchangeRequest(257) flags=R--- appl=Diameter Common Messages(0) h2h=204a16 e2e=67700000 83 212.059330 192.168.105.30 -> 192.168.105.20 SCTP 62 SACK 84 212.078804 192.168.105.30 -> 192.168.105.20 DIAMETER 294 cmd=Capabilities-ExchangeAnswer(257) flags=---- appl=Diameter Common Messages(0) h2h=204a16 e2e=67700000 85 212.080569 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a29 e2e=63d00002 86 212.084960 192.168.105.20 -> 192.168.105.30 SCTP 62 SACK 87 212.084998 192.168.105.20 -> 192.168.105.30 DIAMETER 178 SACK cmd=Device-WatchdogAnswer(280) flags=---- appl=Diameter Common Messages(0) h2h=5542a29 e2e=63d00002 88 212.100324 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a2a e2e=63d00003 89 212.101629 192.168.105.20 -> 192.168.105.30 DIAMETER 178 SACK cmd=Device-WatchdogAnswer(280) flags=---- appl=Diameter Common Messages(0) h2h=5542a2a e2e=63d00003 90 212.110997 192.168.105.30 -> 192.168.105.20 SCTP 62 SACK 91 212.119855 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a2b e2e=63d00004
5.特定のフィールドを抽出
たとえば、このシナリオは、Diameter プロトコル パケットから特定のフィールドを抽出する場合に役立ちます。
tshark コマンドを使用して非標準ポートで実行されるサービスのデータをキャプチャする方法は既に知っています。
現在、tshark はいくつかのプロトコル セットに対してこのオプションをサポートしています。
-V オプションを使用し、クイック スクリプトまたは grep コマンドと組み合わせて同じことを行うこともできます。ただし、非常に大きなファイルの場合は、以下に示す方法の方が高速です。
# tshark -q -r capture.pcap -R diameter -z diameter,avp,257,Origin-Host Running as user "root" and group "root". This could be dangerous. frame='82' time='212.059176' src='192.168.105.20' srcport='35132' dst='192.168.105.30' dstport='3868' proto='diameter' msgnr='0' is_request='1' cmd='257' req_frame='82' ans_frame='0' resp_time='0.000000' Origin-Host='backend.eap.testbed.aaa' frame='84' time='212.078807' src='192.168.105.30' srcport='3868' dst='192.168.105.20' dstport='35132' proto='diameter' msgnr='0' is_request='0' cmd='257' req_frame='82' ans_frame='84' resp_time='0.019631' Origin-Host='gw.eap.testbed.aaa' frame='126' time='225.283773' src='192.168.105.40' srcport='2844' dst='192.168.105.30' dstport='3868' proto='diameter' msgnr='0' is_request='1' cmd='257' req_frame='126' ans_frame='0' resp_time='0.000000' Origin-Host='opendiam.eap.testbed.aaa' frame='130' time='225.295815' src='192.168.105.30' srcport='3868' dst='192.168.105.40' dstport='2844' proto='diameter' msgnr='0' is_request='0' cmd='257' req_frame='126' ans_frame='130' resp_time='0.012042' Origin-Host='gw.eap.testbed.aaa' === Diameter Summary === requset count: 2 answer count: 2 req/ans pairs: 2
6.特定のプロトコルの統計を表示
特定のプロトコルのキャプチャされたファイルから統計を表示することもできます。
たとえば、次の例では、HTTP プロトコル用にキャプチャされたファイルから統計を出力します
# tshark -q -r a.pcap -R http -z http,tree Running as user "root" and group "root". This could be dangerous. =================================================================== HTTP/Packet Counter value rate percent ------------------------------------------------------------------- Total HTTP Packets 7 0.000375 HTTP Request Packets 4 0.000214 57.14% GET 4 0.000214 100.00% HTTP Response Packets 3 0.000161 42.86% 2xx: Success 2 0.000107 66.67% 200 OK 2 0.000107 100.00% 3xx: Redirection 1 0.000054 33.33% 302 Found 1 0.000054 100.00% 5xx: Server Error 0 0.000000 0.00% Other HTTP Packets 0 0.000000 0.00%