私が知る限り、HTTPリクエストとレスポンスはTCP接続を確立します。 GUIのないサーバーでWebアプリケーションをデバッグするために、これらのTCPフローを識別可能な単一のエンティティ(同じ色、ファイル、データベースレコードなど)としてキャプチャできるようにしたいと思います。
tcpdump
IPパケットは、ソートや再組み立てなしで到着または出発時にのみ保存できます。tcpflow
さらに一歩進んで、TCP接続を別々のファイルに再組み立てますが、送受信ストリームを別々のファイルに入れると、クイックデバッグが迷惑になります。関連ファイルをマージするために1行のスクリプトまたはコードを書くことができると確信していますが、tcpflow
このタスクのラッパーが導入される可能性があると思いますtcpflow
。また、怠惰でクリーンなソリューションを探しています。
どんな提案でも大変感謝します。
答え1
pcapファイルをデスクトップにコピー(またはストリーミング)し、パケット分析にWireshark GUIを使用できます。 GUIに加えて、tshark
コマンド(Wiresharkに含まれています)があります。ストリーム番号が与えられたら、次を使用して要求と応答を単一の出力に結合できます。
$ tshark -q -r http.pcapng -z follow,tcp,ascii,1
===================================================================
Follow: tcp,ascii
Filter: tcp.stream eq 1
Node 0: 10.44.1.8:47833
Node 1: 178.21.112.251:80
77
GET / HTTP/1.1
User-Agent: curl/7.37.0
Host: lekensteyn.nl
Accept: */*
356
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.4.7
Date: Sun, 29 Jun 2014 10:24:34 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: https://lekensteyn.nl/
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.4.7</center>
</body>
</html>
===================================================================
tshark
詳しくはマニュアルページをご覧ください。デフォルトでは、-q
通常のパケット表示を抑制し、-r http.pcapng
キャプチャファイルを選択します-z follow,...
。TCPストリームに従ってくださいグラフィカルユーザーインターフェースから。残念ながら、各ストリームに対してこのコマンドを繰り返す必要がありますが、これは理想的ではありません。
Wireshark GUI への接続をストリーミングするには、次のコマンドを使用できます。
ssh you@server 'tcpdump -w - "tcp port 80"' | wireshark -i - -k
これがまだ必要でない場合は、プロキシを設定し、そのプロキシを介してすべてを記録することを検討できます。