z/OS UNIX traceroute コマンド: ネットワーク問題のデバッグ

このコマンドは、いろいろなネットワーク問題をデバッグする際に役に立ちます。このコマンドは、 さまざまな TTL またはホップ制限値を持つ UDP 要求を送信した後、 ルーターがローカル・ホストとリモート・ホスト間で、時間超過したメッセージを送信するのを待ちます。

注: otracert コマンドは、 z/OS UNIX シェルにおける traceroute コマンド の同義語です。otracert のコマンド構文は、traceroute コマンドのものと同じです。

形式:

構文図を読む構文図をスキップする
>>---traceroute------------------------------------------------->

>--+-?------------------------------------------+--------------><
   '-+-------------+--host_name--+------------+-'   
     '-| Options |-'             '-packetSize-'     

Options

   .-----------------------.   
   V                       |   
|----+-------------------+-+------------------------------------|
     +- -A--+-ipv4-+-----+     
     |      '-ipv6-'     |     
     +- -a --tcpname-----+     
     +- -d---------------+     
     +- -i --interface---+     
     +- -l---------------+     
     |      .-30--.      |     
     +- -m--+-----+------+     
     |      '-hop-'      |     
     +- -n---------------+     
     |      .-33434-.    |     
     +- -p--+-------+----+     
     |      '-num---'    |     
     |      .-3--------. |     
     +- -q--+----------+-+     
     |      '-attempts-' |     
     +- -r---------------+     
     +- -s --srcAddr-----+     
     |      .-0---.      |     
     +- -t--+-----+------+     
     |      '-tos-'      |     
     +- -v---------------+     
     |      .-5-------.  |     
     '- -w--+---------+--'     
            '-seconds-'        

パラメーター:

-?
コマンド・ヘルプを指定します。
host_name
宛先ホストを示します。これは、IP アドレス、またはリゾルバーにより変換可能な ホスト名である必要があります。 IPv4 にマップされた IPv6 アドレスはサポートされません。

host_name 値が IP アドレスではなくホスト名として指定された場合は、このコマンドはリゾルバーを呼び出して host_name 値の IP アドレスを取得します。このコマンドは、リゾルバーが戻した最初の IP アドレスを使用します。-A オプションを使用して、コマンドがリゾルバーから IPv4 IP アドレス のみを要求するのか、または IPv6 IP アドレスのみを要求するのかを判別します。 -A オプションの指定がない場合は、-i および -s オプションも使用して、 コマンドがリゾルバーから IPv4 IP アドレスのみを要求するのか、または IPv6 IP アドレスのみを 要求するのかを判別することができます。-A、-i、または -s のいずれのオプションも指定されていない場合は、このコマンドはリゾルバーから特定のタイプの IP アドレスを要求していないため、IPv4 と IPv6 の両方の IP アドレスがリゾルバーによって戻されます。

IPv6 リンク・ローカル・アドレスを使用する場合は、IP アドレスまたはホスト名に範囲情報を指定できます。範囲情報を指定するには、host_name 値の後にパーセント記号 (%) を追加し、その後に範囲情報を指定します (通常はインターフェース名)。以降の例では、範囲情報を指定したコマンドを使用しています。範囲情報の使用に関する詳細については、「z/OS Communications Server: IPv6 ネットワークとアプリケーション開発ガイド」の『スコープ情報のサポート』を参照してください。

ガイドライン:
  • 複数の TCP/IP スタックを同一の MVS™ イメージで実行していて、範囲情報として使用されるインターフェース名が複数の TCP/IP スタックに定義されている場合は、コマンドのパケットの送信に正しいスタックを使用するように -a パラメーターを指定する必要があります。
  • host_name オプションへの範囲情報の指定は、INTF オプションを使用したローカル・インターフェースの指定と同じ効果がありますが、-i オプションはより広範囲の状況に対応しています (範囲情報は IPv6 リンク・ローカル・アドレスのみに適用されます)。範囲情報を指定する両方の方法を同じコマンドに使用すると、host_name オプションの範囲情報に指定された値と、-i インターフェース・オプションに指定された値は同じローカル・インターフェースを表します。そうでない場合は、コマンドが失敗します。
