web-dev-qa-db-ja.com

特定のNFSファイルに対するすべての操作にpcapファイルを削減する

80GBのパケットキャプチャ(libpcap)があり、特定のNFSファイル/ファイルハンドルでのすべての操作に関連するすべてのものにフィルタリングしたいと思います。

どうすればこれを達成できますか?

(tshark表示形式で)キャプチャしたいものについて、次の事実を知っています。

nfs.name == ".o1_mf_1_1093__1366653401581181_.arc
nfs.fh.hash == 0x5c191ad8
nfs.fhandle == 3a:4f:47:4c:20:11:7b:48:7f:88:4f:16:94:90:a0:34:9a:fa:cf:71:e1:6a:95:fc:3e:3b:4e:6a:bb:9c:c6:c4:49:db:80:ca

しかし、tsharkに適切なリクエスト/返信などを提供するように指示する方法がわかりません。

私はもう試した:

tshark -r ginormous.pcap -w 1366653401581181.pcap \
    -R "nfs.fh.hash == 0x5c191ad8" \
    -o nfs.file_name_snooping:TRUE \
    -o nfs.file_full_name_snooping:TRUE \
    -o nfs.fhandle_find_both_reqrep:TRUE

完全なGUIが行うスヌーピングを実行するために、tsharkを誘導しようとしますが、役に立ちません。

3
MikeyB

Tshark -r nfs.pcap -R'nfs.fh.hash == 0x5c191ad8 'を使用すると、すべての要求を取得したり、fhで応答したりできます。より複雑なケースでは、コードを書く必要があると思います。そのための優れたツールがあります http://git.linux-nfs.org/?p=mora/nfstest.git;a=summary

1
kofemann

進行中の作業:

tshark -r $BIGFILE -T fields -e rpc.xid -R "nfs.fh.hash == 0x5c191ad8" | \
   tshark -r $BIGFILE -R "$(\
       python -c 'import sys; xids = sys.stdin.readlines(); print("||".join(["rpc.xid=={0}".format(xid.strip()) for xid in xids]))'\
   )"
1
MikeyB