スポンサーリンク

PING6(8) FreeBSD システム管理者マニュアル PING6(8)

名称

ping6 − ネットワークホストに対して ICMPv6 ECHO_REQUEST パケットを送信する

書式

ping6 [−dfHmnNqtvwW] [−a addrtype] [−b bufsiz] [−c count] [−g gateway] [−h hoplimit] [−I interface] [−i wait] [−l preload] [−p pattern] [−P policy] [−S sourceaddr] [−s packetsize] [hops ...] host

解説

ping6 ユーティリティは、 ICMPv6 プロトコルで必須の ICMP6_ECHO_REQUEST データグラムを使用し、ホストまたはゲートウェイから ICMP6_ECHO_REPLY デー タグラムを返させます。 ICMP6_ECHO_REQUEST データグラム (‘‘ping’’) は、IPv6 ヘッダと ICMPv6 を持ちます。 ICMPv6 の書式は RFC2463 に記述され ています。オプションは次の通りです:

       −a addrtype

ECHO_REQUEST ではなく ICMPv6 ノード情報 (アドレス) 問い合わせパ ケットを生成します。 addrtype は以下の文字より構成される文字列で なければなりません。
a

全ての応答者のユニキャストアドレスを要求します。もし省略 されると、応答者のアドレスを持つインタフェースに属するア ドレスのみ要求します。
c

応答者の IPv4 互換アドレスと IPv4 にマップされたアドレス を要求します。
g

応答者のグローバルスコープアドレスを要求します。
s

応答者のサイトローカルアドレスを要求します。
l

応答者のリンクローカルアドレスを要求します。
A

応答者のエニーキャストアドレスを要求します。この文字がな い場合、応答者はユニキャストアドレスのみ返します。この文 字がある場合、応答者はエニーキャストのみ返します。仕様で は、応答者のエニーキャストアドレスをどのように取得するか は述べられていないことに注意してください。これは実験的な オプションです。

−b bufsiz
ソケットのバッファサイズを設定します。

−c count
ECHO_RESPONSE パケットを count 回送出 (そして受信) してから終了し ます。

−d
使用されているソケットに SO_DEBUG オプションを設定します。

−f
ECHO_REQUEST ping を垂れ流します。パケットが返って来るとすぐ、も しくは 100 分の 1 秒に 1 回のうちのどちらか多い方の頻度でパケット を出力します。 ECHO_REQUEST パケットを送るたびに ‘‘.’’ が表示さ れ、 ECHO_REPLY パケットを受信するたびにバックスペースが表示され ます。これによりどれだけのパケットが欠落したのかをすばやく表示す ることができます。スーパユーザのみ使用可能です。 このオプションは ネットワークに非常に負荷をかけるので、注意して使用する必要があり ます。

−g gateway
終点に至る次ホップとして、 gateway を指定します。ゲートウェイは、 送信ノードの近隣であることが必要です。

−H
IPv6 アドレスの逆検索を試行するよう、指定します。本オプションを指 定しない場合、 ping6 ユーティリティは逆検索を試行しません。

−h hoplimit
IPv6 の中継限界数を設定します。

−I interface
与えられたインタフェースアドレスからパケットを送ります。このフラ グは、ping の宛先アドレスがマルチキャストアドレスの場合か、リンク ローカル / サイトローカルなユニキャストアドレスの場合に適用できま す。

−i wait
wait
で指定した秒数だけパケットの送出間隔を空けます。デフォルトで は送出間隔は 1 秒です。このオプションは −f オプションとは同時に指 定できません。

−l preload
ping6
は指定した preload 値だけ ECHO_REQUEST パケットを出来るだけ 速く送信し、通常の動作に戻ります。スーパユーザのみがこのオプショ ンを使用できます。

−m
デフォルトでは、最小 IPv6 MTU に納まるようにパケットを断片化する よう、 ping6 はカーネルに依頼します。 −m オプションは、次の 2 段 階で、この動作を抑制します。本オプションが 1 度指定された場合、ユ ニキャストパケットに対してこの動作は抑制されます。本オプションが 2 度指定された場合、ユニキャストパケットとマルチキャストパケット の両方に対してこの動作は抑制されます。

−n
数値の出力のみになります。応答中に含まれるホストアドレスに対し、 シンボル名の解決を試みません。