packetSize
プローブ・パケットのサイズを変更するために使用するオプションのパラメーター。プローブ・サイズは、プローブの経路に影響することがあります。指定された値は、 最大 65 535 バイトまで、デフォルトのプローブ・パケットのサイズに追加されます。

IPv4 宛先の場合、パケット・サイズ値は 1 から 65 495 バイトである必要があります。65 495 という値は、最大 IP パケット・サイズ (65 535) から、デフォルトの プローブ・パケット・サイズ (40) を引いたものです。デフォルトのプローブ・パケット・サイズ には、IP ヘッダー、UDP ヘッダー、およびデフォルトの UDP データが含まれています。

IPv6 宛先の場合、パケット・サイズ値は 1 から 65 515 バイトである必要があります。65 515 という値は、最大 UDP データ・サイズ (65 535) から、デフォルトの プローブ・パケット・サイズ (20) を引いたものです。デフォルトのプローブ・パケット・サイズ には、UDP ヘッダーとデフォルトの UDP データが含まれています。IPv6 IP ヘッダーは、後でパケット が送信される前に追加され、そのサイズは packetSize 値には含まれません。

追加の IP ヘッダーを後でアウトバウンド・プローブ・パケットに動的に追加した場合は、パケットの実際のサイズは増加します。

-A
ホスト名を IP アドレスに変換する際に、リゾルバーが戻す IP アドレス・タイプを指定します。 このオプションの値で、大文字小文字の区別はありません。
ipv6
ホスト名を IP アドレスに変換する際に、リゾルバーから IPv6 IP アドレスのみが戻されるように指定します。
ipv4
ホスト名を IP アドレスに変換する際に、リゾルバーから IPv4 IP アドレスのみが戻されるように指定します。

-A オプションが指定されていない場合、host_name 値を IP アドレスに変換する方法については、host_name パラメーターの説明を参照してください。

-a tcpname
プローブ・パケットを送信するのに使用する TCP/IP スタックの名前を指定します。 tcpname は、8 バイトのプロシージャー名であり、TCP/IP を開始するために使用します。 TCP/IP 開始の S member.identifier メソッドを使用する場合 は、identifier に指定する値は tcpname 値として使用する必要があります。

-a オプションが指定されず、かつ、CINET で z/OS UNIX が構成されている場合は、CINET プリルーター は要求の経路指定先に TCP/IP スタックを選択します。

-d
追加のメッセージとデバッグ情報を表示するように指定します。
-i interface
パケットが送信されるローカル・インターフェースを指定します。インターフェースは、LINK または INTERFACE プロファイル・ステートメントからの最大 16 バイトの名前、またはローカル・インターフェースの IP アドレスのいずれかです。 IPv4 にマップされた IPv6 アドレスはサポートされません。ローカルの VIPA または LOOPBACK インターフェースは無効です。

宛先ホストがホスト名として指定されており、-A オプションが指定されていない場合は、i 値のアドレス・タイプを使用して、ホスト名を IPv4 または IPv6 IP アドレスに変換するかどうかを決めます。

このパラメーターが指定されている場合、コマンドは、デフォルト TCP/IP スタックまた は -A パラメーターで指定されたスタックのいずれかに対して類似性を設定します。指定されたインターフェースは、このコマンドが類似性を設定したスタックに対して 定義する必要があります。また、経路は、必ず指定されたインターフェースを使用する宛先に対して 存在するようにしておく必要があります。これは、デフォルトの経路も含めて、どのような経路の場合 にも当てはまることです。このパラメーターは、アウトバウンド・パケットの送信元 IP アドレスとして 使用される -s パラメーターとは関係ありません。
注: このパラメーターは、 特定の経路を使用した応答時間とパスの可用性を分析する際の診断援助機能として、IPCONFIG/IPCONFIG6 MULTIPATH プロファイル・ステートメントでのマルチパスの設定に関係なく、 パケットのアウトバウンド・パス選択アルゴリズムをバイパスすることによって、 指定されたインターフェース経由でパケットの経路を定めます。
制約事項:
  • interface 値に範囲情報を指定することはできません。
  • パラメーターの OSM インターフェースを指定するには、ユーザー ID にはこのインターフェースを使用するための RACF® 権限が必要です。 OSM インターフェース権限について詳しくは、「z/OS Communications Server: IP 構成ガイド」の『OSM アクセス制御』を参照してください。
