通信を録って確かめる(tcpdump入門実務)
「アプリからAPIへの通信が届いていない気がする」。推測をやめて、実際にパケットが出ているか・返ってきているかを録画して確かめたい。
手順
ip -br linkまずキャプチャ対象のインタフェース名(eth0、ens192など)を確認する。環境によって名前が全く違うため決め打ちしない。sudo tcpdump -i eth0 -nn -c 20小手調べに20パケットだけ録って止める。-nnで名前解決を止めてIPとポートを数字のまま表示(表示が速く、DNS起因のノイズも出ない)。sudo tcpdump -i eth0 -nn port 443 and host 203.0.113.10宛先ホストとポートで絞り込む。SYNが出て応答が無ければ経路かファイアウォール、RSTが即返るなら相手がポートを閉じている、と読み分ける。sudo tcpdump -i eth0 -nn port 443 -w /tmp/capture.pcap -c 1000-wでpcapファイルに保存する。上限-cを付けてディスクを食い潰さないようにする。保存しておけばWiresharkでじっくり解析できる。tcpdump -r /tmp/capture.pcap -nn | head -20-rで保存したファイルを読み直す。時刻・送信元・宛先・フラグ(S=SYN、.=ACK、F=FIN、R=RST)の並びで会話の成立を追う。⚠
注意本番サーバで絞り込み無しに録り続けると、出力やpcapが膨れて負荷とディスクを圧迫する。必ずport・hostのフィルタと-cの上限を付けること。またキャプチャには通信内容が含まれるため、pcapファイルの持ち出し・保管は機密情報として扱う。