前回解説したshowコマンドはルータの状態を確認するために使用するものです。接続性やパケットのやりとりの状態を確認するためには別のコマンドが必要です。設定したあとでこれらのテストコマンドを使用して設定が正しいかどうか確認したり,トラブルシューティングに役立てましょう。

pingコマンド

 接続や状態を確認するためのテストコマンドは複数あります。状況に合わせて使い分けましょう。OSI参照モデル別に以下のコマンドが存在します(図1)。

 図1 テストコマンド
テストコマンド

 show ip route,show interfacesは前回(IOS編<第5回>)に説明したものと同じものです。

 まず,ICMP(internet control message protocol)を使ったコマンドであるpingとtracerouteが重要です。WindowsやLinuxで使われているコマンドとほぼ同じ使い方ができます。

 pingはあて先との接続性を確認するために使用する,最も基本的なコマンドです。pingではネットワーク層以下のエラーを発見するのに役立ちます。

  • > ping [IPアドレス] ・・・ ユーザモード・特権モードどちらでも使用可能

 pingの後ろに続けてIPアドレスを入力した場合,通常のpingとなり,あて先IPアドレスへICMPエコー要求パケットを送信します(図2)。

 図2 ping
ping

 図2では実行結果が「!」ですが,ここに表示される文字により,接続状態がわかります。

  • ! ・・・ エコー応答受信
  • . ・・・ エコー応答待機中にタイムアウト
  • U ・・・ あて先到達不能
  • & ・・・ TTL超過エラー
  • M ・・・ フラグメント化不可エラー

 基本的には「!」か「.」になります。「!」ならば接続性が確認されており,「.」ならば接続ができていない状態です。

 pingを特権モードで実行し,パラメータとしてIPアドレスを入力しない場合,拡張pingを実行できます。拡張pingではpingを実行する際に詳細な設定が可能です(図3)。

  • # ping

 図3 拡張ping
拡張ping

tracerouteコマンド

 tracerouteはあて先IPアドレスまでのルーティングの状態を確認するために役立つコマンドです。Windowsでは「tracert」というコマンドで実装されています。名称が異なるので,間違えないように気をつける必要があります。tracerouteでは途中で経由するホップ(ルータ)を確認できます(図4)。

  • > traceroute [IPアドレス] ・・・ ユーザモード・特権モードどちらでも使用可能

 図4 traceroute
traceroute

 実行結果は一番左から,ホップ数,ルータのIPアドレス,応答時間(3回)の順です。これにより,経由ルータのIPアドレスや,そこまでの応答時間がわかり,ボトルネックなども判別できます。また,pingと同様に,特権モードであて先IPアドレスを入力しないで実行すると,拡張tracerouteになります(図5)。

  • # traceroute

 図5 拡張traceroute
拡張traceroute

telnetコマンド

 telnetはリモートログインするためのプロトコルです。CiscoIOSにはtelnetサーバソフトがインストールされており,仮想端末接続(VTY)ポートにtelnetクライアントソフトで接続してリモートログインできます。また,IOSにはtelnetクライアントソフトがあり,telnetコマンドでリモートログインできます(図6)。

  • # telnet {IPアドレス} ・・・ ユーザモード・特権モードどちらでも使用可能
    • {IPアドレス}
      • 省略可能。省略した場合,Host:と表示されるのでそこでIPアドレスを入力する

 図6 telnet
telnet

 telnetでCiscoルータへ接続した場合,exitコマンドでリモートログインを終了し,ローカル側へ戻ることができます。また「Ctrl + Shift + X + 6」キーでも切断できます(図7)。

 図7 telnetの終了
telnetの終了

 本来telnetはリモートログインのためのコマンドですが,telnetでリモートログインできるということは,ネットワーク層以上のプロトコルの動作確認にも使用できます。例えば,pingコマンドでWebサーバー・マシンを調べるときちんと応答が返ってくるのに,ブラウザでアクセスするとWebページが表示されないことがあります。そんなとき,Webサーバー・ソフトが待ち受けているポート番号を指定してtelnetで接続してみると,Webサーバー・ソフトが稼働しているかどうかがわかります。

