このページの目次
tcpdump と Wireshark
ネットワークトラブルシューティングの最前線ツール——tcpdump は BPF フィルタを使用してカーネル空間でフィルタリングを行い(一致しないパケットはユーザー空間にコピーされず、grep よりも桁違いに高速)、Wireshark はプロトコルフィールドレベルの可視化分析を提供します。TLS 復号の鍵は SSLKEYLOGFILE です。
概要
ネットワークトラブルシューティングにおいて最も重要なツールはパケットキャプチャです。tcpdump はサーバー側で BPF フィルタを使用してトラフィックをフィルタリングし、Wireshark は可視化分析を提供します。BPF フィルタはカーネルレベルのフィルタプログラムにコンパイルされ、パケットがユーザー空間にコピーされる前に一致しないトラフィックを破棄します。これは grep を使用してフィルタリングを行うよりも桁違いに効率的です。Wireshark の display filter は、すでにキャプチャされたパケット上で動作し、任意のプロトコルフィールドに対する詳細なフィルタリングをサポートします。TLS 復号には SSLKEYLOGFILE が鍵となります。
BPF フィルタ
BPF (Berkeley Packet Filter) はカーネルレベルのフィルタプログラムにコンパイルされ、パケットキャプチャの前に一致しないパケットを破棄し、ユーザー空間へのコピーを回避します。
host 192.168.1.1
net 192.168.0.0/24
port 443
portrange 8000-9000
tcp, udp, icmp, arp
and / or / not / && / || / !
TCP フラグ:
'tcp[tcpflags] & tcp-syn != 0' SYN
'tcp[tcpflags] == tcp-syn' SYN のみ (SYN+ACK は除く)
'tcp[tcpflags] & tcp-rst != 0' RST
組み合わせ:
'(host 1.1.1.1 or host 8.8.8.8) and tcp port 443'
実践的なコマンド
# ファイルへのパケットキャプチャ:
# DNS:
# TCP SYN (すべての接続確立):
# HTTP Host ヘッダー:
|
# tshark (Wireshark CLI):
# TLS 復号:
# Wireshark: Edit - Preferences - TLS - (Pre)-Master-Secret log filename = SSLKEYLOGFILE
参考
- BPF 構文: tcpdump.org/manpages/pcap-filter.7
- Wireshark: wiki.wireshark.org/DisplayFilters
キーワード: tcpdump, BPF フィルタ, Wireshark, tshark, パケットキャプチャ, 再送