-l
それぞれの受信したパケットから、存続時間またはホップ限界の値を 表示します。この値を使用すると、非対称なルーティングを検出するのに役立ちます。
-m hop
最大存続時間またはホップ限界を指定します。有効な値の範囲は、1 から 255 です。デフォルトは 30 です。
-n
ホップ IP アドレスを、ホスト名に変換せずに、印刷するように指定します。 このアドレスは数値であり、それぞれのパス上のゲートウェイごとに、ネーム・サーバーのアドレスから名前へのルックアップを保管します。
-p num
開始の宛先ポート番号を指定します。このパラメーターは、使用される送信元ポート番号の値には影響を与えません。有効な値の範囲は、2048 から 60 000 です。デフォルトは、33 434 です。

例えば、デフォルトの場合、最初のアウトバウンド・プローブ・パケットの宛先ポート番号はデフォルト値の 33 434 に 1 を加算した 33 435 です。宛先ポート番号は、以降のアウトバウンド・プローブ・パケットごとに 1 増分されます。

-q attempts
プローブが同じ存続時間/ホップ限界の値で送信される回数を指定します。この数は、存続時間/ホップ限界の増分当たりの、プローブ送信の 合計 (成功または失敗) を反映します。範囲は、1 から 20 です。デフォルトは 3 です。
-r
接続されたネットワークのホストに直接、情報を送信します。隣接ネットワークにはホストは 存在しないことを、選択された経路が示している場合はエラーが戻されます。
-s scrAddr
送信元 IP アドレスを指定します。このアドレスはホスト名ではなく、IP 数値 として指定する必要があります。 IPv4 にマップされた IPv6 アドレスはサポートされません。複数の IP アドレスを持つホストでは、 別のスタックの 1 つのインターフェースの IP アドレスに送信元アドレスを設定することができます。これは、VIPA アドレスでも構いません。

宛先ホストがホスト名として指定されていて、-A オプションが指定されていない場合は、-s 値のアドレス・タイプを使用して、ホスト名を IPv4 または IPv6 の IP アドレスに変換すべきかどうかを決めます。

制約事項: 送信元 IP アドレスに範囲情報を指定することはできません。

-t tos
プローブ・パケットのサービスのタイプの値 (tos) を指定します。有効な値の範囲は、0 から 255 です。デフォルトは 0 です。このパラメーターは IPv4 の宛先にのみ適用され、IPv6 の宛先では無視されます。
-v
追加情報を表示するように指定します。これによって表示される情報は、ICMP 応答の バイト数と応答が送信された IP アドレスです。
-w seconds
応答の待ち時間を指定します。有効な値の範囲は、1 から 255 です。デフォルトは、5 秒です。

結果:

