トラシューするときは show run よりも、状態を見るshow コマンドの出力を使って原因を特定するクセをつける
トラシューするときは show run の結果より、状態見るshow コマンドの出力を使って原因を特定するクセをつけるべき。
— ののん (@nozawana44) 2018年12月23日
このツイートに関して、書いていきます。
トラブルの原因を特定した後は、最終的に設定変更が必要になることが多いので、調査のためのアプローチとしては間違いではありません。しかし、show run を中心にトラブルシューティングをしようとすると、時間がかかることが多いと感じます。
トラブルシューティングでは、被疑箇所を狭い範囲で想定することが重要です。想定が正しければ対処を行い、違っているのであれば別の被疑箇所を想定し確認するフローを繰り返して行くほうが show run とにらめっこするよりも早く原因を見つけることができます。
この、被疑箇所を狭い範囲で想定することがミソです。show run コマンドでは、1台のノードの設定が正しいかどうかしか確認できません。また、一度にチェックする範囲が広くなってしまい、見落としが発生することがよくあります。
例えば、次のような構成を作成しているとします。最終目的は RT1 と RT3 で lo0 を使用して iBGP ネイバーを確立させることです。
設定を投入し、BGPの状態を確認してみるとセッションが確立していません。
RT1#show bgp all summary For address family: IPv4 Unicast BGP router identifier 192.168.0.1, local AS number 65001 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.0.3 4 65001 0 0 1 0 0 00:45:09 Idle RT1# RT3#show bgp all summary For address family: IPv4 Unicast BGP router identifier 192.168.0.3, local AS number 65001 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.0.1 4 65001 0 0 1 0 0 01:39:14 Idle RT3#
先に原因を明かしますが、RT1とRT3 の lo 0 が OSPF で広告されていないことが原因です。
この状態からトラブルシューティングを行う際に、どのように進めるべきでしょうか?
まず、どのノードから調査するかという問題がありますが、ここでは RT1 から見ていく場合を考えます。
状態を確認するshow コマンドを使用
前提として、ルーターのあるべき状態とプロトコルの動作に関して十分に理解している必要があります。今回の場合であれば、BGPのネイバーを張るためには、その IP に対して疎通性が必要であるということを理解している必要があります。
(コンフィグをコピペして動かないと言っている場合は、設定しようとしている機能やプロトコルに関して理解が浅い場合が多いです。)
ここでは、被疑箇所として RT1 と RT3 の間で疎通性がないことを疑っています。
RT1のルート情報を確認すると、RT3 の lo0 のアドレスが載ってきていないので、BGPピアとして指定しているノードに対して疎通性がないことがわかります。この後は、RT1 から RT3 の lo0 へ疎通をもたせるにはどうすればいいのか、という観点でトラブルシューティングを進めることができます。
RT1#show ip route 10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks C 10.0.0.4/30 is directly connected, GigabitEthernet0/1 L 10.0.0.5/32 is directly connected, GigabitEthernet0/1 O 10.0.0.8/30 [110/2] via 10.0.0.6, 01:00:51, GigabitEthernet0/1 192.168.0.0/32 is subnetted, 2 subnets C 192.168.0.1 is directly connected, Loopback0 O 192.168.0.2 [110/2] via 10.0.0.6, 01:01:47, GigabitEthernet0/1 RT1#
この方法だと、RT3 の IP がルーティングテーブルに存在するかどうかだけをチェックすればいいので、仮に被疑箇所が間違っていたとしても、すぐに気づくことが出来ます。
RT2、または、RT3から確認を始めた場合でも、ルート情報が適切ではないことがわかります。
show run
show run のみでトラシューを行おうとするとどうなるでしょうか。
RT1の config は以下のようになっています。
RT1 --- snip--- interface Loopback0 description Loopback ip address 192.168.0.1 255.255.255.255 ! interface GigabitEthernet0/1 description to iosv-2 ip address 10.0.0.5 255.255.255.252 ip ospf network point-to-point ip ospf cost 1 ! router ospf 1 passive-interface Loopback0 network 10.0.0.4 0.0.0.3 area 0 ! router bgp 65001 bgp log-neighbor-changes neighbor 192.168.0.3 remote-as 65001 neighbor 192.168.0.3 update-source Loopback0 ! ---snip---
BGP のconfig は間違っていないので、lo0 を広告していない OSPF の設定ミスに気づく必要があります。今回の構成だと機器台数が少ないので config は短く、ミスに気づくのは簡単です。しかし、ネットワークを構成する機器の台数多くなればなるほど、1台あたりの config は長く複雑になり、show run だけで原因を見つけることは難しくなります。