トラブルシューティングの決め手!Windows と Linux でパケットキャプチャを取得する方法

トラブルシューティングの決め手!Windows と Linux でパケットキャプチャを取得する方法

Windows / Linux の OS 標準ツールでパケットキャプチャを取得して Wireshark で解析する方法を解説しています。
2026.07.13

はじめに

クラスメソッドオペレーションズの Shimizu です。

日々のテクニカルサポート業務で「アプリケーションへの接続がうまくいかない」「サーバーへ通信が届いているか確認したい」といったお問い合せをよくいただきます。
このような「ログに記録されない通信トラブル」の調査において、決め手になるのがパケットキャプチャの取得です。

とはいえ、いざ取得しようとすると「何か特別なツールが必要なの?」「Windows OS でも大丈夫?」と手が止まりがちです。
実は Linux、Windows OS ともに標準のパケットキャプチャツールが用意されていますが、その使い方がまとめられている記事は少ないように感じています。

そこで本記事では、Windows と Linux それぞれで OS の標準ツールを使ってパケットキャプチャを取得し、Wireshark で解析するまでの流れを紹介します。

前提条件

  • パケット解析用端末に Wireshark をインストール済み
  • TCP/IP の基礎知識(本記事では詳しく解説していません)

Windows / Linux ともにパケットキャプチャの取得は OS 標準ツールを使用しますが、そのままでは解析しにくいため、解析には Wireshark を利用します。

Wireshark のインストールと基本操作は以下を参考にしてください。

https://www.wireshark.org/download.html

https://hwdream.com/wireshark/

以下に Linux と Windows でのパケット取得方法、Wireshark での確認手順を順番にご紹介します。

Linux の tcpdump コマンドを使ってパケットキャプチャを取得する

多くの Linux ディストリビューションに標準搭載されているコマンド tcpdump でパケットを取得してみます。今回は Amazon Linux 2023 にターミナルでログインして操作します。

まず tcpdump コマンドのバージョンを確認します。もし command not found になる場合は、まだ入っていないのでインストールします。

# バージョン確認
tcpdump --version

# インストール(必要に応じて)
sudo dnf install -y tcpdump

パケットキャプチャの開始前に、指定するネットワークインターフェース名を確認します。ifconfig コマンドで以下例のように出力されれば、インターフェース名は ens5 です。

# ネットワークインターフェースの名前を確認
ifconfig

