便利なコマンド - CiscoIOS

CiscoルータやCatalystを設定する際に知っておくと便利なコマンドについて説明したページです。

DNS問い合わせの停止

 CiscoルータやCatalystではEXECモードでコマンドを間違うとDNSで名前解決しようとします。

 DNSサーバーのIPアドレスを設定していなくても255.255.255.255というIPアドレスで問い合わせを行うため、タイムアウトするまで待ちになり、プロンプトが返ってきません。

【間違ったコマンドを投入した場合】
Cisco# xxx
Translaing "xxx"...domain server (255.255.255.255) 
タイムアウト待ち
% Unknown command or computer name, or unable to find computer address
Cisco#

 DNSサーバーへの問い合わせを無効にするためには以下のように設定します。

【DNSサーバーへの問い合わせを無効にする設定】
Cisco# configure terminal
Cisco(config)# no ip domain-lookup

 この設定によりDNSサーバーへ問い合わせをしなくなるため、コマンドを間違った場合でもすぐにプロンプトが返ってきます。

 DNSを利用しない場合は初期設定で投入しておいてもよいと思います。

ログ関連

 telnetやsshで接続した場合、デフォルトでは状態変化等があった時でもログが自動的に表示されません。

 表示させるためには以下の設定を行います。

【ターミナルにログを出力させるコマンド】
Cisco# terminal monitor

 上記設定により接続したセッションにおいてログが表示されるようになりますが、一旦セッションを閉じて再接続した場合は再度コマンドを投入する必要があります。

 又、コンソール接続して設定を行うと、インターフェースのup/down等、コマンドを打っている最中でもログが表示されて分かり辛くなります。

【コマンド途中に出力されるログ】
Cisco(config)# interface giga
00:00:00: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to up

 上記ではinterface gigaまで入力した時にログが表示されています。引き続きコマンドを入力しても受け付けられますが、入力ミスし易くなると思います。

 ログが表示された後、入力した所まで再表示させるためには以下のように設定します。

【ログの同期化】
Cisco(config)# line console 0
Cisco(config-line)# logging synchronous
Cisco(config-line)# exit

 又、telnetやsshで接続した時も同様に再表示するためにはline vtyで該当の回線を指定し、logging synchronousを設定します。

 この設定により、以下のようにコマンドの入力途中でログが表示されても入力した所まで再表示されるため、続きが入力し易くなります。

【ログ表示後に入力した所まで再表示】
Cisco(config)# interface giga
00:00:00: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to up
Cisco(config)# interface giga ←再表示されるため続けて入力可能

Moreの抑止

 showコマンドを使って結果の表示が長くなった場合はMoreと表示されて表示が一時的に止まりますが、最後まで素早く表示したい時もあります。

 又、Moreでページ送りすると表示結果をコピーする際はMoreまでコピーされてしまいます。このため、後で見辛いのもありますし、保存した設定を元にコンフィグを作る時もMoreを消す手間がかかります。

 Moreを停止するためには以下の設定を行います。

【Moreを停止させる設定】
Cisco# terminal length 0

 この設定により、表示結果が長くなっても途中Moreで停止せずに最後まで表示され、コピーしてもMoreは入りません。

 尚、0の所を20等に指定するとMoreと表示されるまでの行数を指定出来ます。例えば30と設定すると30行表示された後、Moreで停止します。

showコマンドのフィルタリング

 showコマンドを利用した際、結果が非常に長くなる場合があります。例えばシャーシ型のスイッチでラインカードを複数搭載している場合はrunning-configが非常に長くなります。

 このような場合、出力を|(パイプ)を利用してフィルタリング出来ます。

【出力をbeginでフィルタリングする方法】
Cisco# show running-config | begin gigabitethernet0/1
interface gigabitethernet0/1
switchport mode access
switchport access vlan 10
・・・

 上記では赤字部分でbeginを指定しているため、その次に記述しているgigabitethernet0/1を含む行から表示が開始されます。

【出力をincludeでフィルタリングする方法】
Cisco# show interface | include down
GigabitEthernet1/0 is up, line protocol is down (notconnect)

 上記では赤字部分でincludeを指定しているため、downを含む行だけ表示されます。

 尚、begin、include以外にはexcludeも使え、指定したキーワードを除く行を表示出来ます。

インターフェースの説明

 インターフェースに説明を付ける事が出来ます。

【インターフェースに説明を付けるコマンド】
Cisco(config)# interface gigabitethernet0/1
Cisco(config-if)# description dns-server
Cisco(config-if)# exit

 上記ではdescriptionの後はdns-serverになっていますが、自由に説明を設定出来ます。

 show interfacesコマンド等で確認するとdescriptionの内容も出力されるようになります。

 接続先を設定しておくとどのスイッチ、又はサーバーに接続されているか確認し易くなって便利です。又、間違ったインターフェースに設定する等のミスを防止するのにも役立ちます。

コンフィギュレーションモードでshowコマンド実行

 showコマンドは特権EXECモードやユーザーEXECモードで実行する必要がありますが、コンフィギュレーションモードで設定している時、exit等で戻って実行し、再度コンフィギュレーションモードに移るのは面倒です。

 この場合、doコマンドを利用して特権EXECモードやユーザーEXECモードに戻る事なくコマンドを実行出来ます。

【doコマンド】
Cisco(config)# do show running-config
Building configuration...

Current configuration : 1377 bytes
!
version 12.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encrypsion
!
hostname Cisco
・・・

 上記ではプロンプトがCisco(config)#の時、つまりグローバルコンフィギューレーションモードの時にdoを最初に付ける事でshow running-configの実行結果が表示されています。

