LoginSignup
8
4

More than 5 years have passed since last update.

gRPC の通信を Wireshark でキャプチャする(windows)

Posted at

gRPC アプリケーションのデバッグを目的とし、Wireshark で通信をキャプチャしてみます。

環境

OS : Windows10
gRPC : 1.16.0 (C#)

準備

Npcap のインストール

Windows 版の Wireshark 単体では、localhost の通信をキャプチャすることができません。ここでは NpCap を利用します。

【Npcap】公式サイト

  • Downloading and Installing Npcap の項からインストーラーをダウンロードします。2018/11/09 時点の最新版は 0.99-r7 です。
  • インストーラーを実行します。Instration options ページの Install Npcap in WinPcap API-compatible Mode にチェックをつけます。

Wireshark のインストール

【Wireshark】公式サイトのダウンロードページ

  • インストーラーをダウンロードします。2018/11/07 時点の最新版は 2.6.4 です。
  • インストーラーを実行します。Install WinpCap? ページでは Npcap がインストール済であることが表示され、WinPcap のインストールが選択不可になっているはずです。
  • Wireshark を起動すると、ネットワークアダプタの一覧にイーサーネットやローカルエリア接続に並んで Npcap Loopback Adapterが表示されており、それを選択すると 127.0.0.1 に流れるパケットが表示されます。

gRPC のキャプチャ

下の画像は localhost で通信を行う gRPC アプリケーションを実行したときの結果です。
grpc.jpg

フィルタする

アプリケーションが使用しているポートのみを表示するようにフィルタ(背景色が緑のバーの部分)を設定しています。

tcp.dstport == 50051 or tcp.srcport == 50051

HTTP2として表示する

上の画像では Protocol 列には TCP と表示されています。既定の動作では、gRPC アプリケーションの通信は HTTP2 ではなく TCP と判定されてしまうようです。次の方法で HTTP2 であることを設定します。

  1. リスト上で右クリックメニューを表示し、Decode As… を選択します。
  2. 表示されたダイアログで Current 列をクリックし、(none)HTTP2 に変更します。

すると protocol 列の表示が HTTP2 に変わります。
grpc2.jpg

SSLを有効にしてみる

下の画像は Grpc.Core.SslServerCredentials を使用して SSL を有効にしたときの結果です。protocol 列には TLSv1.2 と表示され、アプリケーションデータが暗号化されていることが分かります。
grpc3.jpg

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4