Tcpdump:仮想インターフェイスから発信するパケットをキャプチャする方法は?

Tcpdump:仮想インターフェイスから発信するパケットをキャプチャする方法は?

現在テスト中のLinuxシステムには、EthヘッダーとIPヘッダーの間にカプセル化された独自のヘッダーを追加/操作するために互いに接続された複数の仮想L2デバイスがあります。

これで、「tcpdump -xx -i virtual_if_1」によって示されるキャプチャされた発信パケットです。

tcpdump: WARNING: xxxtype 1000 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on virtual_if_1, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes

20:20:25.558423 IP 0.0.0.0.52368 > 5.5.2.2.telnet: S 3501169179:3501169179(0) win 35848 <mss 17924,sackOK,timestamp 17386889 0,nop,wscale 8>
    0x0000:  0004 03e8 0006 0000 0000 1b9a 0000 0800
    0x0010:  4510 003c d792 4000 4006 5c13 0000 0000
    0x0020:  0505 0202 cc90 0017 d0af 9a1b 0000 0000
    0x0030:  a002 8c08 0735 0000 0204 4604 0402 080a
    0x0040:  0109 4d89 0000 0000 0103 0308`

0x0010から始めると、L3のIPヘッダーですが、0x0000-0x000fは偽であるため、この仮想デバイスはL3ヘッダーに追加する必要があるヘッダーではありません。 tcpdumpが仮想イーサネットヘッダーを自動的に追加するような気がしますか? lipcapがこのタイプをサポートしていないという上記の警告のためですか?

tcpdumpはこのデータをどこで取得しますか? sk_buff->dataから来たのですか?

ありがとう

答え1

答えを見つけたようです。実際にlibcapによって擬似プロトコルとして追加されました。

Linktype_SLLヘッダ形式

SLLのWireSharkの説明

関連情報