CDP

 Cisco社製のルータやスイッチには,Cisco独自のプロトコルであるCDP(Cisco Discovery Protocol)が必ず実装されています。CDPはそのルータやスイッチに直接接続しているほかのCisco社製デバイスを見つけ,その状態を報告するためのプロトコルです。CDPを使うことにより,状態の確認やトラブルシューティングに役立ちます。

 CDPはデータリンク層のプロトコルで,Cisco社製デバイスは定期的にCDPフレームをレイヤ2マルチキャストします。CDPフレームには自身の基本的な設定情報が入っています。この動作により,隣接のCisco社製デバイスの情報を入手します。CDPによる情報を見たい場合は,show cdpコマンドを使用します。

  • # show cdp ・・・ CDPの設定確認 (図8
  • # show cdp neighbors {detail} ・・・ CDPによる隣接するCisco社製デバイスの簡易状態確認(図9
    • {detail}
      • 省略可能。detailを付けた場合は詳細な情報を見ることができる(図10

 図8 show cdp
show cdp

 図9 show cdp neighbors
show cdp neighbors

 図10 show cdp neighbors detail
show cdp neighbors detail

 隣接デバイスのIOSバージョンやIPアドレスはshow cdp neighbors detailでないと見ることができません。また,show cdp neighbors detailでは隣接デバイス全部が表示されてしまうため,一部だけを見たい場合は違うコマンド(show cdp entry {ホスト名})が必要です。

  • # show cdp entry {ホスト名} ・・・ CDPによる隣接するCisco社製デバイスの状態確認(図11
    • {ホスト名}
      • 省略可能。ホスト名のデバイスの情報だけを確認できる。省略した場合または「*(アスタリスク)」を入れた場合は全デバイスの情報が表示される

 図11 show cdp entry
show cdp entry

 つまり,show cdp entry(ホスト名省略)とshow cdp neighbors detailは同じ表示結果になります。

 また,CDPを使用しないことも可能です。デフォルトでは使用する設定になっています。使用しない場合は,no cdp enableコマンドを使って使用しない設定にします。

  • (config-if)# no cdp enable ・・・ そのインタフェースでCDPを使用しない
  • (config-if)# cdp enable ・・・ そのインタフェースでCDPを使用する(デフォルト)

 どのインタフェースでCDPが使用可能になっているか,またその設定を見たい場合は show cdp interfaceコマンドを使用します(図12)。

  • # show cdp interface {インタフェースタイプ} {ポート番号} ・・・ インタフェース別のCDP情報表示
    • {インタフェースタイプ} {ポート番号}
      • 省略可能。指定したインタフェースの情報のみを確認できる。省略した場合は全インタフェースの情報を表示する

 図12 show cdp interface
show cdp interface

debug

 showコマンドの情報表示だけでなく,現在やりとりされているデータを確認するためのコマンドとして,debugコマンドがあります。debugコマンドはルータが受け取った(または送る)パケットを表示する強力なコマンドです。

  • # debug [debug対象]

 debug対象になるものはさまざまです。debug対象として「all」を指定すると全パケットを確認できます(図13)。

 図13 debug all
debug all

 debugコマンド,特にdebug allコマンドは強力なコマンドで,全パケットを表示します。このためルータに負荷がかかり,ルータのスループット低下の原因にもなり得ますので,使用する際には注意が必要です。通常は,対象を細かく指定してdebugコマンドを実行するのが一般的です(図14)。

 図14 debug ip rip
debug ip rip

 debugコマンドは一定時間内だけ使用し,状態を確認したらデバッグをやめることが必要です。その場合は,no debugコマンドを使用します。

  • # no debug [debug対象]