tcpdump コマンド

目的

ネットワーク上のトラフィックをダンプします。

構文

tcpdump [ -a ] [ -A ] [ -B buffer_size ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M secret ] [ -r file ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ -c count ][ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i  interface ] [ -s snaplen ] [ -w file ][ -E addr ] [ -y datalinktype ] [-z command ] [-Z user ] [ expression ]

説明

tcpdump コマンドは、ネットワーク・インターフェース上のパケットのうち、ブール式にマッチするパケットのヘッダーを出力します。 -w フラグを指定してこのコマンドを実行し、さらなる分析のためにパケット・データをファイルに保存することができます。 さらに、-r フラグを指定してこのコマンドを実行すると、 ネットワーク・インターフェースからパケットを読み取る代わりに、保存されたパケット・ファイルからデータを読み取ることができます。 いずれの場合も、式にマッチするパケットのみが tcpdump コマンドによって処理されます。

tcpdump は、-c フラグを指定しないで 実行されると、SIGINT シグナル (通常は control-C) または SIGTERM シグナル (通常は kill(1) コマンド) によって 中断されるまでパケットを取り込み続けます。 tcpdump は、-c フラグを指定して実行されると、SIGINT シグナルまたは SIGTERM シグナルによって 中断されるまで、または指定された数のパケットが処理されるまでパケットを取り込みます。

tcpdump コマンドは、すべてのパケットを取り込んだ後で以下のカウントを戻します。
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 は次の式と同等です。
ether proto ¥ip and host host
host が複数の IP アドレスを持つ名前の場合は、各アドレスが一致するかどうか検査されます。
ether dst ehost
イーサネット宛先アドレスが ehost であれば True です。 ehost は、/etc/ethers からの名前、または数値です (数値形式については ethers(3N) を参照)。
ether src ehost
イーサネット・ソース・アドレスが ehost であれば True です。
ether host ehost
イーサネット・ソース・アドレスまたは宛先アドレスが ehost であれば True です。
gateway host
パケットが host をゲートウェイとして使用していた場合は True です。 例えば、イーサネット・ソース・アドレスまたはイーサネット宛先アドレスが host であって、IP ソースと IP 宛先がいずれも host でない場合です。 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 の SNAP 形式のパケットおよび AppleTalk etype を検査します。
イーサネットの場合、tcpdump はこれらのプロトコルの大部分についてイーサネット・タイプ・フィールドを検査します。 例外は次のとおりです。
iso、sap、および netbeui
tcpdump は 802.3 フレームを検査し、次に FDDI、トークンリング、および 802.11 の検査として LLC ヘッダーを検査します。
atalk
tcpdump はイーサネット・フレーム内の AppleTalk etype および SNAP 形式のパケットの検査 (FDDI、トークンリング、および 802.11 の検査として) の両方を行います。
aarp
tcpdump はイーサネット・フレーム内または 0x000000 の OUI のある 802.2 SNAP フレームのいずれかの内の AppleTalk ARP etype を検査します。
ipx
tcpdump はイーサネット・フレーム内の IPX etype、LLC ヘッダー内の IPX DSAP、 LLC ヘッダーなしの 802.3 による IPX のカプセル化、および 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 と同義。
reason code
パケットが指定された PF 理由コードと共にログに記録されたのであれば True です。 既知のコードは、match、bad-offset、fragment、short、normalize、および memory です (OpenBSD の pf(4) により記録されたパケットにのみ適用)。
action act
パケットがログに記録されたときに、PF が指定されたアクションを行ったのであれば True です。 既知のアクションは、pass および block です (OpenBSD の pf(4) により記録されたパケットにのみ適用)。
netbeui
ip、ip6、arp、rarp、atalk、aarp、decnet、iso、stp、ipx。

以下の省略形です。

ether proto p
ここで、p は上記のプロトコルの 1 つです。

lat、moprc、mopdl

以下の省略形です。
ether proto p
ここで、p は上記のプロトコルの 1 つです。現在、tcpdump はこれらのプロトコルの構文解析はサポートしていないことに注意してください。
vlan [vlan_id]
パケットが IEEE 802.1Q VLAN パケットであれば True です。 vlan_id が指定されている場合、指定されている vlan_id があるパケットのみが True です。 式の中に最初の vlan キーワードが検出されると、パケットが VLAN パケットであると想定されて、式の残りの部分のデコード・オフセットが変更されることに注意してください。
tcp、udp、icmp
以下の省略形です。
ip proto p or ip6 proto p
ここで、p は上記のプロトコルの 1 つです。
iso proto protocol
パケットがプロトコル・タイプ protocol の OSI パケットであれば True です。 protocol には、番号、または名前 clnp、esis、または isis の 1 つを使用できます。
clnp、esis、isis
以下の省略形です。
  • iso proto p
