tcpdump コマンド
目的
ネットワーク上のトラフィックをダンプします。
構文
tcpdump [ -a ] [ -A ] [ -B バッファサイズ ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M シークレット ] [ -r ファイル ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ -c カウント ][ -C ファイルサイズ ] [ -F ファイル ] [ -G 回転秒数 ] [ -i インターフェース ] [ -s スナップレン ] [ -w ファイル ][ -E アドレス ] [ -y データリンクタイプ ] [-z 命令 ] [-Z ユーザー ] [ 表現 ]
説明
tcpdump コマンドは、ブール式に一致するネットワーク・インターフェース上のパケットのヘッダーを出力します。 -w フラグを指定してこのコマンドを実行すると、パケット・データをさらに分析するためにファイルに保存できます。 また、 -r フラグを指定してこのコマンドを実行すると、ネットワーク・インターフェースからパケットを読み取る代わりに、保存されたパケット・ファイルからデータを読み取ることができます。 いずれの場合も、式に一致するパケットのみが tcpdump コマンドによって処理されます。
-c フラグを指定して実行しない場合、 tcpdump は、SIGINT シグナル (通常は control-C) または SIGTERM シグナル (通常は kill(1) コマンド) によって割り込まれるまでパケットのキャプチャーを続けます。 tcpdump は、 -c フラグを指定して実行されると、SIGINT または SIGTERM シグナルによって割り込まれるか、指定された数のパケットが処理されるまで、パケットをキャプチャーします。
- packets "received by filter"
- フィルター式にマッチするかどうかにかかわりなく、すべてのパケットをカウントします。
- packets "dropped by kernel"
- バッファー・スペースの不足のため除去されたパケットの数。
使用可能なプリミティブ
- dst host host
- パケットの IPv4/v6 宛先フィールドが host であれば True です。host はアドレスまたは名前のいずれかです。
- src host host
- パケットの IPv4/v6 ソース・フィールドが host であれば True です。
- host host
- パケットの IPv4/v6 ソースまたは宛先が host であれば True です。 上記の host 式では、いずれもキーワード ip、arp、rarp、または ip6 を前に付加することができます。例えば、ip host host は次の式と同等です。
host が複数の IP アドレスを持つ名前の場合は、各アドレスが一致するかどうか検査されます。ether proto \ip and host host - ether dst ehost
- イーサネット宛先アドレスが
ehostであれば True です。 Ehost は、 /etc/ethers からの名前または数値のいずれかです (数値形式については、eザーズ (3N) を参照してください)。 - ether src ehost
- イーサネット・ソース・アドレスが
ehostであれば True です。 - ether host ehost
- イーサネット・ソース・アドレスまたは宛先アドレスが
ehostであれば True です。 - gateway host
- パケットが host をゲートウェイとして使用していた場合は True です。 例えば、イーサネット・ソース・アドレスまたはイーサネット宛先アドレスが host であって、IP ソースと IP 宛先がいずれも host でない場合です。 ホストは名前でなければならず、マシンのホスト名から IP アドレスへの解決メカニズム (ホスト名ファイル、DNS、NIS など) によって検出される必要があります。 およびマシンのホスト名からイーサネット・アドレスへの解決メカニズム (/etc/ethers, など) によって。 同等の式は ether host ehost です。host host は同等ではなく、host /ehost の名前または番号のいずれかと共に使用できます。 この構文は、現時点の IPv6 使用可能な構成では機能しません。
- dst net net
- パケットの IPv4/v6 宛先アドレスにネットワーク番号 net が付いていれば True です。
- src net net
- パケットの IPv4/v6 ソース・アドレスにネットワーク番号 net が付いていれば True です。
- net net
- パケットの IPv4/v6 ソース・アドレスまたは宛先アドレスのいずれかにネットワーク番号 net が付いていれば True です。
- net net mask netmask
- IP アドレスが特定のネットマスクを持つ net に一致すれば True です。 これは src または dst で修飾される場合があります。 IPv6 net の場合、 この構文は無効です。
- net net/len
- IPv4/v6 アドレスがネットマスク len ビット幅の net に一致すれば True です。 src または dst で修飾できます。
- dst port port
- パケットが ip/tcp、ip/udp、ip6/tcp、または ip6/udp であって、宛先ポート値が port であれば True です。 ポートは、 /etc/services (tcp (4P) および udp (4P) を参照) で使用される番号または名前にすることができます。 名前を使用すると、ポート番号とプロトコルが検査されます。 番号 または未確定名が使用されると、ポート番号のみが検査されます (例えば、dst port 513 を指定すると、tcp/login トラフィック と udp/who トラフィックの両方が出力され、port domain を指定すると、tcp/domain と udp/domain トラフィックの両方が 出力されます)。
- src port port
- パケットのソース・ポート値が port であれば True です。
- port port
- パケットのソース・ポートまたは宛先ポートのいずれかが port であれば True です。 上記の port 式のいずれも、キーワード tcp または udp を前に付加することができます。例えば、tcp src port port とすることができ、これはソース・ポートが port である tcp パケットのみに一致します。
- less length
- パケットの長さが length 以下であれば True です。 これは len <= length と同等です。
- greater length
- パケットの長さが length 以上であれば True です。 これは、len >= length に相当します。
- ip proto protocol
- パケットがプロトコル・タイプ protocol の IP パケットであれば True です。 protocol には、番号、または名前 icmp、icmp6、igmp、igrp、pim、ah、esp、vrrp、udp、tcp の 1 つを使用できます。 ID tcp、udp、および icmp はキーワードでもあるので、円記号 (¥) でエスケープする必要があることに注意してください。C シェルでは ¥¥ にします。 このプリミティブはプロトコル・ヘッダー・チェーンを追跡しないことに注意してください。
- ip6 proto protocol
- パケットがプロトコル・タイプ protocol の IPv6 パケットであれば True です。 このプリミティブはプロトコル・ヘッダー・チェーンを追跡しないことに注意してください。
- ip6 protochain protocol
- パケットが IPv6 パケットであって、そのプロトコル・ヘッダー・チェーンにタイプ protocol のプロトコル・ヘッダーがあれば True です。 例えば、ip6 protochain 6 は、プロトコル・ヘッダー・チェーンに TCP プロトコル・ヘッダーを持つ任意の IPv6 パケットに一致します。 パケットには、IPv6 ヘッダーと TCP ヘッダーの間に、例えば、認証ヘッダー、経路指定ヘッダー、またはホップ・バイ・ホップ・オプション・ヘッダーが含まれていることがあります。 このプリミティブによって発行される Berkeley Packet Filter (BPF) コードは複雑であり、 tcpdumpの BPF オプティマイザー・コードでは最適化できないため、多少時間がかかる可能性があります。
- ip protochain protocol
- ip6 protochain protocol に相当します。 ただし、これは Ipv4 に使用されます。
- ether broadcast
- パケットがイーサネット・ブロードキャスト・パケットであれば True です。 ether キーワードはオプションです。
- ip broadcast
- パケットが IPv4 ブロードキャスト・パケットであれば True です。 すべてゼロとすべて 1 のブロードキャスト規約が検査され、捕そくが行われるインターフェースでサブネット・マスクが検索されます。
例えば取り込みが行われているインターフェースにネットマスクがないときのように、 取り込みが行われているインターフェースのサブネット・マスクが使用不可の場合、 この検査は正しく機能しません。
- ether multicast
- パケットがイーサネット・マルチキャスト・パケットであれば True です。 ether キーワードはオプションです。 これは
ether[0] & 1 != 0の省略形です。 - ip multicast
- パケットが IP マルチキャスト・パケットであれば True です。
- ip6 multicast
- パケットが IPv6 マルチキャスト・パケットであれば True です。
- ether proto protocol
- パケットが ether タイプ protocol であれば True です。protocol には、番号、または名前 ip、 ip6、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx、netbeui の 1 つを使用できます。 これらの ID はキーワードでもあるので、円記号 (¥) でエスケープする必要があることに注意してください。[FDDI (例えば、「fddi protocol arp」)、トークンリング (例えば、「tr protocol arp」)、および IEEE 802.11 無線 LAN (例えば、「wlan protocol arp」) の場合、これらのプロトコルの大部分ではプロトコル ID が 802.2 論理リンク制御 (LLC) ヘッダーから取られます。このヘッダーは、通常、FDDI ヘッダー、トークンリング・ヘッダー、または 802.11 ヘッダーの上部に階層化されます。 FDDI、トークンリング、または 802.11 に大部分のプロトコル ID のフィルタリングを行う場合、tcpdump は、カプセル化されたイーサネットについて、0x000000 の Organizational UnitIdentifier (OUI) のあるいわゆる SNAP 形式の LLC ヘッダーのプロトコル ID フィールドのみを検査します。パケットが 0x000000 の OUI のある SNAP 形式であるかどうかの検査は行いません。 例外は次のとおりです。
- ISO
- tcpdump は、LLC ヘッダーの DSAP (宛先サービス・アクセス・ポイント) および SSAP (ソース・サービス・アクセス・ポイント) フィールドを検査します。
- stp and netbeui
- tcpdump は LLC ヘッダーの DSAP を検査します。
- atalk
- tcpdump は、 0x080007 の OUI と AppleTalk etype を使用した SNAP 形式のパケットを検査します。
- iso、sap、および netbeui
- tcpdump は、 802.3 フレームを検査してから、FDDI、トークンリング、および 802.11の場合と同様に LLC ヘッダーを検査します。
- atalk
- tcpdump は、FDDI、トークンリング、および 802.11の場合と同様に、イーサネット・フレーム内の AppleTalk etype と SNAP フォーマット・パケットの両方を検査します。
- aarp
- tcpdump は、OUI が 0x000000; のイーサネット・フレームまたは 802.2 SNAP フレーム内の AppleTalk ARP etype を検査します。
- ipx
- tcpdump は、イーサネット・フレーム内の IPX etype、LLC ヘッダー内の IPX DSAP、IPX の 802.3-with-no-LLC-header カプセル化、および SNAP フレーム内の IPX etype を検査します。
- decnet src host
- DECNET ソース・アドレスが host であれば True です。host は形式 10.123 のアドレス、または DECNET ホスト名の場合があります。 [DECNET ホスト名サポートは、DECNET を実行するように構成された Ultrix システムでのみ選択可能です。]
- decnet dst host
- DECNET 宛先アドレスが host であれば True です。
- decnet host host
- DECNET ソース・アドレスまたは宛先アドレスが host であれば True です。
- ifname interface
- パケットが指定されたインターフェースからのものとしてログに記録されたのであれば True です。
- on interface
- ifname modifier と同義。
- rnr num
- パケットが指定された PF 規則番号に一致するものとしてログに記録されたのであれば True です (OpenBSD の pf(4) により記録されたパケットにのみ適用)。
- rulenum num
- rnr modifier と同義。
- 理由コード
- パケットが指定された PF 理由コードと共にログに記録されたのであれば True です。 既知のコードは、 match、bad-offset、fragment、short、normalize、memory (OpenBSD'sの'pf(4) によって記録されたパケットにのみ適用される) です。
- action act
- パケットがログに記録されたときに、PF が指定されたアクションを行ったのであれば True です。 既知のアクションは、パスとブロック (OpenBSD'sの'pf(4) によって記録されたパケットにのみ適用される)
- netbeui
- ip、ip6、arp、rarp、atalk、aarp、decnet、iso、stp、ipx。
以下の省略形です。
ここで、p は上記のプロトコルの 1 つです。ether proto plat、moprc、mopdl
以下の省略形です。
ここで、p は上記のプロトコルの 1 つです。 tcpdump は現在、これらのプロトコルの解析方法を認識していないことに注意してください。ether proto p - vlan [vlan_id ]
- パケットが IEEE 802.1Q VLAN パケットであれば True です。 vlan_id が指定されている場合、指定されている vlan_id があるパケットのみが True です。 式で最初に検出された vlan キーワードは、パケットが VLAN パケットであると仮定して、式の残りの部分のデコード・オフセットを変更することに注意してください。
- tcp、udp、icmp
- 以下の省略形です。
ここで、p は上記のプロトコルの 1 つです。ip proto p or ip6 proto p - iso proto protocol
- パケットがプロトコル・タイプ protocol の OSI パケットであれば True です。 protocol には、番号、または名前 clnp、esis、または isis の 1 つを使用できます。
- clnp、esis、isis
- 以下の省略形です。
- iso proto p
- l1、l2、iih、lsp、snp、csnp、psnp
- IS-IS PDU タイプの省略形です。
- vpi n
- 仮想パス ID n の Solaris 上の SunATM の場合、パケットが ATM パケットであれば True です。
- VCI n
- 仮想チャネル ID n の Solaris 上の SunATM の場合、パケットが ATM パケットであれば True です。
- lane
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、ATM LANE パケットであれば True です。 式の中に最初の lane キーワードが検出されると、パケットが LANE エミュレートされたイーサネット・パケットまたは LANE LE 制御パケットであると想定されて、式の残りの部分で実行されるテストが変更されることに注意してください。 lane を指定しない場合は、テストは、パケットが LLC カプセル化パケットであるという想定の下で実行されます。
- llc
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、LLC カプセル化パケットであれば True です。
- oamf4s
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、セグメント OAM F4 フロー・セル (VPI=0 & VCI=3) であれば True です。
- oamf4e
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、エンドツーエンド OAM F4 フロー・セル (VPI=0 & VCI=4) であれば True です。
- oamf4
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、セグメントまたはエンドツーエンド OAM F4 フロー・セル (VPI=0 & (VCI=3 | VCI=4)) であれば True です。
- oam
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、セグメントまたはエンドツーエンド OAM F4 フロー・セル (VPI=0 & (VCI=3 | VCI=4)) であれば True です。
- metac
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、メタシグナル回路上 (VPI=0 & VCI=1) にあれば True です。
- bcc
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、ブロードキャスト・シグナル回路上 (VPI=0 & VCI=2) にあれば True です。
- sc
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、シグナル回路上 (VPI=0 & VCI=5) にあれば True です。
- ilmic
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、ILMI 回路上 (VPI=0 & VCI=16) にあれば True です。
- connectmsg
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、シグナル回路上にあり、Q.2931 Setup、Call Proceeding、Connect、Connect Ack、Release、または Release Done メッセージであれば True です。
- metaconnect
- Solaris 上の SunATM の場合、パケットが ATM パケットであって、メタシグナル回路上にあり、Q.2931 Setup、Call Proceeding、Connect、Release、または Release Done メッセージであれば True です。
- expr relop expr
- relop が >、<、>=、<=、=、!= のいずれかで、expr が整数定数 (標準の C 構文で表される)、通常のバイナリー演算子 [+、-、*、/、&、|]、長さ演算子、および特別なパケットのデータ・アクセサーで構成される演算式であるという関係が維持される場合は True です。 パケット内のデータにアクセスするには、以下の構文を使用します。
proto は、ether、fddi、tr、wlan、ppp、slip、link、ip、arp、rarp、tcp、udp、icmp、または ip6 の 1 つであり、指標演算のプロトコル層を示します。 (ether、fddi、wlan、tr、ppp、slip、および link は、いずれもリンク層を参照します。) tcp、udp、およびその他の上層プロトコル・タイプは、IPv4 にのみ適用され、IPv6 には適用されない (これは将来修正されます) ことに注意してください。 指示されたプロトコル層に相対的なバイト・オフセットは、expr によって与えられます。 size はオプションであり、当該フィールド内のバイト数を示します。1、2、または 4 を使用できますが、デフォルトは 1 です。 長さ演算子はキーワード len で表され、パケットの長さを示します。proto [ expr : size ]例えば、
ether[0] & 1 != 0はすべてのマルチキャスト・トラフィックをキャッチします。 式ip[0] & 0xf !=5は、オプションを使用してすべての IP パケットをキャッチします。 式ip[6:2] & 0x1fff = 0は、フラグメント化されていないデータグラムとフラグメント化されたデータグラムのフラグメント・ゼロのみをキャッチします。 この検査は、tcp および udp 指標演算に暗黙的に適用されます。 例えば、tcp[0] は常に TCP ヘッダーの最初のバイトを意味し、中間フラグメントの最初のバイトを意味することはありません。一部のオフセットおよびフィールド値は、数値ではなく名前として表されることがあります。 使用可能なプロトコル・ヘッダー・フィールド・オフセットは、icmptype (ICMP タイプ・フィールド)、icmpcode (ICMP コード・フィールド)、および tcpflags (TCP フラグ・フィールド) です。
次の ICMP タイプ・フィールドが使用可能です。icmp-echoreply、icmp-unreach、icmp-sourcequench、icmp-redirect、icmp-echo、icmp-routeradvert、 icmp-routersolicit、icmp-timxceed、icmp-paramprob、icmp-tstamp、icmp-tstampreply、icmp-ireq、 icmp-ireqreply、icmp-maskreq、icmp-maskreply。
次の TCP フラグ・フィールドが使用可能です。tcp-fin、tcp-syn、tcp-rst、tcp-push、tcp-ack、tcp-urg。
プリミティブの結合
Negation (`!' or `not').
Concatenation (`&&' or `and').
Alternation (`||' or `or').この中で最優先されるのは否定です。 代替と連結の優先順位は同じで、左から右に関係付けられます。 ここで連結に必要なのは並置ではなく、明示とトークンであることに注意してください。キーワードを付けずに ID を指定すると、
最後のキーワードが想定されます。 例えば、not host vs and ace は not host vs and host ace の省略形で、not ( host vs or ace ) と混同しないようにする必要があります。
式の引数は、単一の引数または複数の引数のいずれか都合のよい方として tcpdump に渡すことができます。 一般に、式にシェル・メタキャラクターが入っている場合は、引用符で囲んで単一の引数として渡す方が簡単です。 複数の引数は、構文解析前にスペースで連結されます。
フラグ
| 項目 | 説明 |
|---|---|
| -a | ネットワーク・アドレスおよびブロードキャスト・アドレスから名前への変換を試みます。 |
| -A | 各パケットを (リンク・レベル・ヘッダーを除いて) ASCII で出力します。 Web ページの取り込みに便利です。 |
| -B バッファー・サイズ | バッファー・サイズをキロバイト単位で示します。 それより小さい値でも受け入れられます。 バッファー・サイズが BPF で設定された最小値より小さい場合、実際のバッファー・サイズは無視され、Berkeley Packet Filter (BPF) で設定された値が使用されます。 -B オプションを指定しないと、バッファー・サイズのデフォルトは 32,768 になります。 |
| -c Count | Count パケットを受信した後で終了します。 |
| -C file_size | savefile にロー・パケットを書き込む前に、ファイルが現在 file_size より大きいかどうか検査し、大きい場合は現行の savefile を閉じて新しいファイルを開きます。 最初の savefile より後の savefile の名前には、-w フラグで指定された名前の後に番号が付きます。 番号は 2 から始まり、上がっていきます。 file_size の単位は、百万バイト (1,048,576 バイトではなく 1,000,000 バイト) です。 |
| -d | コンパイル済みのパケット・マッチング・コードを標準出力にダンプしてから停止します。 |
| -D | システム上で使用でき、tcpdump がパケットを取り込めるネットワーク・インターフェースのリストを出力します。 ネットワーク・インターフェースごとに、番号とインターフェース名 (インターフェースのテキスト記述が続くこともある) が出力されます。 インターフェース名または番号を -i フラグに指定して、捕そくに使用するインターフェースを指定できます。 |
| -dd | パケット・マッチング・コードを C プログラム・フラグメントとしてダンプします。 |
| -ddd | パケット・マッチング・コードを 10 進数 (前にカウントが付く) としてダンプします。 |
| -e | 各ダンプ行にリンク・レベルのヘッダーを出力します。 |
| -E アドレス | spi@ipaddr algo:secret を使用して、addr にアドレッシングされ、セキュリティー・パラメーター・インデックス値 spi を含んでいる IPsec ESP パケットの暗号化解除を行います。 この組み合わせは、コンマまたは改行で分離して繰り返すことができます。注: IPv4 ESP パケットのシークレットの設定がサポートされるようになりました。
アルゴリズムは、
このオプションでは、RFC1827 ESP ではなく RFC2406 ESP が前提とされています。 このオプションはデバッグのみを目的としており、真の秘密鍵に使用することはお勧めできません。 IPsec 秘密鍵をコマンド・ラインで使用すると、ps(1) などの機会に他の人に見られる結果となります。 上記の構文に加えて、tcpdump コマンドは構文ファイル名を使用して、 指定されたファイルを読み取ることがあります。 このファイルは最初の ESP パケットを受信したときに開くので、tcpdump に与えることができる許可は、既に与えられていなければなりません。 |
| -f | 外部 IPv4 アドレスを記号ではなく数値で出力します。 外部 IPv4 アドレスのテストは、IPv4 アドレスと、捕そくの実行に使用するインターフェースのネットマスクを使用して行われます。 そのアドレスまたはネットマスクが使用不可の場合、このオプションは正しく機能しません。 |
| -F ファイル | フィルター式の入力として file を使用します。 コマンド・ラインに入力された追加の式は無視されます。 |
| -G rotate_seconds | -w オプションによって指定されたダンプ・ファイルを、rotate_seconds 秒ごとに循環させます。 -C オプションと一緒に使用した場合、size 変数に指定された値に先に達すると、ファイル名は file &lt;count> の形式になります。 そうでない場合、rotate_seconds 変数に指定された値の時間が経過すると、tcpdump コマンドはファイルを循環させます。 |
| -i インターフェース | interface を listen します。 指定されていない場合、tcpdump は、システム interface リスト内で、最下位の番号を持つ構成済みの interface (ループバックを除外) を検索します。 最も早い一致を選択することにより、結合が切断されます。 -D フラグによって出力される interface 番号は、 interface 引数として使用できます。 |
| -K | TCP チェックサム計算をハードウェア内で実行するインターフェース上では、TCP チェックサムの検証をスキップします。 このフラグを使用しなければ、すべての発信 TCP チェックサムに不良のフラグが立てられます。 |
| -l | stdout 行がバッファーに入れられます。 データの捕そく中にそのデータを表示するのに役立ちます。 次に例を示します。 |
| -L | インターフェースに関する既知のデータ・リンク・タイプをリストして、終了します。 |
| -m module | module ファイルから SMI MIB モジュール定義をロードします。 このオプションを複数回使用して、複数の MIB モジュールを tcpdump にロードできます。 |
| -M | TCP-MD5 オプション (Request for Comment (RFC) 2385) を使用して、TCP セグメント内で検出されたダイジェストを検証するための共有秘密鍵として、secret を使用します。 |
| -n | ホスト・アドレスとポート番号が名前に変換されるのを妨害します。 |
| -N | ホスト名のドメイン・ネームの修飾の出力を省略します。 例えば、tcpdump は nic.ddn.mil の代わりに nic を出力します。 |
| -O | tcpdump がパケット・マッチング・コード最適化プログラムを実行しないようにします。 これは、最適化プログラムにバグがあると思われる場合にのみ有効です。 |
| -p | インターフェースがプロミスキャス・モードになるのを防ぎます。 インターフェースが他の何らかの理由でプロミスキャス・モードになっている可能性があることに注意してください。そのため、 -p を ether host {local-hw-addr} または ether broadcastの省略形として使用することはできません。 |
| -q | 高速出力。 出力されるプロトコル情報が少なくなるため、出力行が短くなります。 |
| -Q | 記録されたパケットをトレースするフィルター・システムを使用可能にします。 ネットワーク通信サブシステムに関連する選択したシステム・イベントを記録するには、AIX®トレース・デーモンを実行する必要があります。 |
| -r file | file (-w オプションで作成された) からパケットを読み取ります。 file が "-" の場合は、標準入力が使用されます。 |
| -R | ESP/AH パケットは古い仕様に基づいていると想定されます。 (RFC1825 から RFC1829) これが指定されると、tcpdump はリプレイ予防フィールドを出力しません。 ESP/AH 仕様にはプロトコル・バージョン・フィールドがないため、 tcpdump は ESP/AH プロトコルのバージョンを推測できません。 |
| -S | 相対ではなく絶対の TCP シーケンス番号を出力します。 |
| -s snaplen | デフォルトの 68 ではなく、各パケットからのデータの Snarf snaplen バイト数。68 バイトは、IP、ICMP、TCP、および UDP には十分ですが、ネーム・サーバーおよび NFS パケットからはプロトコル情報を切り捨てる場合があります (下記を参照)。 限定されたスナップショットのため切り捨てられたパケットは、[|proto] として出力に表示されます。ここで、proto は、切り捨てが発生したプロトコル・レベルの名前です。 処理するスナップショットの量を増やすと、パケットの処理時間が長くなり、パケット・バッファリングの量を効果的に減らせることに注意してください。 ただし、この場合、パケットが失われることがあります。 snaplen を、関心のあるプロトコル情報を取り込む最小数に 制限してください。 snaplen を 0 に設定すると、パケット全部をキャッチするために必要な長さを使用することになります。 |
| -T | expression で選択されたパケットが指定のタイプと解釈されるように強制します。 現在、既知のタイプは、cnfp (Cisco NetFlow プロトコル)、rpc (リモート・プロシージャー・コール)、rtp (Real-Time Applications プロトコル)、rtcp (Real-Time Applications 制御プロトコル)、snmp (Simple Network Management Protocol)、tftp (Trivial File Transfer プロトコル)、vat (Visual Audio Tool)、および wb (distributed White Board)。 |
| -t | 各ダンプ行にタイム・スタンプを出力しません。 |
| -tt | 各ダンプ行にフォーマットされていないタイム・スタンプを出力します。 |
| -ttt | 各ダンプ行について、現在の行と直前の行との差分 (マイクロ秒) を出力します。 |
| -tttt | 各ダンプ行について、日付が先行するデフォルト形式でタイム・スタンプを出力します。 |
| -ttttt | 各ダンプ行について、現在の行と最初の行との差分 (マイクロ秒) を出力します。 |
| -u | デコードされていない NFS ハンドルを出力します。 |
| -U | -w オプションを介して出力を保管します。例: "packet-buffered"。 保存された各パケットは、出力バッファーがいっぱいになったときのみに出力ファイルに書き込まれるのではなく、 保存された時点で出力ファイルに書き込まれます。 |
| -v | やや詳細な出力を指定します。 例えば、存続時間、識別番号、全長、および IP パケット内のオプションが出力されます。 また、IP および ICMP ヘッダー・チェックサムの検査などの追加のパケット保全性検査が使用可能になります。 |
| -vv | -v よりさらに詳細な出力。 例えば、NFS から追加のフィールドが出力され、応答パケットが完全にデコードされます。 |
| -vvv | -vv よりさらに詳細な出力。 例えば、telnet SB ... SE オプションはフルで印刷されます。 -X では、Telnet オプションも 16 進数で出力されます。 |
| -V | ソケット・デバッグ・フラグ (SO_DEBUG ソケット・オプション) およびソケット上のトレース・レベルを設定します。 このフラグは、-Q フラグと一緒に使用する必要があります。 |
| -w file | ロー・パケットを構文解析して出力する代わりに、file に書き込みます。 ロー・パケットは、後で -r フラグを使用して出力することができます。 File が「-」であれば、標準出力が使用されます。 |
| -x | 各パケットを (リンク・レベル・ヘッダーを除いて) 16 進形式で出力します。 パケット全体と snaplen バイトのうち、小さい方が出力されます。 これは リンク層パケット全体であるため、埋め込むリンク層 (例えば、イーサネット) の場合は、 必要な埋め込みより高位層パケットのほうが短い場合に 埋め込みバイトも出力されることに注意してください。 |
| -xx | レベル・ヘッダーを含めて各パケットを 16 進形式で出力します。 |
| -X | 各パケットを (リンク・レベル・ヘッダーを除いて) 16 進形式と ASCII で出力します。 これは新しいプロトコルの分析にとても便利です。 |
| -y datalinktype | パケットの取り込み中に使用するデータ・リンク・タイプを datalinktype に設定します。 |
| -z command | -C オプションまたは -G オプションと組み合わせて使用すると、指定したコマンドが、tcpdump コマンドによって savefile を対象に実行されます。 例えば、-z gzip または -z
bzip2 を指定すると、それぞれの savefile が gzip コマンドまたは bzip2 コマンドを使用して圧縮されます。 注: tcpdump コマンドは、キャプチャー・プロセスに影響を与えないように、最も低い優先順位を使用して -z コマンドをキャプチャーと並行して実行します。
|
| -Z user | 指定されたユーザーのシステム特権で tcpdump コマンドを 実行します。 |
パラメーター
- 式
- ダンプされるパケットを選択します。 式が指定されている場合は、
式が
trueであるパケットのみがダンプされます。 式が指定されていない場合は、net 上のすべてのパケットがダンプされます。expression は 1 つ以上のプリミティブから構成されます。 通常、プリミティブは、1 つ以上の修飾子が前に付いた ID (名前または番号) から構成されます。 次の 3 種類の修飾子があります。- type 修飾子は、ID 名または番号が参照するプリミティブのタイプを示します。 可能な type は host、net、および port です。 例:「host foo」、「net 128.3」、「port 20」。 type 修飾子がない場合は、host であると想定されます。
- dir 修飾子は、ID との間の特定の転送方向を指定します。 可能な方向は、src、dst、src or dst、および src and dst です。 dir 修飾子がない場合は、src or dst であると想定されます。 SLIP などのリンク層やその他のデバイス・タイプの場合、インバウンド修飾子およびアウトバウンド修飾子を使用して、望ましい方向を指定できます。
- proto 修飾子は、一致を特定のプロトコルに制限します。 可能な proto は、fddi、tr、wlan、 ip、ip6、arp、rarp、decnet、tcp、および udp です。 proto 修飾子がない場合は、type に整合するすべてのプロトコルであると想定されます。
fddi は ether の別名です。 パーサーは、これを「指定されたネットワーク・インターフェース上で使用されるデータ・リンク・レベル」を意味するものとして扱います。 FDDI ヘッダーには、イーサネット式のソース・アドレスと宛先アドレスが含まれ、イーサネット式のパケット・タイプが含まれることもしばしばあります。そのため、類似したイーサネット・フィールドの場合と同様にこれらの FDDI フィールドによるフィルタリングが可能です。 FDDI ヘッダーにはこれ以外のフィールドも含まれますが、それらのフィールドはフィルター式では指定できません。
fddiと同様に、 tr および wlan は ether の別名です。 前のパラグラフの FDDI ヘッダーに関する記述は、トークンリング・ヘッダーおよび 802.11 無線 LAN ヘッダーにも当てはまります。 802.11 ヘッダーの場合、宛先アドレスは DA フィールド、ソース・アドレスは SA フィールドです。BSSID フィールド、RA フィールド、および TA フィールドはテストされていません。
上記以外に、パターンに従わない特殊な「プリミティブ」キーワード (gateway、broadcast、less、 greater) および演算式があります。 これらについては、いずれも以下で説明します。
ワード
and、or、およびnotを使用してプリミティブを組み合わせると、さらに複雑なフィルター式が作成されます。
環境変数
ksh$ LIBPATH=/opt/freeware/lib tcpdump -E"algo:secret"終了状況
| 項目 | 説明 |
|---|---|
| 0 | 成功 |
| ゼロ以外 | エラー |
セキュリティー
ネットワーク・インターフェースからパケットを読み取るには、 /dev/bpf*(通常は root のみ) への読み取りアクセスが必要です。 ファイルからパケットを読み取るには、ファイル読み取り許可以外の特殊な特権は必要ありません。
例
- sundown に着信するすべてのパケットまたは sundown から発信されるすべてのパケットを出力するには、次のように入力します。
tcpdump host sundown - helios と hot または ace のいずれかとの間のトラフィックを出力するには、次のように入力します。
tcpdump host helios and \( hot or ace \) - ace と、helios 以外の任意のホストとの間のすべての IP パケットを出力するには、次のように入力します。
tcpdump ip host ace and not helios - ローカル・ホストと、Berkeley にあるホストとの間のすべてのトラフィックを出力するには、次のように入力します。
tcpdump net ucb-ether - インターネット・ゲートウェイ snup を通るすべての FTP トラフィックを出力するには、次のように入力します。
tcpdump 'gateway snup and (port ftp or ftp-data)'注: 式は、シェルが括弧を解釈しないように引用符で囲まれています。 - ローカル・ホストがソースでも宛先でもないトラフィックを出力するには (ローカル・ホストが別のネットワークへのゲートウェイの役割を果たしている場合、ローカル・ネットワークはソースでも宛先でもないことになります)、次のように入力します。
tcpdump ip and not net localnet - 非ローカル・ホストが関与する各 TCP 会話の開始パケットと終了パケット (SYN パケットと FIN パケット) を出力するには、次のように入力します。
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet' - ゲートウェイ snup を通して送信された 576 バイトを超える長さの IP パケットを出力するには、次のように入力します。
tcpdump 'gateway snup and ip[2:2] > 576' - イーサネット・ブロードキャストまたはマルチキャストを介さずに送信された IP ブロードキャスト・パケットまたはマルチキャスト・パケットを出力するには、次のように入力します。
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' - 要求/応答をエコーしない (例えば、パケットを ping しない) すべての ICMP パケットを出力するには、次のように入力します。
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-e choreply'
標準エラー
すべてのエラーと警告が stderrに送信されます。
制限
夏時間調整の時刻変更にまたがってパケット・トレースを行うと、タイム・スタンプに偏りが生じます (時刻変更は無視されます)。
トークンリング・ヘッダーのフィールド以外のフィールドにあるフィルター式は、 ソース経路のトークンリング・パケットを正確に処理しません。
802.11 ヘッダーのフィールド以外のフィールドにあるフィルター式は、To DS と From DS の両方が 設定された 802.11 データ・パケットを正確に処理しません。
ip6 proto はヘッダー・チェーンを追跡しなければなりませんが、現時点では行いません。 この動作のために ip6 protochain が提供されています。
トランスポート層ヘッダーに対する演算式 (tcp[0] など) は、IPv6 パケットに対しては機能しません。 IPv4 パケットのみが処理されます。
基礎となる BPF ドライバーが WPAR を認識しないため、パケット・トレースは WPAR 環境では機能しません。
ファイル
| 項目 | 説明 |
|---|---|
| /usr/sbin/tcpdump | tcpdump コマンドの場所。 |
| /usr/lib/libpcap.a | |
| /dev/bpf* | |
| /opt/freeware/lib/libcrypto.a(libcrypto.so) | オプション |