traceroute コマンドは、UDP プローブ・パケットを送信した TTL 値ごとに 1 行の出力を表示します。 出力の形式は次のとおりです。
HOP NAME (IP_ADDRESS) NUM ms FLAG
表示される値は、以下のとおりです。
説明
HOP アウトバウンド・プローブ・パケットで使用されるホップ限界値。
NAME 受信した Internet Control Message Protocol (ICMP) の送信元 IP アドレスがホスト・サイト・テーブル で検出された場合は、NAME は送信元 IP アドレスに関連した名前を表示します。表示されるホスト名には、ICMP 応答が受信されたインターフェースを表す範囲情報が含まれていることがあります。
IP_ADDRESS 受信した ICMP 応答からの送信元 IP アドレス。
! 下記の FLAG 値を伴わない感嘆符は、受信したホップ限界が 1 以下であることを 示しています。それ以外の場合は、感嘆符には以下のいずれかの値が後に続きます。
NUM プローブ・パケットが送信されてから、そのプローブ・パケットへの ICMP 応答が受信されるまでの 経過時間。
FLAG これは、オプションのフィールドです。以下のいずれかのイベントが生じた場合にのみ表示されます。特に断り書きのない 限りは、これらのフラグは IPv4 および IPv6 宛先の両方に適用されます。
フラグ
意味
*
要求がタイムアウトになる前に、データグラムを受信しませんでした。このホップが ICMP で応答していない可能性があるか、 コマンドを呼び出したユーザーに関連したセキュリティー・プロダクトのユーザー ID が原因で、NETACCESS 構成により、 コマンドが応答パケットを受信できないようにされている可能性があります。
A
管理上禁止されています (IPv6 のみ)。
B
宛先が送信元アドレスの有効範囲を超えています (IPv6 のみ)。
C
有効な優先順位カットオフです (IPv4 のみ)。
D
不明な宛先ホストです (IPv4 のみ)。
F
パケットをフラグメント化する必要があります。
H
宛先ホストに到達できません。
N
宛先ネットワークに到達できません (IPv4 のみ)。
P
宛先プロトコルに到達できません (IPv4 のみ)。
Q
宛先ホストに到達可能ですが、キューが満杯のため、パケットを受け入れることができません (IPv4 のみ)。
R
宛先への経路がありません (IPv6 のみ)。
S
メッセージに与えられた経路は誤りでした (IPv4 のみ)。
T
TOS に対する到達できないネットワークまたは TOS に対する到達できないホストです (IPv4 のみ)。
U
到達できないアドレスです (IPv6 のみ)。
V
ホストの優先順位違反です (IPv4 のみ)。
X
フィルターで管理上禁止される通信です (IPv4 のみ)。Traceroute に戻されるこのコードに対する最も一般的な理由は、ファイアウォールの構成です。
num
不明な ICMP 到達不能コードです (IPv4 のみ)。
上記のフラグに関連した ICMP タイプのリストについては、ICMP/ICMPv6 タイプおよびコードを参照してください。

:

