GNU/Linux >> Linux の 問題 >  >> Linux

TShark を使用したコマンドラインからのネットワーク トラブルシューティング

パケット キャプチャを最適化する 1 つの方法は、コマンド ライン インターフェイス ツールを使用することです。TShark は、見つけることができるすべてのツールの中で、試してみる必要があるツールの 1 つです。 TShark は Wireshark GUI に相当し、ネットワークでキャプチャされたトラフィックに関する貴重な情報を提供します。

これが優れている点の 1 つは、複数のボタンをクリックしてさまざまなメニューを掘り下げる代わりに、コマンドを 1 つ入力するだけで必要な情報を取得できることです。

読み進めて、パケット キャプチャの分析に何時間も無駄にしないでください!

前提条件

このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものがあることを確認してください。

  • Linux マシン – このチュートリアルでは Ubuntu 20.04 LTS を使用しますが、どの Linux ディストリビューションでも機能します。
  • sudo 権限を持つ root 以外のユーザー
  • Wireshark がマシンにインストールされていること。

Ubuntu への TShark のインストール

TShark はデフォルトでは Linux ディストリビューションにインストールされていないため、これを利用する前に、マシンに TShark をインストールしてこのチュートリアルを開始してください。

パッケージ マネージャーを使用して、ほとんどの Linux ディストリビューションおよび BSD オペレーティング システムにインストールできます。ただし、このデモでは、APT パッケージ マネージャーを使用してインストールします。

1. apt update を実行します 以下のコマンドを実行して、パッケージ マネージャーが最新であることを確認します。このコマンドは、システムのパッケージとその現在のバージョンのリストを更新します。

sudo apt update -y

2. 次に、apt install を実行します。 以下のコマンドを実行して、マシンに TShark コマンドライン ツールをインストールします。

sudo apt install tshark -y

3. 以下の tshark --version を実行します コマンドを実行して、ツールがシステムで使用可能であることを確認します。

tshark --version

以下のような出力が得られます。これを書いている時点で、現在のバージョンは 3.4.8 ですが、お使いのバージョンは異なる場合があります。

4. 最後に、tshark --help を実行します。 以下のコマンドを実行して、使用可能なすべてのコマンドを表示します。コマンド

tshark --help

以下に示すように、そのコマンドの多くを使用して、ネットワークでキャプチャされたデータに関する情報を取得できます。この出力には、少数の使用可能なコマンドのみが表示されます。以下のセクションでは、これらのコマンドのいくつかの基本的な使い方を学びます。

ネットワーク インターフェースからのすべてのパケットのキャプチャ

インストールが完了したので、パケットをキャプチャして、キャプチャしたネットワーク データを分析できます。特定のインターフェースを使用してネットワーク データをキャプチャできますが、データをキャプチャする前に、データをキャプチャするネットワーク インターフェースを開始して指定する必要があります。

1. tshark を実行します 使用可能なすべてのネットワーク インターフェイスを一覧表示するコマンド (-D ) T-shark は、古いものや活動していないものも見つけることができます。

sudo tshark -D 

以下に示すように、システムで使用可能なインターフェースのリストが表示されます。システムに複数のネットワーク カードがインストールされている場合は、開始してインターフェイスを指定する前に、必ず tshark -D コマンドを実行してください。

2. 次に、ip link を実行します。 以下のコマンド (Linux および BSD システムの場合) を実行して、すべてのアクティブなネットワーク インターフェイスを一覧表示します。使用するアクティブなネットワーク インターフェースを選択する必要があります。

TShark はシステム上のすべてのネットワーク インターフェイスを一覧表示しますが、その時点ですべてがアクティブであるとは限りません。

sudo ip link show 

ほとんどの場合、イーサネット カードなどのネットワーク インターフェイスを使用します。この例では、パケットをキャプチャするために、以下に示すように eth0 を書き留めます。

3. 最後に、次の tshark を実行します インターフェイスを選択するコマンド (-i ) ライブ パケットをキャプチャします。 interface を置き換えます ステップ 2 で書き留めたインターフェイスを使用します。

sudo tshark -i interface

データのキャプチャを開始すると、以下に示すように、パケットがリアルタイムで表示されます。また、いつでも Ctrl+C を押してパケットのキャプチャを停止できます。

他の一般的なデータ ネットワーク パケット アナライザー ツールと同様に、 tcpdump と Wireshark、Tshark は を使用します パケットをキャプチャするための pcap ライブラリ (libpcap)。この場合、pcap ライブラリを使用して eth0 インターフェイスからパケットをキャプチャします。

以下に示すように、キャプチャされたパケットのデコードされた形式を出力します。各行は人間が読める形式で、端末の標準出力 (stdout) に出力されます。

特定の数のパケットをキャプチャする

特定の数のパケットを分析することに関心があるとします。その場合、すべてのパケットをキャプチャする代わりに、キャプチャするパケットの数を指定して直接分析します。

特定の数のパケットをキャプチャするには、-c を追加します tshark のオプション (キャプチャ パケット数) コマンド。

次のコマンドを実行して、最初の 10 パケット (-c 10 ) パケットが tshark にルーティングされているかどうかを確認します 正しく。 10 を置き換えます キャプチャするパケットの好みの数で。

sudo tshark -i eth0 -c 10

パケットをキャプチャしてパケットの表示を抑制したい場合は、-q を追加します。 代わりにオプション。 -q このオプションは、キャプチャされたパケットの総数のみを表示し、端末の出力を継続的にスクロールしたくない場合に便利です。

以下のコマンドを実行して、抑制中にパケットをキャプチャします (-q ) 出力。