ここで、p は上記のプロトコルの 1 つです。
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 が >、<、>=、<=、=、!= の 1 つであり、expr は整数定数 (標準 C 構文で表現された)、通常の 2 項演算子 [+、-、*、/、&、|]、長さ演算子、および特殊なパケット・データ・アクセサーで構成される演算式である場合に、関係が保持されれば True です。パケット内のデータにアクセスするには、以下の構文を使用します。
proto [ expr : size ]
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 で表され、パケットの長さを示します。

例えば、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 acenot host vs and host ace の省略形です。not ( host vs or ace )

と混同しないでください。

式の引数は、単一の引数または複数の引数のうち、いずれか便利な方を引数として tcpdump コマンドに渡すことができます。一般に、式にシェル・メタキャラクターが入っている場合は、引用符で囲んで単一の引数として渡す方が簡単です。複数の引数は、構文解析前にスペースで連結されます。

フラグ

項目 説明
-a ネットワーク・アドレスおよびブロードキャスト・アドレスから名前への変換を試みます。
-A 各パケットを (リンク・レベル・ヘッダーを除いて) ASCII で出力します。 Web ページの取り込みに便利です。
-B buffer_size バッファー・サイズをキロバイト単位で示します。それより小さい値でも受け入れられます。バッファー・サイズが 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 addr spi@ipaddr algo:secret を使用して、addr にアドレッシングされ、セキュリティー・パラメーター・インデックス値 spi を含んでいる IPsec ESP パケットの暗号化解除を行います。 この組み合わせは、コンマまたは改行で分離して繰り返すことができます。
注: IPv4 ESP パケットの機密事項の設定がサポートされました。

可能なアルゴリズムは、des-cbc3des-cbc blowfish-cbcrc3-cbccast128-cbc、または none です。 デフォルトは des-cbc です。 パケットの暗号化解除は、libcrypto がインストールされて LIBPATH 内にある場合にのみ機能します。

secret は、ESP 秘密鍵の ASCII テキストです。 前に 0x が付くと、16 進数値が読み取られます。

このオプションでは、RFC1827 ESP ではなく RFC2406 ESP が前提とされています。 このオプションはデバッグのみを目的としており、真の秘密鍵に使用することはお勧めできません。 IPsec 秘密鍵をコマンド・ラインで使用すると、ps(1) などの機会に他の人に見られる結果となります。

上記の構文に加えて、tcpdump コマンドは構文ファイル名を使用して、 指定されたファイルを読み取ることがあります。 このファイルは最初の ESP パケットを受信したときに開くので、tcpdump に与えることができる許可は、既に与えられていなければなりません。

-f 外部 IPv4 アドレスを記号ではなく数値で出力します。

外部 IPv4 アドレスのテストは、IPv4 アドレスと、捕そくの実行に使用するインターフェースのネットマスクを使用して行われます。 そのアドレスまたはネットマスクが使用不可の場合、このオプションは正しく機能しません。

-F file フィルター式の入力として file を使用します。 コマンド・ラインに入力された追加の式は無視されます。
-G rotate_seconds -w オプションによって指定されたダンプ・ファイルを、rotate_seconds 秒ごとに循環させます。 -C オプションと一緒に使用されると、size 変数に指定された値に先に達した場合、ファイル名の形式は file <count> になります。その他の場合、rotate_seconds 変数に指定された秒数が経過した時点で、tcpdump コマンドはファイルを循環させます。
-iinterface interface を listen します。 指定されていない場合、tcpdump は、システム interface リスト内で、最下位の番号を持つ構成済みの interface (ループバックを除外) を検索します。 最も早い一致を選択することにより、結合が切断されます。

-D フラグにより出力される interface 番号を interface 引数として使用できます。

-K TCP チェックサム計算をハードウェア内で実行するインターフェース上では、TCP チェックサムの検証をスキップします。このフラグを使用しなければ、すべての発信 TCP チェックサムに不良のフラグが立てられます。
-l stdout 行がバッファーに入れられます。 データの捕そく中にそのデータを表示するのに役立ちます。 次に例を示します。
tcpdump -l | tee dat
  または
