NW障害時の切り分けに役立つコマンド集
皆さん、おはこんばんにちは。最近、花粉のせいでSAN値ピンチなコケラです。
タイトルにもある通り、今回はNW障害時のトラブルシューティングに役立つコマンドをいくつか紹介していこうかなと思います。基本的にはCisco IOSで、もしくはMS-DOS系で使えるコマンドとなります。
内容的には、超初心者~初中級者向けとなっているので、それほど難しいものではありません。とてもよく使うコマンドを★★★に、よく使うコマンドを★★☆に、たまに使うコマンドを★☆☆と、使用頻度別に分類して紹介していきますね。
ping [アドレス](★★★)
いわずもがな、IT技術に携わる全ての人たちが知っておくべき超定番コマンドです。ネットワークやサーバとの疎通確認ができます。
Router#ping 34.0.0.4 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/35/36 ms
Cisco IOSでは、上記のように!!!!!マークが表示されれば通信成功です。
MS-DOS系だと以下のようになります。
C:\Users\●●●>ping 127.0.0.1 127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms
ping [アドレス] -t(★★☆)
pingコマンドに-tオプションを付けることで、Ctrl+Cで明示的に終了させるまでずっと、pingを連続実行することができます。
C:\Users\●●●>ping 127.0.0.1 -t 127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 9、受信 = 9、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms Ctrl+C ^C
こうした連続pingを実行したい場合や、例えば複数のIPアドレスに連続pingを実行したい場合は、ExPingというツールがよく使われたりします。非常に有名な定番ツールなので、覚えておいて損はないでしょう。
ping [アドレス] -n 回数(★★☆)
MS-DOS系で、実行する回数を指定してpingを実行させたい時は-nオプションを付けます。Cisco IOSなら、-nをrepeatに変えてください。ハイフンは不要です。
C:\Users\●●●>ping 127.0.0.1 -n 10 127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 10、受信 = 10、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms
ping vrf [vrf名] [アドレス](★★☆)
VRFによって、L3でシステムを分離させている場合、各システムで設定したVRF名を指定しないとpingを実行できません。VRFに関しては、いずれまた別記事でまとめようかと思います。とりあえずは、VLANのL3バージョンだという認識で良いです。
CoreSW#ping vrf Kokera 192.168.3.3 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/38/44 ms
telnet [アドレス](★★★)
pingと同じくらい重要なコマンドです。指定したアドレスが設定されている機器へ接続し、遠隔で操作することができます。telnetで機器に遠隔で接続し、showコマンドで機器の状態を調べたり、機器の設定を変更したりすることができます。
Router#telnet 10.10.10.1 Tryng 10.10.10.1 ... Open User Access Verification Password:
telnet [アドレス] /vrf [VRF名](★★☆)
VRFが設定されている機器へtelnet接続を行う場合、pingと同様、VRF名を指定しないといけません。pingの時とは少しVRF名の指定方法が異なるのでややこしいです。末尾に/vrf [vrf名]を付けてください。
CoreSW#telnet 10.10.10.1 /vrf Kokera Tryng 10.10.10.1 ... Open User Access Verification Password:
show logging(★★★)
sh logも定番のコマンドです。主に機器のインターフェースのリンク状況を調べたい時に使います。
Switch#sh log *Feb 31 17:14:01.095: %LINK-3-UPDOWN: Interface FastEthernet 0/1, changed state to up *Feb 31 17:14:01.103: %LINK-3-UPDOWN: Interface GigabitEthernet1/0, changed state to up *Feb 31 17:14:01.111: %LINK-3-UPDOWN: Interface GigabitEthernet2/0, changed state to up *Feb 31 17:15:02.215: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down *Feb 31 17:15:02.223: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0, changed state to down
例えば、1行目の「*Feb 31 17:14:01.095: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up」を見ると、Switch1のFa0/1が2月31日の17時14分にリンクアップして、
4行目の「*Feb 31 17:14:02.215: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down」で、17時15分にリンクダウンしていることが分かります。
このログによって「Fa0/1に繋がっているケーブルの接触が悪いか故障したのかも?あるいは、機器を移動させたりするために、誰かがケーブルを抜き差ししてるのかも?」と推測することができます。
余談ですが、デフォルトの状態では、上記のように日時が表示されません。日時が表示されないとあまり意味がないので、以下のコマンドを投入しましょう。
Switch(config)#service timestamps log datetime msec
show version(★★★)
sh verでは主に、機器のIOSのバージョンやFlashメモリのサイズ、シリアルナンバーや機器が起動してからの経過時間を確認することができます。これらの4項目はどれも重要ですが、運用・保守業務において特に重要なのは「機器が起動してからの経過時間」です。
Router#sh ver Cisco IOS Software, C860 Software (C860-UNIVERSALK9-M), Version 12.4(24)T3, RELEASE SOFTWARE (fc2) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2010 by Cisco Systems, Inc. Compiled Tue 23-Mar-10 18:07 by prod_rel_team ROM: System Bootstrap, Version 12.4(22r)YB5, RELEASE SOFTWARE (fc1) Router uptime is 1 minute System returned to ROM by power-on System image file is "flash:c860-universalk9-mz.124-24.T3.bin" (略) A summary of U.S. laws governing Cisco cryptographic products may be found at: http://www.cisco.com/wwl/export/crypto/tool/stqrg.html If you require further assistance please contact us by sending email to export@cisco.com. Cisco 861 (MPC8300) processor (revision 1.0) with 249856K/12288K bytes of memory. Processor board ID ●●●●● 5 FastEthernet interfaces 256K bytes of non-volatile configuration memory. 125440K bytes of ATA CompactFlash (Read/Write) License Information for 'c860-data' License Level: advsecurity Type: Permanent Next reboot license Level: advsecurity Configuration register is 0x2102
show ip interface brief(★★☆)
機器のすべてのインターフェースに設定されているIPアドレスおよび、それらの物理層とデータリンク層の状態を確認できます。
Router#sh ip int brief Interface IP-Address OK? Method Status Protocol Serial1/0 192.168.1.1 YES unset administratively down down Serial1/1 172.16.1.1 YES unset administratively down down Serial1/2 unassigned YES unset administratively down down Serial1/3 unassigned YES unset administratively down down FastEthernet0/0 10.1.1.1 YES unset up up
show interfaces status(★☆☆)
機器のすべてのインターフェースのリンクステータス、Vlan番号、Duplex/Speedの状態を確認できます。意外と使う機会がないように感じます。
Switch#sh int status Port Name Status Vlan Duplex Speed Type ------- ------------------ ------------ -------- ------ ------- ---- Fa0/1 notconnect 1 Auto Auto 100BaseTX/FX Fa0/2 notconnect 1 Auto Auto 100BaseTX/FX Fa0/3 notconnect 1 Auto Auto 100BaseTX/FX Fa0/4 notconnect 1 Auto Auto 100BaseTX/FX Fa0/5 notconnect 1 Auto Auto 100BaseTX/FX Fa0/6 notconnect 1 Auto Auto 100BaseTX/FX Fa0/7 notconnect 1 Auto Auto 100BaseTX/FX Fa0/8 notconnect 1 Auto Auto 100BaseTX/FX Fa0/9 notconnect 1 Auto Auto 100BaseTX/FX Fa0/10 notconnect 1 Auto Auto 100BaseTX/FX Fa0/11 notconnect 1 Auto Auto 100BaseTX/FX Fa0/12 notconnect 1 Auto Auto 100BaseTX/FX
show interfaces [インターフェース] | include broadcasts(★★☆)
該当機器の配下でループ接続になっている場合、ブロードキャストストームが発生する時があります。このコマンドは、指定したインターフェースが受け取ったブロードキャスト値だけを抜き出して確認することができます。
数回コマンドを実行し、受け取ったブロードキャスト値が激しく増加していたら、該当機器の配下でのループを疑いましょう。
Router#sh int fa 1 | include broadcasts Received 153355 broadcasts , 0 runts, 0 giants, 0 throttles
show ip dhcp binding(★★☆)
DHCPによって配布されたIPアドレスの払い出し状況を確認することができます。配下のクライアント端末が何台あって、どのIPアドレスがどの端末に配布されたのか調べることができます。
Router#sh ip dhcp binding Bindings from all pools not associated with VRF: IP address Client-ID/ Lease expiration Type Hardware address/ User name 172.16.1.2 0100.9f31.0a00.00 Jan 18 2014 04:36 PM Automatic 172.16.1.3 0100.9f31.0b00.00 Jan 18 2014 04:38 PM Automatic
show mac address-table(★★☆)
機器が学習しているMACアドレスの情報をインターフェース毎に確認することができます。
Switch#sh mac address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- All 0100.0ccc.cccc STATIC CPU All 0180.c200.0001 STATIC CPU All 0180.c200.0002 STATIC CPU All 0180.c200.0003 STATIC CPU All 0180.c200.0004 STATIC CPU All 0180.c200.0005 STATIC CPU All 0180.c200.0006 STATIC CPU All 0180.c200.0007 STATIC CPU All 0180.c200.0008 STATIC CPU All 0180.c200.0009 STATIC CPU All 0180.c200.000a STATIC CPU All 0180.c200.000b STATIC CPU All 0180.c200.000c STATIC CPU All 0180.c200.000d STATIC CPU All 0180.c200.000e STATIC CPU All 0180.c200.000f STATIC CPU All 0180.c200.0010 STATIC Fa0/1 All ffff.ffff.ffff STATIC CPU Total Mac Addresses for this criterion: 20
show process cpu(★☆☆)
機器での過去5秒間、1分間、5分間のCPU使用率をプロセス毎に確認できます。historyを付け加えると、過去60秒間、60分間、72時間におけるCPU使用率をグラフィカルに表示させることもできます。
Switch#sh process cpu CPU utilization for five seconds: 16%/4%; one minute: 17%; five minutes: 17% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 0 1956 0 0.00% 0.00% 0.00% 0 Load Meter 2 47 18 2611 0.20% 0.01% 0.00% 0 Exec 3 6374 1162 5485 0.00% 0.04% 0.05% 0 Check heaps 4 0 1 0 0.00% 0.00% 0.00% 0 Chunk Manager 5 0 1 0 0.00% 0.00% 0.00% 0 Pool Manager 6 0 2 0 0.00% 0.00% 0.00% 0 Timers 7 21 3 7000 0.00% 0.00% 0.00% 0 Entity MIB API 8 46 2442 18 0.00% 0.00% 0.00% 0 HC Counter Timer 9 11 165 66 0.00% 0.00% 0.00% 0 ARP Input 10 760 9702 78 0.00% 0.00% 0.00% 0 Enet Aging 11 0 1 0 0.00% 0.00% 0.00% 0 Critical Bkgnd 12 129 4673 27 0.00% 0.00% 0.00% 0 Net Background (後略)
show tech-support(★☆☆)
障害時に参考になるであろう確認コマンドを全てまとめて実行してくれるコマンドです。どういう時に使うのか、察しの良い方なら気付かれるでしょう。要するにこういうことです。
どんだけ調べても障害の原因が分からねーから、超絶エキスパートな人に障害切り分け丸投げだー!という時に使います。
もちろんシスコの中の人でも良いですし、シスコ機器の取り扱い企業No1のNOS(ネットワンシステムズ)のサポートに、このsh techを送り付けるのも良いでしょう。サポート契約を結んでないと出来ませんが。
当然ながら、コマンドの実行例は割愛させて頂きます。とてつもなく膨大な量ですし、文字通りいろいろな確認コマンドをまとめて実行しているだけなので。
以上でコマンド紹介を終わらせて頂きます。いかがだったでしょうか。本記事で紹介したコマンドは、すべて実際に業務で使用したことがあるので、かなり実用的な内容になったのではないかと思います。
本記事の内容が、少しでも皆さんのお役に立てれば幸いです。