# 出力例
ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.31.2.31  netmask 255.255.255.0  broadcast 172.31.2.255
        inet6 fe80::8cc:21ff:fe4f:2455  prefixlen 64  scopeid 0x20<link>
        ether 0a:cc:21:4f:24:55  txqueuelen 1000  (Ethernet)
        RX packets 79817  bytes 170973391 (163.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31330  bytes 13344707 (12.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

パケットキャプチャの取得を開始します。今回はインターフェース ens5 を流れるパケットをファイル linux-capture.pcap に保存するため、以下のように実行します。末尾に & を付けることでバックグラウンドで実行されるため、ターミナルから他の操作を行えます。
※ インターフェース名やファイル名は、実際の環境に併せて置き換えてください。

# パケットキャプチャの取得開始
sudo tcpdump -i ens5 -w ./linux-capture.pcap &

パケットキャプチャが実行中か分からなくなった場合は ps -af コマンドで確認してみます。以下例のように tcpdump プロセスが表示されれば実行中です。

# tcpdump プロセスの確認
ps -af

# 出力例
UID          PID    PPID  C STIME TTY          TIME CMD
root        8615    8303  0 04:10 pts/0    00:00:00 sudo tcpdump -i ens5 -w ./linux-capture.pcap

パケットキャプチャの取得を開始したら、記録したい通信を発生させます。もし通信不具合の調査を行いたい場合は、ここで不具合を再現しましょう。

今回はテストのため、適当に以下のようなコマンドで google サイトへの通信を発生させます。

# google サイトへの https 通信
curl https://google.com/

# google サイトへの ping 通信
ping google.com

記録したい通信が完了したら、パケットキャプチャの取得を停止します。

# tcpdump プロセスの終了
sudo killall tcpdump

# tcpdump プロセスが無いことを確認
ps -af

取得したパケットキャプチャファイル(.pcap)の内容は、tcpdump コマンドでも表示可能です。

# 取得したパケットキャプチャファイルの表示
tcpdump -nn -vvv -r linux-capture.pcap

# 出力例
reading from file linux-capture.pcap, link-type EN10MB (Ethernet), snapshot length 262144
04:10:34.790216 IP (tos 0x0, ttl 127, id 15236, offset 0, flags [DF], proto TCP (6), length 317)
    172.31.2.31.58592 > 52.195.202.255.443: Flags [P.], cksum 0xaf30 (incorrect -> 0x2bc4), seq 3883648943:3883649208, ack 3307978208, win 1302, options [nop,nop,TS val 4055529379 ecr 1756380885], length 265
04:10:34.790225 IP (tos 0x0, ttl 127, id 48640, offset 0, flags [DF], proto TCP (6), length 563)
    172.31.2.31.48170 > 172.31.2.52.443: Flags [P.], cksum 0x5eb7 (incorrect -> 0x81e4), seq 2727916608:2727917119, ack 2533451943, win 461, options [nop,nop,TS val 3137661017 ecr 2508877047], length 511
04:10:34.791090 IP (tos 0x0, ttl 253, id 22463, offset 0, flags [DF], proto TCP (6), length 52)
    172.31.2.52.443 > 172.31.2.31.48170: Flags [.], cksum 0x4e72 (correct), seq 1, ack 511, win 3913, options [nop,nop,TS val 2508877088 ecr 3137661017], length 0

ですが上記のようにコマンドラインでは冗長で見づらいので、後述のように .pcap ファイルを Wireshark がインストールされた端末に移動して確認するのが一般的です。

なおパケットキャプチャは記録される情報量が多いため、無差別に取得するとファイルサイズが大きくなりがちです。
取得するパケットの条件(通信先 IP アドレスやポート)をフィルタリングすることで、ファイルサイズを小さく、分析もしやすくできます。

下記サイトに tcpdump コマンドのオプション詳細がありますので、参考にしてみてください。

https://www.tohoho-web.com/ex/tcpdump.html

Windows の pktmon コマンドを使ってパケットキャプチャを取得する

この方法は pktmon コマンドが使える Windows バージョン(Windows 10 / Windows Server 2019 以降)であることが前提になります。詳細は以下をご覧ください。

https://learn.microsoft.com/ja-jp/windows-server/networking/technologies/pktmon/pktmon

今回は Windows Server 2025 の EC2 を起動してリモートデスクトップでログインします。PowerShell を管理者権限で起動します。

img-001

pktmon コマンドは Linux の tcpdump コマンドと同様、取得対象のネットワークインターフェースやポートをオプションで指定することが可能です。詳細は以下をご覧ください。

https://learn.microsoft.com/ja-jp/windows-server/networking/technologies/pktmon/pktmon-syntax?source=recommendations

今回は特にフィルタリングせずに、出力ファイル名を win-capture.etl としてキャプチャを開始します。

現在キャプチャが実行中であるかは pktmon status コマンドで確認できます。

# ステータス確認
pktmon status

# 実行されていない時の出力
Packet Monitor is not running.

# パケット取得の開始
pktmon start --capture --file-name C:\temp\win-capture.etl

# 再度ステータス確認
pktmon status

# 実行時の出力例
Logger Parameters:
	Logger name: PktMon
	Logging mode: Circular
	Log file: C:\temp\win-capture.etl
	Max file size: 512 MB
	Memory used: 64 MB
Collected Data:
	Packet counters, packet capture
Capture Type:
	All packets
Monitored Components:
	ALL
Packet Filters:
	None

パケットキャプチャの取得を開始したら、記録するために調査対象の通信を実施します。
今回はテストのため、適当に google サイトへのブラウザアクセスと、google.com への ping 通信を発生させます。

img-002

記録したい通信が完了したら、パケットキャプチャの取得を停止します。

# パケット取得の停止
pktmon stop

# 停止時の出力例
Flushing logs...
Merging metadata...
Log file: C:\temp\win-capture.etl (No events lost)

指定したフォルダに .etl 形式のファイルが出力されたことを確認します。

img-003

なお保存された .etl 拡張子のファイルはそのままでは開くことができず、Microsoft 公式サイトから Windows パフォーマンス アナライザー (WPA) というツールをインストールする必要があります。

https://learn.microsoft.com/ja-jp/windows-hardware/test/wpt/opening-and-analyzing-etl-files-in-wpa

ここでは上記ツールの説明を割愛しますが、一般的には下記コマンドで .etl ファイルを Wireshark で開けるファイル形式(.pcap、.pcapng)に変換して分析します。

# .etl ファイルを .pcapng ファイルに変換
pktmon etl2pcap C:\temp\win-capture.etl --out C:\temp\win-capture.pcapng

# 変換できたときの出力例 
Processing...
Packets total: 128
Packets dropped: 0
Formatted file: C:\temp\win-capture.pcapng

ファイル形式の変換ができたら、Wireshark をインストールした解析用の端末にファイルを保存し、次のステップに進みます。

Wireshark で .pcap ファイルを 解析する

解析用端末に、取得したパケットキャプチャファイル(.pcap、.pcapng)を保存して、Wireshark アプリケーションの「File > Open」から開きます。
(筆者の環境では Mac 版を使用していますが、Windows 版でもほぼ同じ操作です)

img-004
img-005

Wireshark はパケットキャプチャの通信内容を直感的な操作で、グラフィカルに解析できます。
例えば HTTP 通信のみを表示したい場合は、検索窓に http と入力するだけでフィルタリングされ、リクエストとレスポンスの詳細を表示できます。

img-006

同様に ping の内容を確認したい場合は icmp と入力し、TCP ハンドシェイクの様子を確認したい場合は tcp と入力するだけです。

img-007
img-008

他にも Wireshark では、様々なフィルタリング表示が可能です。下記記事で紹介されているので、参考にしてみてください。

https://www.planex.co.jp/articles/lan/no10/

さいごに

パケットキャプチャは他の一般的な通信ログ(Webアクセスログや VPC フローログ等)と比較して多くの情報が記録されるため、通信系のトラブルシューティングには最も強力な手段と言えます。
ただしファイルサイズが大きくなる性質上「常に記録・保存する」ということが難しく、「調査の時のみ取得する」という形が基本です。

パケットキャプチャの取得には一手間かかるうえ、解析も難しいというイメージをお持ちの方も多いと思いますが、その心理的ハードルを少しでも下げることができればと思い、本記事を執筆しました。
この内容がどなたかのお役に立てば幸いです!

参考資料

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

関連記事