tcpdump -l   >   dat & tail -f dat
-L インターフェースに関する既知のデータ・リンク・タイプをリストして、終了します。
-mmodule module ファイルから SMI MIB モジュール定義をロードします。 このオプションを複数回使用して、複数の MIB モジュールを tcpdump にロードできます。
-M TCP-MD5 オプション (Request for Comment (RFC) 2385) を使用して、TCP セグメント内で検出されたダイジェストを検証するための共有秘密鍵として、secret を使用します。
-n ホスト・アドレスとポート番号が名前に変換されるのを妨害します。
-N ホスト名のドメイン・ネームの修飾の出力を省略します。例えば、tcpdumpnic.ddn.mil の代わりに nic を出力します。
-O tcpdump がパケット・マッチング・コード最適化プログラムを実行しないようにします。 これは、最適化プログラムにバグがあると思われる場合にのみ有効です。
-p インターフェースがプロミスキャス・モードになるのを防ぎます。ただし、インターフェースはなんらかの別の理由で無差別モードになることがあるので注意が必要です。そのため、-pether 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 バイトではなく、大量の 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 で出力します。 これは新しいプロトコルの分析にとても便利です。
-ydatalinktype パケットの取り込み中に使用するデータ・リンク・タイプを datalinktype に設定します。
-z command -C オプションまたは -G オプションと組み合わせて使用すると、指定したコマンドが、tcpdump コマンドによって savefile を対象に実行されます。 例えば、-z gzip または -z bzip2 を指定すると、それぞれの savefilegzip コマンドまたは bzip2 コマンドを使用して圧縮されます。
注: tcpdump コマンドは、キャプチャーと並行して -z コマンドを実行しますが、キャプチャー・プロセスを妨げないように最低の優先度を使用します。
-Z user 指定されたユーザーのシステム特権で tcpdump コマンドを 実行します。

パラメーター

expressions
ダンプされるパケットを選択します。式が指定されている場合は、 式が 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) および演算式があります。 これらについては、いずれも以下で説明します。

ワード andor、および not を使用してプリミティブを組み合わせると、さらに複雑なフィルター式が作成されます。

環境変数

-E フラグが機能するためには、LIBPATH 環境変数を設定するか、libcrypto ライブラリーが /usr/lib に存在する必要があります。 次に例を示します。
ksh$ LIBPATH=/opt/freeware/lib tcpdump -E"algo:secret"

終了状況

項目 説明
0 成功
ゼロ以外 エラー

セキュリティー

ネットワーク・インターフェースからパケットを読み取るためには、/dev/bpf* への読み取りアクセスが必要ですが、通常これは root のみの特権です。 ファイルからパケットを読み取るには、ファイル読み取り許可以外の特殊な特権は必要ありません。

RBAC ユーザーおよび Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権についての詳細情報は、「セキュリティー 」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. sundown に着信するすべてのパケットまたは sundown から発信されるすべてのパケットを出力するには、次のように入力します。
    tcpdump host sundown
  2. helios と hot または ace のいずれかとの間のトラフィックを出力するには、次のように入力します。
    tcpdump host helios and ¥( hot or ace ¥)
  3. ace と、helios 以外の任意のホストとの間のすべての IP パケットを出力するには、次のように入力します。
    tcpdump ip host ace and not helios
  4. ローカル・ホストと、Berkeley にあるホストとの間のすべてのトラフィックを出力するには、次のように入力します。
    tcpdump net ucb-ether
  5. インターネット・ゲートウェイ snup を通るすべての FTP トラフィックを出力するには、次のように入力します。
    tcpdump 'gateway snup and (port ftp or ftp-data)'
    注: この式が引用符で囲まれているのは、シェルが括弧の解釈を間違えないようにするためです。
  6. ローカル・ホストがソースでも宛先でもないトラフィックを出力するには (ローカル・ホストが別のネットワークへのゲートウェイの役割を果たしている場合、ローカル・ネットワークはソースでも宛先でもないことになります)、次のように入力します。
    tcpdump ip and not net localnet
  7. 非ローカル・ホストが関与する各 TCP 会話の開始パケットと終了パケット (SYN パケットと FIN パケット) を出力するには、次のように入力します。
    tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet'
  8. ゲートウェイ snup を通して送信された 576 バイトを超える長さの IP パケットを出力するには、次のように入力します。
    tcpdump 'gateway snup and ip[2:2] > 576'
  9. イーサネット・ブロードキャストまたはマルチキャストを介さずに送信された IP ブロードキャスト・パケットまたはマルチキャスト・パケットを出力するには、次のように入力します。
    tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
  10. 要求/応答をエコーしない (例えば、パケットを 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) オプション