以下の例で、アスタリスク (*) はパケットが脱落していることを表しています。

  • この例で 2 番目のホップは、TTL 超過メッセージを送信しません。
    traceroute cyst.watson.ibm.com
    CS V2R2: Traceroute to CYST.WATSON.IBM.COM (9.2.91.34)
    Enter ESC character plus C or c to interrupt
    1 9.67.22.2 (9.67.22.2) 67 ms 53 ms 60 ms
    2 * * *
    3 9.67.1.5 (9.67.1.5) 119 ms 83 ms 65 ms
    4 9.3.8.14 (9.3.8.14) 77 ms 80 ms 87 ms
    5 9.158.1.1 (9.158.1.1) 94 ms 89 ms 85 ms
    6 9.31.3.1 (9.31.3.1) 189 ms 197 ms *
    7 * * 9.31.16.2 (9.31.16.2) 954 ms
    8 129.34.31.33 (129.34.31.33) 164 ms 181 ms 216 ms
    9 9.2.95.1 (9.2.95.1) 198 ms 182 ms 178 ms
    10 9.2.91.34 (9.2.91.34) 178 ms 187 ms *
  • パケットが脱落することは時々あります (hop 6)。
    traceroute 129.35.130.09
    CS V2R2: Traceroute to 129.35.130.09 (129.35.130.9)
    Enter ESC character plus C or c to interrupt
    1 9.67.22.2 (9.67.22.2) 61 ms 62 ms 56 ms
    2 * * *
    9.67.1.5 (9.67.1.5) 74 ms 73 ms 80 ms
    4 9.3.8.1 (9.3.8.1) 182 ms 200 ms 184 ms
    5 129.35.208.2 (129.35.208.2) 170 ms 167 ms 163 ms
    6 * 129.35.208.2 (129.35.208.2) 192 ms !H 157 ms !H
  • ネットワークは検出されましたが、ホストは見つかりません。パケットは、そのネットワークへ 経路を定めることはできません。
    traceroute 129.45.45.45
    CS V2R2: Traceroute to 129.45.45.45 (129.45.45.45)
    Enter ESC character plus C or c to interrupt
    1 9.67.22.2 (9.67.22.2) 320 ms 56 ms 71 ms
    2 * * *
    3 9.67.1.5 (9.67.1.5) 67 ms 64 ms 65 ms
    4 9.67.1.5 (9.67.1.5) 171 ms !N 68 ms !N 61 ms !N
  • z/OS UNIX traceroute は、逆のネーム・レゾリューションのためのサイト・テーブルと一緒にドメイン・ネーム・サーバーを使用します。ホスト名が見つかると、その IP アドレスとともにホスト名が印刷されます。
    traceroute EVANS
    CS V2R2: Traceroute to EVANS (129.45.45.45)
    Enter ESC character plus C or c to interrupt
    1 BART (9.67.60.85) 20 ms 56 ms 71 ms
    2 BUZZ (9.67.60.84) 55 ms 56 ms 54 ms
    3 EVANS (9.67.30.25) 67 ms 64 ms 65 ms
  • IPv6 宛先に対する traceroute が成功しました。
    traceroute linuxipv62.tcp
    CS V2R2: Traceroute to linuxipv62.tcp.raleigh.ibm.com
    at IPv6 address: 2001:0DB8::1:9:67:114:44
    Enter ESC character plus C or c to interrupt
    1 2001:0DB8::206:2aff:fe66:c800
      (2001:0DB8::206:2aff:fe66:c800)  2 ms  3 ms *
    2 2001:0DB8::1:9:67:114:44
      (2001:0DB8::1:9:67:114:44)  2 ms  2 ms  2 ms
  • IPv6 リンク・ローカル宛先に対する traceroute が成功しました。
    traceroute fe80::12:1:2%mpc6221               
    CS V2R2: Traceroute to fe80::12:1:2             
    at IPv6 address: fe80::12:1:2                   
    Enter ESC character plus C or c to interrupt    
    1 fe80::12:1:2%MPC6221                          
      (fe80::12:1:2)  1 ms  2 ms  1 ms  
  • 認識されない IPv6 IP アドレスを使用すると、宛先への経路がないことを示した フラグが生じます。
    traceroute 2001:0DB8::1:9:67:114:47
    CS V2R2: Traceroute to 2001:0DB8::1:9:67:114:47 
    at IPv6 address: 2001:0DB8::1:9:67:114:47 
    Enter ESC character plus C or c to interrupt 
    1 2001:0DB8::206:2aff:fe66:c800
      (2001:0DB8::206:2aff:fe66:c800)  3 ms !R *  2 ms !R

使用法:

  • traceroute コマンドが使用するポート番号の範囲は、通常、有効ではありませんが、ターゲット・ホストが標準以外の UDP ポートを使用している場合は、変更することができます。
  • traceroute コマンド処理に割り込みをかけるには、ESC 文字と文字 C または c を入力します。例えば、UNIX シェルの ESC 文字が $ であれば、$c または $C を入力します。
制約事項:
  • IPv4 トンネルが IPv6 宛先ホストへのパスに存在する場合は、トンネルの IPv4 ルーター はホップ・カウントではカウントされません。トンネルの詳細については、「z/OS Communications Server: IPv6 ネットワークとアプリケーション開発ガイド」を参照してください。
  • リモート・ホストに対する Traceroute コマンドは、2 つのシステム間のどこかに IPSec トンネルがあると、他のコマンドを使用してそのホストに到達できる場合であっても TTL またはホップ限界超過メッセージを検出できない可能性があります。