サポートへ送付する情報の取得

 show tech-supportコマンドはshow running-configの結果やログ、インターフェース、VLAN、スパニングツリー等、多くの設定、状態、統計情報等を表示します。

 show teck-supportコマンドは多数のコマンドを一度に実行したのと同じなので、表示し終わるまで数分等非常に時間がかかります。このため、設定している最中やトラブル対応時は1つ1つ必要なコマンドを投入した方が早く結果を見れますが、持ち帰って調査を行う時は必ず採取する必要があります。

 表示結果の中には見ても分からないものもありますが、CiscoルータやCatalystを購入したベンターのサポートに問い合わせを行うと、多くの場合show tech-supportを採取して下さいと言われます。

 二度手間にならないように調査が継続する場合は必ず採取する事をお奨めします。

コマンド実行時に日時を表示

 コマンドを実行した時に日時を表示したい時があります。

 例えば、試験をしている時、いつ実行したか証拠とする場合や後でどの順番に実行したか確認したい時等です。

 exec prompt timestampコマンドを使うと、コマンドを実行する度に日時を表示する事が出来ます。

【exec prompt timestampコマンド】
Cisco(config)# line console 0
Cisco(config-line)# exec prompt timestamp
Cisco(config-line)# exit

 上記ではコンソールで接続した時に表示するよう設定しています。telnetやsshで接続した時も有効にするにはline vtyコマンドで該当の回線を指定し、ラインコンフィギュレーションモードに入ってから実行します。

 この設定により、コマンドを実行すると以下のように日時が表示された後、コマンドの結果が表示されます。

【exec prompt timestampコマンドを利用した結果】
Cisco# show spanning-tree
Load for five secs: 1%/1%; one minute: 1%; five minutes: 1%
Time source is NTP, 10:10:00.000 JST Tue June 2 2015

VLAN0010
 Spanning tree enabled protocol ieee
 Root   ID Priority   24577
           Address    ffff.1111.ffff
           Cost       8
           Port       1 (GigabitEthernet1/0/1)
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority   32778  (priority 32768 sys-id-ext 10)
           Address    1111.ffff.1111
           Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
           Aging Time 300

Interface Role Sts Cost Prio.Nbr Type
--------- ---- --- ---- -------- ------
Gi0/1     Root FWD 8    128.1    P2p
Gi0/2     Back BLK 14   128.12   P2p
・・・

デバッグ情報の表示

 debugコマンドは様々なイベントを表示出来るため、トラブル対応に有効です。

 例えばRIPの設定をした後、ルーティングテーブルを確認しても反映されていないため、RIPの送受信が出来ているか確認したい場面があったとします。

 パケットをキャプチャしても良いのですが、デバッグコマンドを使えばCiscoルータやCatalyst上で簡単に調査する事が出来ます。

【debug ip ripコマンド】
Cisco# debug ip rip
RIP protocol debugging is on
*Mar  10 01:54:11.022: RIP: sending v2 update to 244.0.0.9 via Vlan10 (172.16.1.1)
*Mar  10 01:54:11:022: RIP: build update entries - suppressing nul update
*Mar  10 01:54:20:333: RIP: received v2 update from 172.16.1.2 on Vlan10
*Mar  10 01:54:20:333:      172.16.2.0/24 via 0.0.0.0 in 1 hops
・・・

 上記は何かしらのイベントがある度に表示されますが、sendingとreceivedが表示されているため正常にRIPの送受信が出来ている事が分かります。sendingがなければパケットが送信出来ていない事が分かります。又、receivedがなければ受信出来ていません。

 例えば、一方のCiscoルータやCatalystでsendingが表示されており、他方のCiscoルータやCatalystでreceivedが表示されていない場合、フィルタリング等で遮断されている可能性があります。

 デバッグを停止するためにはno debug allを実行します。

 他のデバッグコマンドの例を示します。

・debug spanning-tree bpdu
 スパニングツリーのBPDU送受信が確認出来ます。
・debug ip ospf adj
 OSPFネイバー関係を結ぶ時の状態遷移を確認出来ます。
・debug ip ospf events
 OSPFでの何かしらのイベントを表示します。
・debug ip ospf packet
 OSPF受信パケットを確認出来ます。

 この他にもdebugコマンドは非常に沢山あり、debug ?で確認出来ます。

 又、全てのデバッグを有効にするdebug allもあります。どれを有効にするとよいか分からない時に使うとトラブル対応のヒントが発見出来る可能性がありますが、本番環境で稼働しているCiscoルータやCatalystに使ってはいけません。大量の出力が発生してCiscoルータやCatalystのCPUが処理しきれずに応答しなくなる可能性が高いためです。試験環境で通信が少ない場合等しか使わないように注意が必要です。

 debug allだけでなく、デバッグコマンドの中には大量の出力が発生するものがあるため、本番環境で使う場合はある程度試験環境で慣れてから利用する事をお奨めします。

 debugコマンド実行によりコマンドの投入自体が困難にならないように、debugコマンドを使う時は最初にno debug allを実行します。その後、目的のdebugコマンドを実行しますが、すぐに↑キーを押します。これですぐ前に実行したno debug allコマンドが表示された状態になります。もし、表示が凄い勢いで流れるようなら実行キーを押すだけで停止出来る可能性があります。これは「もしも」の保険ですが、本番環境等ではこれでも停止出来ない時があります。

 尚、デバッグコマンドの結果はtelnetやsshで接続した場合、デフォルトでは出力されないため、terminal monitorの設定が事前に必要です。

  • このエントリーをはてなブックマークに追加