web-dev-qa-db-ja.com

tcpdumpは「式はすべてのパケットを拒否します」と言います

2つの条件を持つフィルターを作成したい:-

  1. ネットワークでパケットをフィルタリングします。 _(src net 2a01:111:xxxx::/44)_
  2. Tcpハンドシェイクアラートメッセージに基づいてフィルタリングします。 _(tcp[((tcp[12] & 0xf0) >> 2)] = 0x15)_

両方のフィルターは個別に機能しますが、以下と組み合わせると:-

Sudo tcpdump -s 1024 -v -ni any "(src net 2a01:111:xxxx::/44) and (tcp[((tcp[12] & 0xf0) >> 2)] = 0x15)"

エラーで失敗します:

_tcpdump: expression rejects all packets_。

これら2つのフィルターの論理ANDによって、フィルター処理されるパケットがどのように発生するかはわかりません。

2

tcpdumpのフィルター構文はlibpcapからのものであり、libpcapのTCP-over-IPv6のサポートは不完全です。したがって、tcpキーワードを使用する場合角括弧式のプロトコルとして(_tcp[12]_など)、TCP-over-IPv4にのみ適用されます。

pcap-filter(7)のマニュアルページの奥深くから:

パケット内のデータにアクセスするには、次の構文を使用します。

プロト[expr:サイズ]

Protoは、ether、fddi、tr、wlan、ppp、slip、link、ip、arp、rarp、tcp、udp、icmp、ip6、またはradioのいずれかであり、インデックス操作のプロトコル層を示します。 (ether、fddi、wlan、tr、ppp、slip、linkはすべてリンク層を指します。radioは一部の802.11キャプチャに追加された「radioheader」を指します。) Tcp、udp、およびその他の上位層プロトコルタイプは、IPv6ではなくIPv4にのみ適用されることに注意してください(これは将来修正される予定です)。

(私の強調)

2
Spiff