−N
ノード情報マルチキャストグループ (node information multicast group) (ff02::2:xxxx:xxxx) をプローブします。 host はターゲットの 文字列のホスト名であることが必要です (数値の IPv6 アドレスであっ てはなりません)。ノード情報マルチキャストグループは、指定した host に基づいて計算し、最終的な終点として使用されます。ノード情報 マルチキャストグループはリンクローカルなマルチキャストグループな ので、出力リンクを −I で指定する必要があります。

−p pattern
送出するパケットを埋める ‘‘pad’’ バイトを指定します。 ‘‘pad’’ バ イトは 16 バイトを上限とします。これはネットワーク上でデータ依存 の問題を診断するときに有効です。たとえば ‘‘−p ff’’ は全て 1 の送 出パケットを生成します。

−P policy
policy
でプローブに使う IPsec ポリシを指定します。

−q
出力を抑制します。開始時と終了時の要約行しか表示しません。

−S sourceaddr
要求パケットの始点アドレスを指定します。始点アドレスは、送信元 ノードのユニキャストアドレスのうちのひとつであること、数値である ことが必要です。

−s packetsize
送出するデータのバイト数を指定します。デフォルトでは 56 バイトで す。これは、 ICMP ヘッダデータの 8 バイトをつけた 64 バイトの ICMP データに変換されます。 −b オプションも共に指定して、ソケット のバッファサイズを拡張する必要があるかもしれません。

−t
エコー要求ではなく ICMPv6 ノード情報対応要求種別問い合わせパケッ トを生成します。 −t を指定した場合、 −s は無効となります。

−v
冗長出力を有効にします。 ECHO_RESPONSE 以外の受信 ICMP パケットも 表示されます。

−w
ECHO_REQUEST ではなく ICMPv6 ノード情報 (FQDN) 問い合わせパケット を生成します。 −w オプションを指定した場合 −s オプションは無効と なります。

−W
−w
オプションと同じですが、03 ドラフトベースの古いパケット書式を 使用します。このオプションは後方互換性のために残されています。 −w オプションを指定した場合 −s オプションは無効となります。

hops
タイプ 0 ルーティングヘッダ中に置かれる、中間ノード用の IPv6 アド レスです。

host
最終的な終点ノードの IPv6 アドレスです。

問題の切り分けのために ping6 を用いるには、ローカルインタフェースが up か つ running であることを確認するため、まずローカルホスト上で実行します。そ の後、より遠くのホストやゲートウェイに ‘‘ping’’ をしていきます。経路周回 時間 (round-trip time) と消失パケットの統計が計算されます。重複したパケッ トが受信された場合、そのパケットは消失パケットの計算には含まれませんが、 経路周回時間の統計の計算には使われます。指定されたパケットの数が送信され (受信され) たとき、もしくはプログラムが SIGINT で終了した場合、簡単な要約 が表示されます。要約に書き出されるのは、送出したパケット数、受信したパ ケット数、そして経路周回時間の最小/平均/最大/標準偏差です。

ping6 が SIGINFO シグナル (stty(1)status 引数を参照して下さい) を受け 取った場合、現時点での送出したパケット数、受信したパケット数、そして経路 周回時間の最小/平均/最大/標準偏差が標準終了時のメッセージと同じ書式で標準 出力に書かれます。

このプログラムは主にネットワークのテスト、計測、管理に用いられることを想 定しています。 ping6 はそれ自体ネットワークに負荷をかけるので、トラブルの ないときや自動スクリプトで用いることは勧められません。

重複パケットと障害パケット

ping6 ユーティリティは重複パケットと障害パケットを報告します。重複パケッ トはユニキャストアドレスに対して ping をかけている場合は起こるはずのない ものですが、リンク層での不適切な再送信によって引き起こされるようです。重 複は様々な状況で起こる可能性があります。低いレベルの重複の存在は必ずしも 警告にならないかもしれませんが、 (まず) よい兆候ではありません。ブロード キャストもしくはマルチキャストアドレスに ping する時には、重複パケットが 出ることが予想されます。なぜなら、そのパケットは、実際には重複したパケッ トなのではなく、異なったホストからの同じ要求に対する応答であるからです。