sudo tshark -i eth0 -q

Ctrl+C を押すとすぐに、TShark はターミナルでキャプチャされたパケットの総数を出力します。以下では、合計 84 を確認できます キャプチャされたパケット。

フィルタ文字列による特定のパケットのキャプチャ

おそらく、キャプチャされたパケットの数が多すぎて、目だけで特定の文字列を探すことはほとんど不可能です.この場合、フィルターを使用して、選択した文字列でパケットをキャプチャする必要があります。

TShark のキャプチャ フィルター式を使用して、プロトコル、送信元/宛先のホスト/ポートのペアなどに基づいてパケットを選択します。たとえば、SSH 接続が機能していないため、SSH 接続に関連するパケットのみをキャプチャしたいとします。

以下のコマンドを実行して、パケット (-f) をキャプチャしてフィルタリングします。 ) tcp port 22 文字列。

sudo tshark -i eth0 -f "tcp port 22" -c 10

文字列フィルタでは不十分な場合は、キャプチャ フィルタを実行した後に表示フィルタを使用して、検索を絞り込み、特定のパケットを分析することもできます。表示フィルターは、比較演算子 (!==、===、==など) を利用して、文字列、パターン、またはバイト シーケンスをテストします。

ブール演算子 (and、or、not) と括弧でグループ化して、より複雑な式を指定することもできます。

たとえば、SSH への接続に使用する IP アドレスを見つけた後、パケットをさらに掘り下げたいとします。この場合、== を使用します (equal (複数の場合は任意)) 演算子。以下に示します。

tshark を実行します 最初の 10 をキャプチャして表示する以下のコマンド フィルタリングされたパケット (-Y ) 69.28.83.134 に関連する IP アドレス。

sudo tshark -i eth0 -Y 'ip.addr == 69.28.83.134' -c 10

以下の出力には、69.28.83.134 に関連するパケットのみが表示されていることがわかります。 IP アドレス。

キャプチャしたパケットをファイルに保存する

キャプチャされたパケットをリアルタイムで表示することで、すぐにトラブルシューティングを行うことができます。しかし、現時点ではトラブルシューティングを行う時間がないかもしれません。それでは、キャプチャしたパケットをファイルに保存してみませんか?たとえば、SSH 接続が正常に機能していたのに、突然接続が利用できなくなったとします。

ターミナルでパケットをスクロールしても、問題の原因を理解するための情報が得られるとは限りません。この場合、TShark を使用してキャプチャしたパケットを保存し、助けてくれると思われる友人や同僚と共有できます。

以下のコマンドを実行して、キャプチャしたパケットをファイル .pcap に保存します。 ファイル。このコマンドは以下を実行します:

  • キャプチャ リング バッファ オプションを設定します (-b )、複数ファイル モードが表示されます。このモードでは、TShark はキャプチャしたパケットを番号付きファイルに書き込みます。最初のファイル サイズがいっぱいになると、TShark は次のファイルに移動します。
  • TShark に 10 個のファイル (-a files:10) を作成するように指示します。 ) リング バッファ動作モードでキャプチャされたパケットを含み、各ファイルには 1024 が含まれます KB (1MB)。 files を追加しない場合 オプションを選択すると、リング バッファ モードの操作は、ディスク領域がいっぱいになるか、停止条件が発生するまで永久に実行されます。

このオプションで使用できるファイル数に制限はありません。ただし、リング バッファ モードでのすべてのファイルの合計サイズは 2GB を超えることはできません。この制限に達すると、TShark は一時停止し、続行する前にいくつかのファイルを削除してディスク領域を解放するまで待機します。

  • パケットをファイルに書き込みます (-w )、この場合は ata.pcap 、特定のインターフェイスでキャプチャを実行している間 (eth0 ).
sudo tshark -i eth0 -f "tcp port 22" -b filesize:1024 -a files:10 -w ata.pcap

TShark は、書き込みの進行状況と、ファイルへの書き込み時にキャプチャされたパケットの連続カウントを表示しません。以下に示すように、キャプチャされたパケットの数のみが表示されます。

ここで、CTRL+C を押して、書き込みプロセスをある時点で停止します。以下に示すように、セッション中にキャプチャされたパケットを含む新しいファイルが作成されます。

このファイルを友達と共有して、一緒に問題のデバッグを続けることができます!

結論

このチュートリアルでは、TShark を Ubuntu マシンにインストールする方法を学習しました。また、フィルタを追加して特定のキャプチャされたパケットを検索し、キャプチャされたパケットをファイルに書き込む方法も学びました。

この時点で、TShark と、パケットを管理するための基本的なコマンド ライン オプションを既に理解しています。自分でネットワークの問題のトラブルシューティングを開始したり、友人との絆を深めたりすることができます!

この新たに発見された知識を利用して、AWS EC2 でパケットを監視するために Wireshark と共に Tshark をインストールしてみませんか?それとも、ビデオ ストリームのビットレートを測定しますか?


Linux
  1. HomebrewでMacからLinuxへの切り替えを簡単に

  2. ネットワークを介したLinuxでのファイル変更の監視に関する考え

  3. 5Linuxネットワークのトラブルシューティングコマンド

  1. ubuntuでarp-scanを使用してローカルネットワークをスキャンします

  2. コマンドラインから JSON ペイロードを使用して HTTP 要求/呼び出しを行う方法は?

  3. コマンドラインから Linux (Ubuntu) を再起動するにはどうすればよいですか?

  1. nmcliを使用してLinuxコマンドラインからネットワーク接続を管理する

  2. Linuxコンテナの舞台裏

  3. コマンドラインからPostgresqlデータベースにログインする方法