PCAP-FILTER(7) | FreeBSD Miscellaneous Information Manual | PCAP-FILTER(7) |
名称
pcap-filter -パケットフィルタ構文解説
pcap_compile() は、フィルタプログラムに文字列をコンパイルするために使用されます。次に、どのパケットが pcap_loop(), pcap_dispatch(), pcap_next() または pcap_next_ex() に供給されるかを決定するためにパケットのいくつかのストリームに結果のフィルタプログラムを適用することができます。
フィルタ式 (filter expression) は、1 つ以上の 基本関数 (primitive) から成ります。通常、基本関数は、1 つ以上の修飾子に先行された id (名前または数値) から成ります。次の 3 つの異なった修飾子があります:
- type
- type 修飾子は、id 名または数値がどんなものを参照するかを表します。指定できるタイプは、 host, net , port と portrange です。例えば、 `host foo', `net 128.3', `port 20', `portrange 6000-6008' です。タイプ修飾子がなければ、 host が仮定されます。
- dir
- dir 修飾子は、 id からの特定の転送方向を指定します。指定できる方向は、 src, dst, src or dst, src and dst, ra, ta, addr1, addr2, addr3, と addr4 です。例えば、`src foo', `dst net 128.3', `src または dst port ftp-data' です。 dir 修飾子がないなら、 src or dst が仮定されます。 ra, ta, addr1, addr2, addr3 と addr4 修飾子は、IEEE 802.11 Wireless LAN リンクレイヤのためだけに有効です。 SLIP と ``any'' デバイスのために使用される ``cooked'' Linux キャプチャモードのような、いくつかのリンクレイヤについて、そしてある他のデバイスタイプについて、希望する方向を指定するために inbound と outbound 修飾子を指定することができます。
- proto
- proto 修飾子は、特定のプロトコルへのマッチを制限します。指定できる protos は、次の通りです: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp と udp です。例えば、`ether src foo', `arp net 128.3', `tcp port 21', `udp portrange 7000-7009', `wlan addr2 0:2:3:4:5:6' です。 proto 修飾子がなければ、タイプと一致するすべてのプロトコルが仮定されます。例えば、`src foo' は、(後者が正しい構文でないことを除いて) `(ip or arp or rarp) src foo' を意味し、`net bar' は、 `(ip or arp or rarp) net bar' を意味し、`port 53' は、`(tcp or udp) port 53' を意味します。
[`fddi' は、実際に `ether' のための別名です。パーサは、同様に ``指定されたネットワークインタフェースで使用されたデータリンクレベル'' を意味するように、それらを取り扱います。 FDDI ヘッダは、イーサネットのような発信元と宛先アドレスを含み、しばしばイーサネットのようなパケットタイプを含んでいるので、利用者は、ちょうど類似のイーサネットフィールドと同様に、これらで FDDI フィールドでフィルタリングすることができます。また、FDDI ヘッダは、他のフィールドを含んでいますが、利用者は、フィルタ式で明白にそれらを指定することができません。
同様に、`tr' and `wlan' は、`ether' のための別名です。また、FDDI ヘッダに関する前のパラグラフの文は、Token Ring と 802.11 無線 LAN ヘッダに適用されます。 802.11 ヘッダにおいて、宛先アドレスは、DA フィールドで、発信元アドレスは、SA フィールドです。 BSSID、RA と TA フィールドは、テストされません。]
上記に加えて、パターンに従わない、いくつかの特別な `primitive' キーワードがあります: gateway, broadcast, less, greater は、算術式です。これらのすべては、以下に説明されます。
より複雑なフィルタ式は、基本関数を結合するために単語 and, or と not を使用することによって組み立てられます。例えば、`host foo and not port ftp and not port ftp-data' です。タイプを節約するために、同じ修飾子のリストを省略することができます。例えば、`tcp dst port ftp or ftp-data or domain' は、 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain' と正確に同じです。
利用できる基本関数は、次の通りです:
- dst host host
- アドレスまたは名前のいずれかで指定される、パケットの IPv4/v6 宛先フィールドが host であるなら、真。
- src host host
- パケットの IPv4/v6 発信元フィールドが host であるなら、真。
- host host
- パケットの IPv4/v6 発信元または宛先のいずれかが host であるなら、真。
-
次のようなキーワード、
ip,
arp,
rarp または
ip6 を上記のホスト式のいずれかの前に追加することができます:
ip host host
これは、次と同等です:
ether proto \ip and host host
host が複数の IP アドレスの名前であるなら、各アドレスは、マッチするかチェックされます。
- ether dst ehost
- イーサネット宛先アドレスが、 ehost であるなら、真。 ehost は、 /etc/ethers からの名前または数値 (数値の形式については、 ethers(3N) 参照) のいずれかを指定できます。
- ether src ehost
- イーサネット発信元アドレスが、 ehost であるなら、真。
- ether host ehost
- イーサネット発信元または宛先アドレスが、 ehost であるなら、真。
- gateway host
-
パケットがゲートウェイとして
host を使用するなら、真。すなわち、イーサネット発信元または宛先アドレスは、
host でしたが、 IP 発信元も IP 宛先ホストも
host ではありませんでした。
host は、名前でなければならなくて、マシンのホスト名から IP アドレス (host-name-to-IP-address) 解決メカニズム (ホスト名ファイル、DNS、NIS など) とマシンのホスト名からイーサネットアドレス (host-name-to-Ethernet-address) 解決メカニズム (/etc/ethers など) の両方によって、見つからなければなりません。 (同等な式は、
ether host ehost and not host host
です、これは、 host / ehost のための名前または数値のいずれかで使用することができます。) この構文は、現時点では、IPv6 有効化設定で動作しません。
- dst net net
- パケットの IPv4/v6 宛先アドレスに、 net のネットワーク番号があるなら、真。 net は、ネットワークデータベース (/etc/networks など) からの名前またはネットワーク番号のいずれかを指定できます。ドット付き 4 つ組 (例えば、192.168.1.0)、ドット付き 3 つ組 (例えば、192.168.1)、ドット付き 2 つ組 (例えば、172.16) または単一番号 (例えば、10) として、 IPv4 ネットワーク番号を書き込むことができます。ネットマスクは、(実際にホストマッチすることを意味する) ドット付き 4 つ組のために 255.255.255.255、ドット付き 3 つ組のために 255.255.255.0、ドット付き 2 つ組のために 255.255.0.0 または単一番号のために 255.0.0.0 です。 IPv6 ネットワーク番号は、完全に書かれなければなりません。ネットマスクは、ff:ff:ff:ff:ff:ff:ff:ff ですので、実際に IPv6 "ネットワーク"マッチは、常にホストマッチであり、ネットワークマッチは、ネットマスクの長さを必要とします。
- src net net
- パケットの IPv4/v6 発信元アドレスに、 net のネットワーク番号があるなら、真。
- net net
- パケットの IPv4/v6 発信元または宛先アドレスのいずれかに、 net のネットワーク番号があるなら、真。
- net net mask netmask
- IPv4 アドレスが、特定の netmask がある net にマッチするなら、真。 src または dst で修飾されるかもしれません。この構文は、IPv6 net に対して有効ではないことに注意してください。
- net net/ len
- IPv4/v6 アドレスがネットマスク len ビット幅がある net にマッチしているなら、真。 src または dst で修飾されるかもしれません。
- dst port port
- パケットが ip/tcp、ip/udp、ip6/tcp または ip6/udp であり、 port の宛先ポート値があるなら、真。 /etc/services ( tcp(4P) と udp(4P) を参照) で使用する数値または名前として port を指定することができます。名前が使用されるなら、ポート番号とプロトコルの両方がチェックされます。数値またはあいまいな名前が使用されるなら、ポート番号だけがチェックされます (例えば、 dst port 513 は、tcp/login トラフィックと udp/who トラフィックの両方を印刷し、 port domain は、 tcp/domain と udp/domain トラフィックの両方を印刷します)。
- src port port
- パケットに port 発信元ポート値があるなら、真。
- port port
- パケットの発信元または宛先ポートのいずれかが、 port であるなら、真。
- dst portrange port1 - port2
- パケットが ip/tcp、ip/udp、ip6/tcp または ip6/udp であり、 port1 と port2 の間の宛先ポート値があるなら、真。 port1 と port2 は、 port のための port パラメータと同じやり方で解釈されます。
- src portrange port1 - port2
- パケットに port1 と port2 の間のポート値があるなら、真。
- portrange port1 - port2
- パケットの発信元または宛先ポートが port1 と port2 の間であるなら、真。
-
次のようなキーワード、
tcp または
udp に上記のポートまたはポート範囲式のいずれかを前に追加することができます:
tcp src port port
これは、発信元ポートが port である tcp パケットのみにマッチします。
- less length
-
パケットに、
length 以下の長さがあるなら、真。これは、次と同等です:
len <= length 。
- greater length
-
パケットに、
length 以上の長さがあるなら、真。これは、次と同等です:
len >= length 。
- ip proto protocol
- パケットがプロトコルタイプ protocol の IPv4 パケット ( ip(4P) 参照) であるなら、真。数値または名前 icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp または tcp の 1 つとして Protocol を指定することができます。また、識別子 tcp, udp と icmp は、キーワードであり、C シェルでは \\ であるバックスラッシュ (\) でエスケープしなければならないことに注意してください。この基本関数は、プロトコルヘッダチェーンを追跡しないことに注意してください。
- ip6 proto protocol
- パケットがプロトコルタイプ protocol の IPv6 パケットであるなら、真。この基本関数は、プロトコルヘッダチェーンを追跡しないことに注意してください。
- proto protocol
- パケットがプロトコルタイプ protocol の IPv4 または IPv6 のパケットであるなら、真。この基本関数は、プロトコルヘッダチェーンを追跡しないことに注意してください。
- tcp, udp, icmp
-
省略形は、次の通りです:
proto p
ここで、 p は、上記のプロトコルの 1 つです。
- ip6 protochain protocol
-
パケットが IPv6 パケットであり、プロトコルヘッダチェーンにタイプ
protocol があるプロトコルヘッダを含んでいるなら、真。例えば、
ip6 protochain 6
は、プロトコルヘッダチェーンの TCP プロトコルヘッダがある IPv6 パケットにマッチします。パケットは、IPv6 ヘッダと TCP ヘッダの間に、例えば、認証ヘッダ、ルーティングヘッダ、または中継点ごと (hop-by-hop) のオプションヘッダを含むかもしれません。この基本関数によって出力された BPF コードは、複雑であり、 BPF オプティマイザコードによって最適化できないので、これはいくらか遅くなるかもしれません。
- ip protochain protocol
- ip6 protochain protocol と同等ですが、これは、IPv4 のためのものです。
- protochain protocol
- パケットがプロトコルタイプ protocol の IPv4 または IPv6 のパケットであるなら、真。この基本関数は、プロトコルヘッダチェーンを追跡することに注意してください。
- ether broadcast
- パケットがイーサネットブロードキャスト (同報通信) パケットであるなら、真。 ether キーワードは、オプションです。
- ip broadcast
- パケットが IPv4 ブロードキャスト (同報通信) パケットであるなら、真。全て 0 と全て 1 の両方のブロードキャスト (同報通信) 規約をチェックし、キャプチャが行われているインタフェースでサブネットマスクを検索します。
- キャプチャが行われているインタフェースのサブネットマスクが利用可能でないなら、キャプチャが行われているインタフェースにネットマスクがないため、または 2 以上でインタフェースでキャプチャすることができる、キャプチャが Linux "any"インタフェースで行われているために、このチェックは、正しく動作しません。
- ether multicast
- パケットがイーサネットマルチキャストパケットであるなら、真。 ether キーワードは、オプションです。これは、` ether[0] & 1 != 0' の省略表現です。
- ip multicast
- パケットが IPv4 マルチキャストパケットであるなら、真。
- ip6 multicast
- パケットが IPv6 マルチキャストパケットであるなら、真。
- ether proto protocol
- パケットが ether タイプ protocol であるなら、真。数値または名前 ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx または netbeui の 1 つとして protocol を指定することができます。また、これらの識別子は、キーワードであり、バックスラッシュ (\) でエスケープしなければないことに注意してください。
- [FDDI (例えば、` fddi protocol arp')、Token Ring (例えば、` tr protocol arp') と IEEE 802.11 無線 LANS (例えば、` wlan protocol arp') の場合に、それらのプロトコルの大部分のために、プロトコル識別は、通常、FDDI、Token Ring、または 802.11 ヘッダで階層化された、 802.2 Logical Link Control (LLC) ヘッダから来ています。
- FDDI、Token Ring または 802.11 で、ほとんどのプロトコル識別子のためにフィルタリングするとき、フィルタは、カプセル化されたイーサネットのために、 0x000000 の Organizational Unit Identifier (OUI) でいわゆる SNAP 形式の LLC ヘッダのプロトコル ID フィールドのみチェックします。パケットが 0x000000 の OUI で SNAP 形式であるかどうか、チェックしません。例外は、次の通りです:
- iso
- フィルタは、LLC ヘッダの DSAP (Destination Service Access Point) と SSAP (Source Service Access Point) フィールドをチェックします。
- stp and netbeui
- フィルタは、LLC ヘッダの DSAP をチェックします。
- atalk
- フィルタは、0x080007 の OUI がある SNAP-形式パケットと AppleTalk etype をチェックします。
- イーサネットの場合は、フィルタは、それらのプロトコルの大部分に対してイーサネットタイプフィールドをチェックします。例外は、次の通りです:
- iso, stp, and netbeui
- フィルタは、802.3 フレームをチェックして、次に、FDDI、Token Ring と 802.11 をチェックするように、LLC ヘッダをチェックします。
- atalk
- フィルタは、イーサネットフレームの AppleTalk etype と FDDI、Token Ring と 802.11 をチェックするように、 SNAP-形式パケットの両方をチェックします。
- aarp
- フィルタは、イーサネットフレームの AppleTalk ARP etype または 0x000000 の OUI がある 802.2 SNAP フレームをチェックします。
- ipx
- フィルタは、イーサネットフレームの IPX etype、LLC ヘッダの IPX DSAP、 IPX の 802.3-with-no-LLC-header カプセル化と SNAP フレームの IPX etype をチェックします。
- ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
-
省略形は、次の通りです:
ether proto p
ここで、 p は、上記のプロトコルの 1 つです。
- lat, moprc, mopdl
-
省略形は、次の通りです:
ether proto p
ここで、 p は、上記のプロトコルの 1 つです。現在 pcap(3) を使用するすべてのアプリケーションは、これらのプロトコルを解析する方法を知らないことに注意してください。
- decnet src host
- DECNET 発信元アドレスが、形式 ``10.123'' のアドレスまたは DECNET ホスト名である、 host であるなら、真。 [DECNET ホスト名のサポートは、DECNET を実行するために設定される ULTRIX システムでのみ利用可能です。]
- decnet dst host
- DECNET 宛先アドレスが host であるなら、真。
- decnet host host
- DECNET 発信元または宛先アドレスのいずれかが host であるなら、真。ホストです。
- ifname interface
- パケットが (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) 指定されたインタフェースから着信するようにログ記録されるなら、真。
- on interface
- ifname 修飾子と同義語です。
- rnr num
- パケットが (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) 指定された PF ルール番号とマッチするようにログ記録されるなら、真。
- rulenum num
- rnr 修飾子と同義語です。
- reason code
- パケットが指定された PF 理由コードでログ記録されたなら、真。知られているコードは、次の通りです: (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) match, bad-offset, fragment, short, normalize, と memory。
- rset name
- パケットが (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) 固定されたルールセットの指定された PF ルールセット名とマッチするようにログ記録されるなら、真。
- ruleset name
- rset 修飾子と同義語です。
- srnr num
- パケットが (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) 固定されたルールセットの指定された PF ルール番号とマッチするようにログ記録されるなら、真。
- subrulenum num
- srnr 修飾子と同義語です。
- action act
- パケットがログ記録されるとき、PF が指定されたアクションを取ったなら、真。知られているアクションは、次の通りです: pass と block および (OpenBSD または FreeBSD の pf(4) によってログ記録されるパケットだけに適用される) pf(4), nat, rdr, binat と scrub の後のバージョン。
- wlan ra ehost
- IEEE 802.11 RA が ehost であるなら、真です。 RA フィールドは、管理フレームを除いて、すべてのフレームで使用されます。
- wlan ta ehost
- IEEE 802.11 TA が ehost であるなら、真です。 TA フィールドは、管理フレームと CTS (Clear To Send) と ACK (Acknowledgment) 制御フレームを除いて、すべてのフレームで使用されます。
- wlan addr1 ehost
- 最初の IEEE 802.11 アドレスが ehost であるなら、真。
- wlan addr2 ehost
- 2 番目の IEEE 802.11 アドレスが存在し、 ehost であるなら、真。 2 番目のアドレスフィールドは、CTS (Clear To Send) と ACK (Acknowledgment) 制御フレームを除いて、すべてのフレームで使用されます。
- wlan addr3 ehost
- 3 番目の IEEE 802.11 アドレスが存在し、 ehost であるなら、真。 3 番目のアドレスフィールドは、管理とデータフレームで使用されますが、制御フレームで使用されません。
- wlan addr4 ehost
- 4 番目の IEEE 802.11 アドレスが存在し、 ehost であるなら、真。 4 番目のアドレスフィールドは、WDS (Wireless Distribution System) フレームのためだけに使用されます。
- type wlan_type
- IEEE 802.11 フレームタイプが、指定された wlan_type にマッチするなら、真。有効な wlan_type は、次の通りです: mgt, ctl と data。
- type wlan_type subtype wlan_subtype
- IEEE 802.11 フレームタイプが指定された wlan_type とマッチし、フレームサブタイプが指定された wlan_subtype とマッチするなら、真。
- 指定された wlan_type が mgt であるなら、有効な wlan_subtype は、次の通りです: assoc-req, assoc-resp, reassoc-req, reassoc-resp, probe-req, probe-resp, beacon, atim, disassoc, auth と deauth。
- 指定された wlan_type が ctl であるなら、有効な wlan_subtype は、次の通りです: ps-poll, rts, cts, ack, cf-end と cf-end-ack。
- 指定された wlan_type が data であるなら、有効な wlan_subtype は、次の通りです: data, data-cf-ack, data-cf-poll, data-cf-ack-poll, null, cf-ack, cf-poll, cf-ack-poll, qos-data, qos-data-cf-ack, qos-data-cf-poll, qos-data-cf-ack-poll, qos, qos-cf-poll と qos-cf-ack-poll。
- subtype wlan_subtype
- IEEE 802.11 フレームサブタイプが指定された wlan_subtype にマッチし、フレームには、指定された wlan_subtype が属するタイプがあるなら、真。
- dir dir
- IEEE 802.11 フレーム指示が指定された dir にマッチするなら、真。有効な指示は、次の通りです: nods, tods, fromds, dstods または数値。
- vlan [vlan_id]
- パケットが IEEE 802.1Q VLAN パケットであるなら、真。 [vlan_id] が指定され、パケットに指定された vlan_id がある場合のみ、真。最初の vlan キーワードは、パケットが VLAN パケットであると想定して expression の残りのためにデコードされたオフセットを変更する expression に遭遇することに注意してください。 vlan [vlan_id] 式は、VLAN 階層構造でフィルタするために、何度も使用されます。その式を使用する毎にフィルタオフセットを 4 つ増加します。
-
例えば:
vlan 100 && vlan 200
これは、VLAN 100 でカプセル化された VLAN 200 でフィルタリングし、
vlan && vlan 300 && ip
は、任意のより高いオーダ VLAN でカプセル化された VLAN 300 でカプセル化された IPv4 プロトコルをフィルタリングします。
- mpls [label_num]
- パケットが MPLS パケットであるなら、真。 [label_num] が指定され、パケットに指定された label_num がある場合のみ、真。最初の mpls キーワードは、パケットが MPLS のカプセル化された IP パケットであると想定して expression の残りのためにデコードされたオフセットを変更する expression に遭遇することに注意してください。 mpls [label_num] 式は、MPLS 階層構造でフィルタするために、何度も使用されます。その式を使用する毎にフィルタオフセットを 4 つ増加します。
-
例えば:
mpls 100000 && mpls 1024
これは、100000 の外側のラベルと 1024 の内側のラベルでパケットをフィルタリングし、
mpls && mpls 1024 && host 192.9.200.1
は、1024 の内側のラベルと任意の外側のラベルで、 192.9.200.1 へ、または、192.9.200.1 からパケットをフィルタリングします。
- pppoed
- パケットが PPP-over-Ethernet Discovery パケット (イーサネットタイプ 0x8863) であるなら、真。
- pppoes
- パケットが PPP-over-Ethernet Session パケット (イーサネットタイプ 0x8864) であるなら、真。最初の pppoes キーワードは、パケットが PPPoE セッションパケットであると想定して expression の残りのためにデコードされたオフセットを変更する expression に遭遇することに注意してください。
-
例えば:
pppoes && ip
これは、PPPoE でカプセル化された IPv4 プロトコルをフィルタリングします。
- iso proto protocol
- パケットがプロトコルタイプ protocol の OSI パケットであるなら、真。数値、または名前 clnp, esis または isis として Protocol を指定することができます。
- clnp, esis, isis
-
省略形は、次の通りです:
iso proto p
ここで、 p は、上記のプロトコルの 1 つです、
- l1, l2, iih, lsp, snp, csnp, psnp
- IS-IS PDU タイプの省略形。
- vpi n
- パケットが n の仮想パス識別子がある、Solaris の SunATM のための ATM パケットであるなら、真。
- vci n
- パケットが n の仮想チャネル識別子がある、Solaris の SunATM のための ATM パケットであるなら、真。
- lane
- パケットが Solaris の SunATM のための ATM パケットであり、 ATM LANE パケットであるなら、真。最初の lane キーワードは、パケットが LANE emulated Ethernet パケットまたは LANE LE Control パケットのいずれかであると想定して expression の残りで行うテストを変更する expression に遭遇することに注意してください。 lane が指定されないなら、パケットが LLC のカプセル化されたパケットであると想定してテストは、行われます。
- llc
- パケットが Solaris の SunATM のための ATM パケットであり、 LLC のカプセル化されたパケットであるなら、真。
- oamf4s
- パケットが Solaris の SunATM のための ATM パケットであり、セグメント OAM F4 フローセル (VPI=0 & VCI=3) であるなら、真。
- oamf4e
- パケットが Solaris の SunATM のための ATM パケットであり、 end-to-end OAM F4 フローセル (VPI=0 & VCI=4) であるなら、真。
- oamf4
- パケットが Solaris の SunATM のための ATM パケットであり、セグメントまたは end-to-end OAM F4 フローセル (VPI=0 & (VCI=3 | VCI=4)) であるなら、真。
- oam
- パケットが Solaris の SunATM のための ATM パケットであり、セグメントまたは end-to-end OAM F4 フローセル (VPI=0 & (VCI=3 | VCI=4)) であるなら、真。訳注: 上記の oamf4 と同じ説明であるので、どちらかが違っている可能性がある。
- metac
- パケットが Solaris の SunATM のための ATM パケットであり、メタシグナリングサーキット (VPI=0 & VCI=1) 上にあるなら、真。
- bcc
- パケットが Solaris の SunATM のための ATM パケットであり、ブロードキャスト (同報通信) シグナリングサーキット (VPI=0 & VCI=2) 上にあるなら、真。
- sc
- パケットが Solaris の SunATM のための ATM パケットであり、シグナリングサーキット (VPI=0 & VCI=5) 上にあるなら、真。
- ilmic
- パケットが Solaris の SunATM のための ATM パケットであり、 ILMI サーキット (VPI=0 & VCI=16) 上にあるなら、真。
- connectmsg
- パケットが Solaris の SunATM のための ATM パケットであり、シグナリングサーキットの上にあり、Q.2931 Setup、Call Proceeding、 Connect、Connect Ack、Release または Release Done メッセージであるなら、真。
- metaconnect
- パケットが Solaris の SunATM のための ATM パケットであり、メタシグナリングサーキットの上にあり、Q.2931 Setup、Call Proceeding、Connect、 Release または Release Done メッセージであるなら、真。
- expr relop expr
-
relop が >, <, >=, <=, =, != の 1 つであり、
expr が (標準の C 構文で表現される) 整数定数、通常のバイナリ演算子 [+, -, *, /, &, |, <<, >>]、長さ演算子、と特別なパケットデータアクセサからなる算術式であるところで、関係が保持されているなら、真。例えば、 0x80000000 と 0xffffffff が > 0 となるような、すべての比較が符号なしであることに注意してください。パケット中のデータにアクセスするには、次の構文を使用します:
proto [ expr : size ]
proto は、 ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp, ip6 または radio 1 つであり、インデックス操作のためのプロトコルレイヤを示します。 ( ether, fddi, wlan, tr, ppp, slip と link は、すべてリンクレイヤを参照します。 radio は、いくつかの 802.11 キャプチャに追加された "radio header"を参照します。) tcp, udp と他の上位レイヤプロトコルタイプは、IPv6 ではなく、IPv4 のみに適用されることに注意してください (これは将来、修正されるでしょう)。示されたプロトコルレイヤに関連するバイトオフセットは、 expr によって与えられます。 size は、オプションであり、関心があるフィールドのバイト数を示します。 1、2、または 4 のいずれかを指定できます、デフォルトは、1 です。キーワード len によって示された長さ演算子は、パケットの長さを与えます。
基本関数は、次を使用して結合されます:
- 基本関数と演算子の括弧で括られたグループ (括弧は、シェルでは特別であり、エスケープされなければなりません)。
- negation (否定) (` !' または ` not')。
- concatenation (連結) (` &&' または ` and')。
- alternation (交互) (` ||' または ` or')。
negation (否定) には、最も高い優先順位があります。 alternation (交互) と concatenation (連結) は、等しい優先順位があり、左から右に結合します。並列ではなく、明白な and トークンは、現在 concatenation (連結) のために必要であることに注意してください。
識別子がキーワードなしで与えられるなら、最新のキーワードが仮定されます。例えば、
not host vs and ace
は、次の短縮形であり、
not host vs and host ace
次と混乱するべきではありません。
not ( host vs or ace )
使用例
sundown から到着するか、または出発するすべてのパケットを選択するためには:host sundown
helios と hot または ace との間のトラフィックを選択するためには:
host helios and \( hot or ace \)
ace と helios 以外の任意のホストの間のすべての IP パケットを選択するためには:
ip host ace and not helios
Berkeley でローカルホストとホストの間のすべてのトラフィックを選択するためには:
インターネットゲートウェイ snup を通るすべての ftp トラフィックを選択するためには:
(利用者が他の 1 つのネットへのゲートウェイを使用するなら、これを決して利用者のローカルネットに向けるべきではありません) ローカルホストからの発信元からでもなく、宛先へでもないトラフィックを選択するためには:
非ローカルホストを含む各 TCP 通信の開始と終りのパケット (SYN と FIN パケット) を選択するためには:
ポート 80 へとポート 80 からのすべての IPv4 HTTP パケットを選択するためには、すなわち、例えば、SYN と FIN パケットと ACK のみパケットではなく、データを含むパケットだけを印刷するには: (IPv6 は、リーダ (reader) のための実行として残されています。)
ゲートウェイ snup を通して送信される 576 バイトより長い間 IP パケットを選択するためには:
イーサネットブロードキャスト (同報通信) またはマルチキャストを通して送信され ない IP ブロードキャストまたはマルチキャストパケットを選択するためには:
echo 要求/応答 (すなわち、ping パケット) でないすべての ICMP パケットを選択するためには:
関連項目
pcap(3)バグ
問題、バグ、質問、望ましい改良、その他は、次に送ってください:
Token Ring ヘッダのそれら以外のフィールドのフィルタ式は、始点経路化 (source-routed) された Token Ring パケットを正しく取り扱いません。
802.11 ヘッダのそれら以外のフィールドのフィルタ式は、To DS と From DS セットの両方で 802.11 データパケットを正しく取り扱いません。
ip6 proto は、ヘッダチェーンを追跡するべきですが、現時点では、追跡しません。 ip6 protochain は、この振る舞いのために供給されます。
tcp[0] のような、トランスポートレイヤヘッダに対する算術式は、 IPv6 パケットに対して動作しません。それは、IPv4 パケットを見るだけです。
6 January 2008 |