障害パケットは、警告を引き起こす重大な原因であることは間違いありません。 多くの場合、 ping パケットの経路のどこか (ネットワーク内かホスト内) の ハードウェアの故障が考えられます。

異なったデータパターンの試行

(インター) ネットワーク層は、データ部分に含まれるデータによってパケットの 扱いを変えません。不幸にも、パケットがネットワークに侵入し、長い間検知さ れないままとなるというデータに依存した問題が知られています。多くの場合、 問題を引き起こす特殊なパターンは、たとえば全部 1 や全部 0 のようなもの、 あるいは右端以外が 0 であるようなものといった、十分な ‘‘遷移’’ を持たない ものです。コマンドラインで (たとえば) 全部 0 のデータパターンを指定するだ けでは不十分かもしれません。なぜなら問題のパターンはデータリンク層にあ り、コマンドラインで指定したものとコントローラが送信するものとの関係は複 雑である可能性があるからです。

このことは、つまり、データに依存した問題があるとき、それを見付けるために はテストをたくさんしなければならないということです。運がよければ、ある ネットワークを通して送れない、あるいは同じような長さのファイルよりも送る のにずっと長時間かかるようなファイルを見付けることができるかもしれませ ん。この場合、そのファイルを調べ、繰り返し現われるパターンを ping6−p オプションを使ってテストできます。

診断

ping6 ユーティリティは、成功時 (ホストが生きている場合) には 0 を、引数が 正しくない場合やホストが応答しない場合には非 0 を返します。

使用例

通常、 ping6 は、 ping(8) が動作するように動作します。以下は、ICMPv6 エ コー要求を dst.foo.com へ送ります。

      ping6 -n dst.foo.com

以下は、 wi0 インタフェースに接続されたネットワークリンク上の全ノードのホ スト名を検出します。アドレス ff02::1 は、リンクローカル全ノードマルチキャ ストアドレスと名付けられており、パケットはネットワークリンク上の全ノード に到達します。

      ping6 -w ff02::1%wi0

以下は、終点ノード dst.foo.com に割り当てられたアドレスを検出します。

      ping6 -a agl dst.foo.com

関連項目

netstat(1), icmp6(4), inet6(4), ip6(4), ifconfig(8), ping(8), routed(8), traceroute(8), traceroute6(8)

       A. Conta and                      S. Deering,                                    Internet Control Message Protocol (ICMPv6)for the Internet Protocol Version 6 (IPv6) Specification,                                                                 RFC2463,     December 1998.
       Matt Crawford,                        IPv6 Node Information Queries,     draft-ietf-ipngwg-icmp-name-lookups-09.txt,                                                   May 2002,                                                               work inprogress material.

歴史

ping(8) ユーティリティは 4.3BSD で登場しました。 IPv6 をサポートした ping6 ユーティリティは WIDE Hydrangea IPv6 プロトコルスタックキットではじ めて登場しました。

KAME Project (http://www.kame.net/) スタックを基とする IPv6 および IPsec のサポートは、 FreeBSD 4.0 で初めて組み込まれました。

バグ

ping6 ユーティリティは意図的に ping(8) と分離されています。

我々が何故 ping6ping(8) の実装を分けたのかという議論が沢山ありまし た。 IPv4 と IPv6 両用の ping コマンドに統一した方が便利だと言う人もいま した。この要求に対する答えは次の通りです。

開発者の視点から: IPv4 と IPv6 とで下位の raw ソケット API が全く異なりま すので、 2 種類のコードベースを持つことになります。ふたつのコマンドをあわ せて単一コマンドにしても、実際、開発者の立場からは利益はないでしょう。

操作者の視点から: リモートログインツールのような通常のネットワークアプリ ケーションとは異なり、通常、ネットワーク管理ツールを使用するときはアドレ スファミリを意識します。単にホストへの到達可能性を知りたいのではなく、 IPv6 等の特定のプロトコルでのホスト到達性を知りたいのです。よって、IPv4 と IPv6 用に統合された ping(8) コマンドがあったとしても、常に −6 または −4 のオプション (またはこれに類するもの) を入力して、特定のアドレスファミ リを指定することになるでしょう。これは、本質的に、ふたつの異なったコマン ドを持つのと同じことを意味します。

FreeBSD 10.0 May 17, 1998 FreeBSD 10.0

スポンサーリンク