運用コマンドレファレンス Vol.1
[機能]
本装置に対して送受信されるパケットをモニタするコマンドです。
例えば,本装置宛に送信されたリモートアクセス要求などのパケットや,本装置発のルーティングプロトコルなどのパケットをモニタするなど,本装置宛・本装置発のレイヤ3(IPv4/IPv6)部分の通信状況を調査することができます。
モニタ/解析できるパケット一覧を次の表に示します。
表10-10 モニタ/解析できるパケット一覧
項番 アドレスファミリ 種別 説明 1 IPv4 TCP bgpやtelnet等の各種tcp通信を解析します。 UDP snmpやrip等の各種udp通信を解析します。 ICMP ping等を解析します。 OSPF ospfルーティングプロトコルを解析します。 IGMP igmpやdvmrpを解析します。 PIM マルチキャストpimを解析します。 IP-in-IP IPv6 over IPv4 tunnel等を解析します。 2 IPv6 TCP bgp4+やtelnet等の各種tcp通信を解析します。 UDP snmpやripng等の各種udp通信を解析します。 ICMP6 ping等を解析します。 OSPF6 ospfルーティングプロトコルを解析します。 PIM マルチキャストpimを解析します。 IP-in-IP IPv4 over IPv6 tunnel等を解析します。
[入力形式]
- <I/Fのパケットモニタリング>
show tcpdump interface <Interface Name> [no-resolv | no-domain] [abs-seq] [no-time] [brief | detail | extensive | debug] [hex | hex-ascii] [count <count>] [snaplen <snaplen>] [writefile <File Name>] [<expression>]
- <パケットモニタリングファイルの表示>
show tcpdump readfile <File Name> [no-resolv | no-domain] [abs-seq] [no-time] [brief | detail | extensive | debug] [hex | hex-ascii] [count <count>] [writefile <File Name>] [<expression>]注 show tcpdumpはtcpdumpとしても入力可能です。tcpdumpとして入力する場合,以下のtcpdumpオリジナルのパラメータで補完,入力します。
tcpdump -i <Interface Name> [-n | -N] [-S] [-t] [-q] [-v[v[v]]] [-x | -X] [-c <count>] [-s <snaplen>] [-w <File Name>] [<expression>] tcpdump -r <File Name> [-n | -N] [-S] [-t] [-q] [-v[v[v]]] [-x | -X] [-c <count>] [-w <File Name>] [<expression>]
[パラメータ]
- interface <Interface Name> (-i <Interface Name>)
- 指定された<Interface Name>のI/Fをモニタします。
- readfile <File Name> (-r <File Name>)
- パケットを(writefileオプションで作成した)<File Name>から読み込みます。
- no-resolv (-n)
- アドレス(ホストアドレス,ポート番号など)を名前に変換しません。
- no-domain (-N)
- ホストのドメイン名を表示しません。例えば,server.example.comと表示するかわりにserverと表示します。
- abs-seq (-S)
- TCPシーケンス番号を相対値ではなく,絶対値で表示します。
- no-time (-t)
- 各ダンプ行に時間情報を表示しません。
- brief (-q)
- TCPやUDP等のプロトコル情報の表示を一部省略して,通常より簡素な表示にします。レイヤ2部分(アドレスファミリ)も表示されません。
- detail (-v)
- 通常より少し詳細に表示します。
- 例えば,IP パケットにおけるtime to live,identification,total lengthやoptionsの情報を表示します。さらにIPやICMPヘッダのchecksumを確認するようなパケットの完全性チェックも追加されます。
- extensive (-vv)
- detailよりさらに詳細に表示します。
- 例えば,NFS応答パケットの付加フィールドが表示されます。
- debug (-vvv)
- 最も詳細に表示します。
- 例えば,telnetプロトコルのサブオプションも表示されます。
- hex (-x)
- リンクレイヤを除いて,各パケットを16進で表示します。
- hex-ascii (-X)
- 16進表示されるときに,ASCII文字も表示します。
- count <count> (-c <count>)
- <count>個のパケットを受信した後に終了します。
- 指定しない場合は[Ctrl+C]で終了します。
- snaplen <snaplen> (-s <snaplen>)
- デフォルトの96バイトに代わって<snaplen>バイトを各パケットから取り出します。この値は,プロトコルの情報が得られる必要最小限としてください。なお本装置では,パケットのレイヤ2部分は,アドレスファミリを含んだ4バイトのNull/Loopbackヘッダとして扱っていますので,<snaplen>を4以上に設定してください。
- <snaplen>制限で後ろが切り捨てられたパケットは出力時に”[|<proto>]”形式で示されます。(<proto>は切り捨ての生じたレベルに対応するプロトコルの名前です。)
- <snaplen>を0にすると,パケット全体を拾うのに必要な長さ(65535)が使われます。
- writefile <File Name> (-w <File Name>)
- パケットを解析,表示するかわりにモニタした情報を<File Name>に書き出します。
- この<File Name>は後でreadfile <File Name>オプションを使用して表示することができます。
- <expression>
- ダンプするパケットの種類を選択します。<expression>を指定した場合は,<expression>が”true”(真)となるパケットだけをモニタします。
- 本装置が大量のパケットを受信・送信している時は,本パラメータを指定して,必要なパケットだけをモニタするようにしてください。
- <expression>の指定例を以下に示します。
- <expression>は,一つの基本要素か,基本要素を二つ以上組み合わせたものを指定します。
- 基本要素は,<proto> <dir> <type> <id>の4種類の組み合わせで構成されます。
- 基本要素は,<id>に<type>を前置したものや,さらにそれらに<dir>,<proto>,<proto> <dir>の修飾子を矛盾しないよう前置したものです。
- 以下に基本要素のパターンを示します。
- 基本要素のパターン:
- <type> <id>
- <dir> <type> <id>
- <proto> <type> <id>
- <proto> <dir> <type> <id>
- <id>
- アドレスやポート番号などの名前または番号を示します。
- 例:10.10.10.10,serverA,23,telnet
- <type>
- この修飾子は<id>が対象とするものの種類を示します。利用できる<type>は,host, net, portです。
- 例:host serverA,net 192.168,port 22
- 他の修飾子との組み合わせで,<type>修飾子を省略した場合は,hostが指示されているものとみなします。
- 例:src serverAはsrc host serverAを意味します。
- <dir>
- この修飾子は,<id>から,または<id>へ,あるいは両方の通信方向を特定します。
- 利用できる方向は src,dst,src or dst,src and dstです。
- 例:src serverA,dst net fe80::/64,src or dst port telnet
- <dir>修飾子が指定されない場合はsrc or dstが指示されているものとみなします。
- 例:port telnetは,src or dst port telnetを意味します。
- <proto>
- この修飾子は,特定のプロトコルに制限する場合に指定します。
- 利用可能なプロトコルは,ip,ip6,tcp,udpです。
- 例:ip6 src fec0::1,ip net 192.168,tcp port 23
- <proto>修飾子が指定されない場合は,<type>と矛盾しない範囲の
- 全てのプロトコルが指定されているものとみなします。
- 例:port 53はtcp port 53 or udp port 53を意味します。
- 基本要素の例
- dst host <host>
- パケットのIPv4/IPv6宛先が<host>であるとき真。
- src host <host>
- パケットのIPv4/IPv6送信元が<host>であるとき真。
- host <host>
- パケットのIPv4/IPv6宛先または送信元が<host>であるとき真。
- 上記の各hostを示す条件式の前にip,ip6のどちらかを付与し,IPv4/IPv6を限定することもできます。
- 例:ip host <host>
- 例:ip6 src host <host>
- dst net <net>/<len>
- パケットのIPv4/IPv6宛先アドレスが,指定した<len>ビットnetmaskの<net>ネットワークに含まれているときに真。
- src net <net>/<len>
- パケットのIPv4/IPv6送信元アドレスが,指定した<len>ビットnetmaskの<net>ネットワークに含まれているときに真。
- net <net>/<len>
- パケットのIPv4/IPv6宛先アドレスが,指定した<len>ビットnetmaskの<net>ネットワークに含まれているときに真。
- dst port <port>
- パケットがip/tcpかip/udpかipv6/tcpかipv6/udpである場合で,宛先のport番号が<port>であるときに真。
- src port <port>
- パケットがip/tcpかip/udpかipv6/tcpかipv6/udpである場合で,送信元のport番号が<port>であるときに真。
- port <port>
- パケットがip/tcpかip/udpかipv6/tcpかipv6/udpである場合で,パケットの宛先か送信元portが<port>であるとき真。
- 上記の各<port>を指定する条件式の前に,tcp,udpのどちらかを付与し,tcp/udpを限定することもできます。
- 例:tcp src port <port>
- その他に,基本要素として,<id>などを指定しない次のようなものもあります。
- ip proto <protocol>
- パケットが<protocol>番号のプロトコルのIPv4パケットであるとき真。
- ip6 proto <protocol>
- パケットが<protocol>番号のプロトコルのIPv6パケットであるとき真。
- ip multicast
- パケットがIPv4マルチキャストであるとき真。
- ip6 multicast
- パケットがIPv6マルチキャストであるとき真。
- ip,ip6 (どちらかを指定)
- パケットがipまたはip6であるとき真。
- tcp,udp,icmp,icmp6 (どれかを指定)
- パケットがtcp,udp,icmpまたはicmp6であるとき真。
- 基本要素の組み合わせ
- 複雑なフィルタ条件式は,基本要素をand,or,notで組み合わせて表現します。
- また,条件式をまとめる場合は,括弧 ( ) で囲んでください。
- 例:host server1 and not ( port ssh or port http )
- host server1でかつport sshまたはport httpでないものとなります。
- なお,明示的な修飾子は省略することもできます。
- 例:tcp dst port ftp or ssh or domainは
- tcp dst port ftp or tcp dst port ssh or tcp dst port domainと同じ意味です。
- <expression>指定例
- host serverA
- serverAとの通信パケットをモニタします。
- tcp port telnet
- telnet通信のパケットをモニタします。
- not tcp port ssh
- ssh通信以外のパケットをモニタします。
- host serverA and tcp port bgp
- serverAとのbgp通信(IPv4とIPv6)パケットをモニタします。
- ip6 and host serverA and tcp port bgp
- serverAとのbgp通信(IPv6)パケットをモニタします。
- ip and not net 192.168.1/24
- ネットワーク192.168.1/24を宛先・送信元としないIPv4パケットをモニタします。
- udp port 520 or 521
- rip/ripng通信(IPv4/IPv6)パケットをモニタします。
- ip6 proto 89
- OSPF通信(IPv6)パケットをモニタします。
[使用者レベル]
一般ユーザ
[実行例][表示説明]
- IPv4/IPv6パケットをモニタした場合
図10-5 IPv4/IPv6パケットをモニタした場合
表10-11 IPv4/IPv6パケットモニタ表示内容
項番 表示内容 説明 1 タイムスタンプ パケットをキャプチャしたタイムスタンプが表示されます。(no-time指定時は表示されません) 2 プロトコル プロトコル名とパケット長(NULL/LOOPBACKヘッダ部4byteは除く)が表示されます。(brief指定時は表示されません) 3 IPアドレスペア 送信元アドレスと送信先アドレスのペアが表示されます。トンネルパケットのようなカプセリングされたパケットは,複数のアドレスペアが表示されます。 4 上位層プロトコル ICMPやTCPなどパケットに応じた上位層プロトコルが表示されます。 5 モニタ統計 受信したパケット数が表示されます。 6 モニタ統計 取りこぼしたパケット数が表示されます。 - hostA.example.com(10.10.10.10)とv6hostA.example.com(fec0::1)からそれぞれ,本装置へのping(IPv4とIPv6)を行っている時に,パラメータを替えてtcpdumpを実行した場合
図10-6 interface <Interface Name>の実行結果
# show tcpdump interface eth23 tcpdump: listening on eth23 20:23:10.113591 ip 84: hostA.example.com > myhost.example.com: icmp: echo request 20:23:10.113692 ip 84: myhost.example.com > hostA.example.com: icmp: echo reply 20:23:10.213696 ip6 56: v6hostA.example.com > v6myhost.example.com: icmp6: echo request 20:23:10.213765 ip6 56: v6myhost.example.com > v6hostA.example.com: icmp6: echo reply ^C 4 packets received by filter 0 packets dropped by kernel図10-7 no-resolv指定で名前の逆引きをしない実行結果
# show tcpdump interface eth23 no-resolv tcpdump: listening on eth23 20:23:10.113591 ip 84: 10.10.10.10 > 20.20.20.20: icmp: echo request 20:23:10.113692 ip 84: 20.20.20.20 > 10.10.10.10: icmp: echo reply 20:23:10.213696 ip6 56: fec0::1 > fec0::2: icmp6: echo request 20:23:10.213765 ip6 56: fec0::2 > fec0::1: icmp6: echo reply ^C 4 packets received by filter 0 packets dropped by kernel図10-8 no-domain指定でホストネーム以下(ドメイン名)を表示しない実行結果
# show tcpdump interface eth23 no-domain tcpdump: listening on eth23 20:23:10.113591 ip 84: hostA > myhost: icmp: echo request 20:23:10.113692 ip 84: myhost > hostA: icmp: echo reply 20:23:10.213696 ip6 56: v6hostA > v6myhost: icmp6: echo request 20:23:10.213765 ip6 56: v6myhost > v6hostA: icmp6: echo reply ^C 4 packets received by filter 0 packets dropped by kernel図10-9 <expression>としてip6を指定した実行結果
# show tcpdump interface eth23 ip6 tcpdump: listening on eth23 20:23:10.213696 ip6 56: v6hostA > v6myhost: icmp6: echo request 20:23:10.213765 ip6 56: v6myhost > v6hostA: icmp6: echo reply ^C 4 packets received by filter 0 packets dropped by kernel図10-10 count <count>を指定した実行結果
# show tcpdump interface eth23 count 3 tcpdump: listening on eth23 20:23:10.213696 ip6 56: v6hostA > v6myhost: icmp6: echo request 20:23:10.213765 ip6 56: v6myhost > v6hostA: icmp6: echo reply 20:23:10.213696 ip6 56: v6hostA > v6myhost: icmp6: echo request 4 packets received by filter 0 packets dropped by kernel図10-11 no-timeを指定して各行のタイムスタンプを表示しない実行結果
# show tcpdump interface eth23 no-time tcpdump: listening on eth23 ip 84: hostA.example.com > myhost.example.com: icmp: echo request ip 84: myhost.example.com > hostA.example.com: icmp: echo reply ip6 56: v6hostA.example.com > v6myhost.example.com: icmp6: echo request ip6 56: v6myhost.example.com > v6hostA.example.com: icmp6: echo reply ^C 4 packets received by filter 0 packets dropped by kernel図10-12 writefileでファイル名を指定して,ダンプ内容をファイルに保存した実行結果
# show tcpdump interface eth23 writefile mydump tcpdump: listening on eth23 ^C 4 packets received by filter 0 packets dropped by kernel図10-13 readfileでファイル名を指定して,ダンプ内容を読み込み表示した実行結果
# show tcpdump readfile mydump 20:23:10.113591 ip 84: hostA.example.com > myhost.example.com: icmp: echo request 20:23:10.113692 ip 84: myhost.example.com > hostA.example.com: icmp: echo reply 20:23:10.213696 ip6 56: v6hostA.example.com > v6myhost.example.com: icmp6: echo request 20:23:10.213765 ip6 56: v6myhost.example.com > v6hostA.example.com: icmp6: echo reply図10-14 readfileでダンプ内容を読み込み,さらに<expression>指定でicmpだけを表示した実行結果
# show tcpdump readfile mydump icmp 20:23:10.113591 ip 84: hostA.example.com > myhost.example.com: icmp: echo request 20:23:10.113692 ip 84: myhost.example.com > hostA.example.com: icmp: echo reply
[ユーザ通信への影響]
なし
[応答メッセージ]
表10-12 show tcpdumpコマンド応答メッセージ
メッセージ内容 意味 tcpdump: illegal Interface name -- <Interface Name>. 指定されたI/F名<Interface Name>が不正です。 tcpdump: syntax error 指定されたフィルタ条件<expression>の文法が不正です。 tcpdump: expression rejects all packets 指定されたフィルタ条件<expression>ではパケットをすべてフィルタしますので,条件を変更してください。 tcpdump: unknown ip proto 'XXX' 指定されたフィルタ条件<expression>のproto名XXXは指定できません。protocol番号で指定してください。 tcpdump: unknown port 'XXX' 指定されたフィルタ条件<expression>のport名XXXは指定できません。port番号で指定してください。 tcpdump: WARNING: no IPv4 address assigned IPv4アドレスが割り当てられていない場合に表示されます。 tcpdump: listening on <Interface Name> I/F<Interface Name>をモニタ中です。 tcpdump: invalid packet count <count> <count>値が無効です。 tcpdump: invalid snaplen <snaplen> <snaplen>値が無効です。 tcpdump: pcap_loop: truncated dump file 読み込んだファイルは,途中で切り捨てられています。 tcpdump: XXX host filtering not implemented XXXのhostフィルタは未サポートです。 tcpdump: 'XXX' modifier applied to host XXX修飾子がhostに付加されました。(無効です。) tcpdump: 'XXX' modifier applied to YYY host XXX修飾子がYYYホストに付加されました。(無効です。) tcpdump: unknown osi proto 'XXX' 不明なosiプロトコルXXXが指定されました。 tcpdump: 'XXX proto' is bogus XXXのプロトコル指定は無効です。 tcpdump: unknown network 'XXX' 未知のネットワーク名XXXが指定されました。アドレスで表記してください。 tcpdump: unknown host 'XXX' 未知のホスト名XXXが指定されました。アドレスで表記してください。 tcpdump: illegal qualifier of 'port' 不正なport条件が指定されました。 tcpdump: port 'XXX' is YYY ポート指定XXXはYYYプロトコルです。 tcpdump: unknown protocol: XXX 不明なプロトコルXXXが指定されました。 tcpdump: non-network bits set in "XXX" ホストビットが0でないXXXが指定されました。 tcpdump: mask length must be <= XXX マスク長はXXX以下でなければなりません。 tcpdump: Mask syntax for networks only マスクの指定はnet修飾子でだけ可能です。 tcpdump: unknown host 'XXX' for specified address family 指定のアドレスファミリでは,ホストXXXはアドレス解決できません。 tcpdump: XXX resolved to multiple address XXXは複数アドレスを解決しました。 tcpdump: invalid qualifier against IPv6 address IPv6アドレスに対して無効な修飾子が指定されました。 tcpdump: inbound/outbound not supported on linktype 0 inbound/outbound指定はサポートしていません。 tcpdump: no VLAN support for data link type 0 Tag-VLAN連携指定はサポートしていません。 tcpdump: bad dump file format 不正なファイル形式です。 tcpdump: archaic file format 古いファイルフォーマットです。 tcpdump: bogus savefile header 不正なファイルヘッダです。 tcpdump: invalid ip6 address XXX IPv6アドレスXXXは無効です。 tcpdump: illegal token: XXX 無効なXXXが指定されました。 tcpdump: illegal char: XXX 無効なXXXが指定されました。 tcpdump: WARNING: SIOCGIFADDR: Operation not permitted 無効なI/F名を指定しています。[Ctrl+C]で終了してください。 tcpdump: link layer applied in wrong context レイヤ2のモニタは未サポートです。 tcpdump: ethernet addresses supported only on ethernet, FDDI or token ring レイヤ2のモニタは未サポートです。 tcpdump: only IP multicast filters supported on ethernet/FDDI multicast指定の際は,ipかip6を前置してください。 tcpdump: fread: No such file or directory ファイルが読み込めません。(異常に短いファイルを指定した場合など) tcpdump: fwrite: No space left on device ファイルが書き込めません。(ディスク容量が不足している場合など) tcpdump: XXX: No such file or directory XXXが見つかりません。 tcpdump: XXX: Permission denied XXXのアクセスが許可されませんでした。 tcpdump: XXX: Is a directory XXXはディレクトリです。(ファイル名を指定してください。) tcpdump: parse error 指定されたフィルタ条件<expression>の文法が不正です。 tcpdump: No match. 指定したファイルはありません。
[注意事項]
- 本コマンドでは,本装置宛・本装置発の,主にルーティングプロトコルなどのソフトウェア処理パケットをモニタできます。
- 本装置宛・本装置発ではないパケット(IPv4/IPv6転送パケットや,マルチキャスト転送パケット,トンネル処理パケットなど)はモニタできません。なお,本装置宛・本装置発パケットでも,フィルタリングされたパケットや,ソフトウェア処理されないパケット(PPPなどの各種レイヤ2パケットなど)はモニタできません。
- 本コマンドでモニタできるのは,パケットのレイヤ3部分からとなります。Ethernetヘッダなどのレイヤ2部分はモニタできません。レイヤ2部分は,I/F名<Name>の種別によらず,データリンクタイプNull/Loopbackのヘッダに置換されます。
- Null/Loopbackヘッダ部分の情報には,アドレスファミリ(ip/ip6)が表示されます。
- Null/Loopbackヘッダ長は4バイトです。 <snaplen>設定を4バイトより小さくした場合,[|null]と表示されます。
- no-resolvオプションを指定しない場合,configのdns-resolver設定に問題があると,モニタ状況の表示に時間がかかります。
- トラフィック量の多い場合は,モニタしきれずパケットを取りこぼす場合があります(終了後にpackets dropped by kernelがカウント表示されます)。その場合は,<expression>指定を行い,必要なパケットだけをモニタするようにしてください。
Copyright (c)2005 ALAXALA Networks Corporation. All rights reserved.