【CCNP ENARSI】OSPFトラブルシューティング
トラブルの分類
- ネイバーが確立されない
- ルーティング情報が正しくない
- その他
ネイバーが確立されない
考えられる原因
- インターフェースがダウンしている
- インターフェースでOSPFが有効になっていない
- エリア番号の不一致
- エリアタイプの不一致
- ネットワークタイプの不一致
- パッシブインターフェース設定
- サブネットの不一致
- 認証設定の不一致
- 不適切なACL
- MTU不一致
- ルータIDの重複
- タイマーの不一致
ネイバー確立関連の確認コマンド
show running-config | section router ospf
- OSPFの設定確認。
R2#sh run | s router ospf router ospf 1 network 10.1.2.2 0.0.0.0 area 0 network 10.2.7.2 0.0.0.0 area 1
show ip ospf neigbors
- ネイバーの確認。
- MTU不一致の確認(StateがExchange状態で止まっている場合はMTU不一致を疑う)
R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 10.1.23.2 1 FULL/BDR 00:00:37 10.1.12.2 GigabitEthernet1/0
show ip protocols
- ルータIDの確認。
- OSPFが有効になっているインターフェースの確認。
- エリアタイプの確認。
- パッシブインターフェースの確認。
show ip ospf interfaces brief
- OSPFが有効になっているインターフェースの確認。
- エリア番号の確認。
R1# show ip ospf interface brief Interface PID Area IP Address/Mask Cost State Nbrs F/C Gi0/0 1 1 10.1.1.1/24 1 DR 0/0 Gi1/0 1 1 10.1.12.1/24 1 DR 1/1
show ip ospf interfaces INT_NAME
- 認証に使用されているキーIDを確認。
- OSPFインターフェースタイマーの確認。
- ネットワークタイプの確認。
show ip ospf
- エリア全体で認証が有効になっているかを確認。
不適切なACL
隣接関係のデバッグコマンド
- debug ip ospf hello
- debug ip ospf adj
ルーティング情報が正しくない
考えられる原因
- インターフェースでOSPFが有効になっていない
- (想定外の)より優先度が高いルートを学習している
- スタブエリア(NSSAなど含む)の設定誤り
- DRの選出誤り
- 不適切なACL
- ルータIDの重複
ルーティング関連の確認コマンド
show ip route ospf
- OSPFで学習したルートを確認。
show ip route NETWORK SUBNET
- 確認したいネットワークへのルーティング情報を確認。
show ip ospf database
- LSDBの内容を確認。
show ip ospf
- エリアタイプ(スタブエリアやNSSAエリア)の情報を確認。
show ip protocols
- 適用されているフィルタリング(ACL)を確認。
不適切なACLが適用されていないか確認
- show access-list
- show ip prefix-list
- show route-map
参考資料
書籍
動画
【CCNP ENARSI】OSPF
個人的な学習メモです。試験の範囲を網羅しているわけではないので注意してください。
網羅的に学習したい場合は、参考資料欄の情報を確認してください。
OSPF(基本)
特徴
- RFC(RFC2328)で標準仕様が規定されているマルチベンダ環境で使えるプロトコル(RFC2328はOSPFv2)。
- リンクステート型のプロトコル。
- エリアによるネットワークの階層化。
- コンバージェンスが速い
- メトリックにコストを使用する
- 認証をサポート
OSPFで使用されるパケット
- プロトコル番号 89が使用される
- 宛先IP 224.0.0.5、224.0.0.6のマルティキャストアドレスが使用される
- 宛先MAC 01:00:5E:00:00:05、01:00:5E:00:00:06 のマルチキャストアドレスが使用される
パケット名 | 説明 |
---|---|
Hello | ネイバーの検出と関係維持のために使用される。 |
Database Description(DBD or DDP) | LSDPの内容を記述するために使用される。 |
リンクステート要求(LSR) | 詳細なLSAの問合せに使用される。 |
リンクステートアップデート(LSU) | LSAを送信するために使用される。 |
リンクステート確認応答(LSAck) | LAUを受信した際の受け取り確認に使用される。 |
ネイバー形成までのステート遷移
ステート | 説明 |
---|---|
Down | ネイバー関係の初期状態。helloパケットを受信していない状態。 |
Attempt | ノンブロードキャストマルチアクセス(NBMA)ネットワークでのみ遷移する状態。helloパケットを送信しているが、まだ何も受信していない状態。 |
Init | 他のルータからhelloパケットを受信したが、双方向通信が確立していない状態。 |
2-Way | 双方向通信が確立された状態。DRまたはBDRが必要な場合はこの状態で選択が行われる。 |
ExStart | DBDパケットを交換するためのマスターとスレーブを選択している状態。 |
Exchange | DBDパケットを好感してお互いのLSDBを同期させている状態。 |
Loading | LSRパケットを送信して最新のLSAをLSUパケットとして取得しているjy。 |
Full | 隣接関係(アジャセンシー)を築きLSDBの同期が完了した状態。 |
ネイバー形成に必要な条件
- RID(ルータID)がデバイス間で一意である。
- サブネット、サブネットマスクが一致していること。
- MTUが一致していること。
- エリアIDが一致していること。
- helloタイマーとデッドタイマーが一致していること。
- 認証フラグ
- エリアタイプが同一(スタブ、NSSAなど)
マルチアクセス環境でのOSPF
DR(代表ルータ)とBDR(バックアップ代表ルータ)
マルチアクセス環境(イーサネットなど)では、全ルータがそれぞれLSAを交換するためルーティングプロトコルのトラフィックが増加してしまう。
トラフィックを軽減させる仕組みとしてDRとBDRという役割のルータが選出される。
DRとBDR以外のルータ(DROther)は、DRとBDRとのみ隣接関係(アジャセンシー)を確立することでトラフィックが軽減される。
DRとBDRの選出基準
以下の基準で選出される。
- Priorityが最大
- ルータIDが最大
※DRにしたくない(DROtherにしたい)ルータで priorityを 0にすることで必ずDROtherになります。
Priority値について
- 0~255までの整数値
- デフォルトは 1
- 0の場合は、そのルータはDR、BDRになれない
- Priorityが同じ場合は、ルータIDが最大のルータがDRに選出される
ルータIDの決定順位
OSPFのネットワークタイプ
ネットワークタイプ | DRの有無 | Helloタイマー | Deadタイマー | Helloの宛先 |
---|---|---|---|---|
Broadcast | ○ | 10 | 40 | マルチキャスト 224.0.0.5 |
NBMA(Non-Broadcast MultiAccess) | ○ | 30 | 120 | ユニキャスト |
Point to Point | × | 10 | 40 | マルチキャスト 224.0.0.5 |
Point to Multipoint | × | 30 | 120 | マルチキャスト 224.0.0.5 |
Point to Multipoint Non-Broadcast | × | 30 | 120 | ユニキャスト |
- Helloの宛先がユニキャストになっているネットワークタイプでは neighborコマンドで相手を指定する必要がある。
- ただしneighborは両端で設定する必要はない。
- loopbackインターフェースはデフォルトでLoopbackというネットワークタイプ。サブネット/32でアドバタイズされる。
- loopbackインターフェースの設定どおりのサブネット(/24など)でアドバタイズしたい場合は、Point to Pointネットワークへタイプを変更する。
認証機能
OSPFの認証の種類
- 認証無し
- インターフェース認証
- エリア認証
- Virtual-link認証
認証の方式
- 平文認証
- MD5認証
マルチエリアOSPF
LSAのタイプ
LSAタイプ | 届く範囲 | 説明 | 生成するルータ |
---|---|---|---|
ルータLSA (LSA Type1) |
エリア内 | 同一エリア内の他ルータに自身のインターフェースのリンク数、アドレスなど詳細情報を伝える。 | 全ルータ |
ネットワークLSA (LSA Type2) |
エリア内 | DRのルータID、アドレス。隣接ルータのリストを伝える。 | DR |
サマリーLSA (LSA Type3) |
エリア内 | 他エリアのネットワーク情報を伝える。 | ABR |
ASBRサマリーLSA (LSA Type4) |
エリア内 | ASBRのルータID、ASBRまでのメトリックを伝える。 | ABR |
AS外部LSA (LSA Type5) |
ドメイン全体 | OSPFドメイン外の経路情報を伝える。 | ASBR |
NSSA外部LSA (LSA Type7) |
NSSAエリア内 | NSSA内のASBRがOSPFドメイン外の経路情報を伝える。 | ASBR |
各エリアの特徴
エリア名 | LSAタイプ | 説明 |
---|---|---|
バックボーンエリア | 1,2,3,4,5 | 必須のエリア。他のエリアはバックボーンエリア(エリア0)に接している必要がある。 |
標準エリア | エリア内 | 1,2,3,4,5 | エリア間のルートおよび外部ルートが個別に通知される。 |
スタブエリア | 1,2,3 | 外部ルート(タイプ5 LSA)を受信せず、ABRによりスタブエリアの内部へデフォルトルートが通知される。 |
完全スタブエリア | 1,2,3(デフォルトルートのみ) | 外部ルートだけではなくエリア間ルート(LSA Type3)も受信しない。デフォルトルートのみが通知される。 |
NSSA | 1,2,3,7 | ASBRが配置可能なスタブエリア。外部ルート(LSA Type5 )はNSSA内に流れない。デフォルトルートを伝播するには設定(default information-originate)が必要。 |
トータリーNSSA | 1,2,3(デフォルトルートのみ),7 | ASBRが配置可能なトータリースタブエリア。デフォルトルートの設定をしなくても伝播される(LSA Type3により) |
パス選択
宛先ネットワークへ向かうために使用するインターフェースのコストの和により最短経路を計算する。
コストの計算
コストの変更方法
- ip ospf cost コマンド設定(インターフェース単位)
- bandwidthを変更(インターフェース単位)
- コスト計算式の分子を変更(ルータ全体に適用される) (config-router)# auto-cost reference-bandwidth Mbps値
経路集約
手動集約
OSPFは、同一エリア内のルータは同一のLSDBを持つため、同一のエリア内ではネットワークの集約はできない。
エリア間ルートの集約はABRで、外部ルートの集約はASBRで行われる。
エリア間を集約したルートはLSA Type3で送信され、外部ルートの集約ルートはLSA Type5で送信される。
デフォルトルート
スタブエリアなどは自動的にエリア内にデフォルトルートを伝播することができるが、バックボーンエリアや標準エリアでもデフォルトルートを伝播させることができる。
Virtual Link
Virtual Linkの設定が必要なケース
- バックアップエリア(エリア 0)に直接接続されていないエリアがある。
- バックアップエリアが分割されたネットワーク(不連続ネットワーク)。
Virtual Linkの注意点
- 2つのエリアを飛び越えてVirtual Linkの設定はできない。
- スタブエリアはトランジットエリア(Virtual Linkを通すエリア)になれない。
- どちらかのルータがエリア 0と接続されていないとVirtual Linkは使用できない。
- エリア0で認証設定をしている場合には、virtual-link設定で認証用パスワード設定が必要。
OSPF(設定)
OSPF基本設定
設定例の英大文字の箇所は、各設定値に置き換えが必要。
また、モードへの移行部分は省略している場合あり。
router(config)# router ospf PROCESS_ID router(config-router)# router-id A.B.C.D ※OSPFを有効にするインターフェースの指定(2通りの方法がある) ※networkコマンドで設定 router(config-router)# network INTERFACE_IP WC_MASK area AREA_ID or ※インターフェースモードで設定 router(config)# interface INT_NAME router(config-if)# ip ospf PROCERSS_ID area AREA_ID
プライオリティの設定(0~255の値を設定)
router(config)# interface INT_NAME router(config-if)# ip ospf priority PRIORITY
パッシブインターフェース設定
router(config)# router ospf PROCESS_ID router(config-router)# passive-interface INT_NAME or router(config-router)# passive-interface default router(config-router)# no passive-interface INT_NAME
ルート集約
エリア間ルートの集約(ABRで設定)
router(config)# router ospf PROCESS_ID router(config-router)# area AREA_ID NEWWORK SUBNET cost コスト値
外部ルート集約(ASBRで設定)
router(config)# router ospf PROCESS_ID router(config-router)# summary-address NEWWORK SUBNET
デフォルトルート
router(config)# router ospf PROCESS_ID router(config-router)# default-information originate [always]
スタブ/トーラリースタブ/NSSA/トータリーNSSA
※スタブまたはNSSAの設定(エリア内の全ルータで行う) router(config)# router ospf PID router(config-router)# area AREA_ID <stub | nssa> ※トータリースタブまたはトータリーNSSAの設定(ABRでのみ行う) router(config)# router ospf PID router(config-router)# area AREA_ID <stub | nssa> no-summary
Virtual Link設定
※指定するAREA_IDはトランジットエリアのものを設定。ルータIDは対向のルータのものを設定。 router(config)# router ospf PID router(config-router)# area AREA_ID virtual-link ROUTER-ID
OSPFその他の設定
認証
※インターフェース認証(平文) router(config)# interface INT_NAME router(config-if)# ip ospf authentication router(config-if)# ip ospf authentication-key PASSWORD ※インターフェース認証(MD5) router(config)# interface INT_NAME router(config-if)# ip ospf authentication message-digest router(config-if)# ip ospf authentication-key KEY_ID md5 KEY_STRING ※エリア認証(平文) router(config)# router ospf PID router(config-router)# area AREA_ID authentication ※パスワードの設定は各インターフェースモードで設定 router(config)# interface INT_NAME router(config-if)# ip ospf authentication-key PASSWORD ※エリア認証(MD5) router(config)# router ospf PID router(config-router)# area AREA_ID authentication message-digest ※パスワードの設定は各インターフェースモードで設定 router(config)# interface INT_NAME router(config-if)# ip ospf authentication-digest-key KEY_ID md5 KEY_STRING ※Virtual-link認証(平文) router(config)# router ospf 100 router(config-router)# area 0 authentication router(config-router)# area 1 virtual-link 1.1.1.1 authentication-key cisco ※Virtual-link認証(MD5) router(config)# router ospf 100 router(config-router)# area 0 authentication message-digest router(config-router)# area 1 virtual-link 1.1.1.1 authentication-digest-key 1 md5 cisco
コストの変更
※インターフェースのコスト値変更 router(config)# interface INT_NAME router(config-if)# ip ospf cost COST_VALUE ※bandwidth値変更 router(config)# interface INT_NAME router(config-if)# bandwidth 帯域幅(Kbps) ※コスト計算式の分子を変更 router(config)# router ospf PROCESS_ID router(config-router)# auto-cost reference-bandwidth 帯域幅(Mbps)
Helloタイマー/Deadタイマー
router(config-if)# ip ospf hello-interval SEC router(config-if)# ip ospf dead-interval SEC
ネットワークタイプの変更
router(config)# interface INT_NAME router(config-if)# ip network < broadcast | non-broadcast | point-to-multipoint [ non broadcast] | point-to-point]>
MTU設定とMTU不一致検出の無効化
router(config)# interface INT_NAME router(config-if)# mtu <MTU_SIZE> router(config-if)# ip ospf mtu-ignore
参考資料
書籍
動画
【CCNP ENARSI】EIGRPv6
個人的な学習メモです。試験の範囲を網羅しているわけではないので注意してください。
網羅的に学習したい場合は、参考資料欄の情報を確認してください。
EIGRPv6(基本)
特徴
EIGRPv6で使用されるパケット
パケット名 | 送信元 | 宛先 | 説明 |
---|---|---|---|
Hello | Link-local | FF02::A | ネイバー探索とキープアライブ。 |
Acknowledgment | Link-local | Link-local | 経路情報の更新のために使用される。 |
Query | Link-local | FF::A | トポロジ変更イベント中のルート情報の要求。 |
Reply | Link-local | Link-local | Queryパケットへの応答。 |
Update | Link-local | Link-local | アジャセンシーの形成 。 |
Update | Link-local | FF02::A | トポロジーの変更。 |
EIGRPv6(設定)
設定モード
ClassicモードとNamedモードの 2通りの設定方法がある。
Classicモードは、設定箇所が routerコンフィグレーションモードとインターフェースコンフィグレーションモードに分かれていてわかりにくかった。
Namedモードでは、1箇所ですべて設定できるようになっている。
EIGRPv6基本設定
設定例の英大文字の箇所は、各設定値に置き換えが必要。
また、モードへの移行部分は省略している場合あり。
Classicモードの例 ----------- router(config)# ipv6 unicast-routing router(config)# ipv6 router eigrp ASN router(config-router)# eigrp router-id A.B.C.D router(config)# interface INT_NAME router(config-if)# ipv6 eigrp ASN Namedモードの例 ------ router(config)# ipv6 unicast-routing router(config)# router eigrp NAME router(config-router)# address-family ipv6 unicast autonomous-system ASN router(config-router-af)# eigrp router-id A.B.C.D
EIGRPその他の設定
ルート集約
IPv6にはクラスフルルーティングなどの概念がないため自動集約は不可能。
集約はIPv4と同じルールを使用してインターフェースごとに手動で設定される。
Classicモードの例 ----------- router(config)# interface INT_NAME router(config-if)# ipv6 summary-address eigrp ASN IPv6-PREFIX/PREFIX-LENGTH Namedモードの例 ------ router(config-router-af)# af-interface INT_NAME router(config-router-af-interface)# summary-address IPv6-PREFIX/PREFIX-LENGTH router(config-router-af-interface)#exit-af-interface
デフォルトルートのアドバタイズ
EIGRPv6トポロジーにデフォルトルートをアドバタイズするには、::/0 をインターフェースモードでサマリーアドレスとして設定する。
Classicモードの例 ----------- router(config)# interface INT_NAME router(config-if)# ipv6 summary-address eigrp ASN ::/0 Namedモードの例 ------ router(config-router-af)# af-interface INT_NAME router(config-router-af-interface)# summary-address ::/0 router(config-router-af-interface)#exit-af-interface
EIGRPv6トラブルシューティング
基本コマンド
Classicなコマンド
#! ネイバーの確認 # show ipv6 eigrp neighbors #! インターフェースのUp/Down確認 # show ipv6 interface brief #! AS番号の確認 # show ipv6 protocols #! EIGRPが有効なインターフェースの確認 # show ipv6 eigrp interfaces #! EIGRPで学習しているルート情報 # show ipv6 route eigrp [IPv6_ADDRESS/PREFIX] #! EIGRPに関係する設定確認 # show run | se router eigrp
新しいコマンド
以下はIPv6の例だが、ipv4でも使用可能。
ipv6の部分をipv4に変えるだけ。
# show eigrp address-family ipv6 neighbors # show eigrp address-family ipv6 interfaces # show eigrp address-family ipv6 topology
参考資料
書籍
動画
【CCNP ENARSI】EIGRPトラブルシューティング
トラブルの分類
- ネイバーが確立されない
- ルーティング情報が正しくない
- その他
ネイバーが確立されない
考えられる原因
- インターフェースがダウンしている
- AS番号の不一致
- K値の不一致
- パッシブインターフェース設定
- サブネットの不一致
- 認証設定の不一致
- 不適切なACL
- タイマー(ネイバー確立されるがフラップする可能性がある)
原因別確認コマンド
EIGRP関連の基本の確認コマンド
show running-config | section router eigrp
EIGRPの設定確認。
R2#sh run | s router eigrp router eigrp 1 network 10.1.2.2 0.0.0.0 network 10.2.7.2 0.0.0.0
show ip eigrp neigbors
ネイバーの確認。
R2#show ip eigrp neighbors EIGRP-IPv4 Neighbors for AS(1) H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 1 10.2.7.7 Et0/1 13 00:17:12 1 100 0 17 0 10.1.2.1 Et0/0 11 00:20:42 421 2526 0 44
show ip eigrp interfaces
EIGRPが有効になっているインターフェースの確認。
R2#sh ip eigrp interfaces EIGRP-IPv4 Interfaces for AS(1) Xmit Queue PeerQ Mean Pacing Time Multicast Pending Interface Peers Un/Reliable Un/Reliable SRTT Un/Reliable Flow Timer Routes Et0/0 1 0/0 0/0 421 0/2 2104 0 Et0/1 1 0/0 0/0 1 0/2 50 0
show ip eigrp topology
EIGRPトポロジー確認。
FD、RDの値確認。
R2#show ip eigrp topology EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.2.2) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 10.1.5.0/24, 1 successors, FD is 307200 via 10.1.2.1 (307200/281600), Ethernet0/0 P 10.6.7.0/24, 1 successors, FD is 307200 via 10.2.7.7 (307200/281600), Ethernet0/1 P 10.7.0.0/24, 1 successors, FD is 307200 via 10.2.7.7 (307200/281600), Ethernet0/1 P 10.3.7.0/24, 1 successors, FD is 307200 via 10.2.7.7 (307200/281600), Ethernet0/1 P 10.2.7.0/24, 1 successors, FD is 281600 via Connected, Ethernet0/1 P 10.1.3.0/24, 1 successors, FD is 307200 via 10.1.2.1 (307200/281600), Ethernet0/0 P 10.1.2.0/24, 1 successors, FD is 281600 via Connected, Ethernet0/0 P 10.1.6.0/24, 1 successors, FD is 307200 via 10.1.2.1 (307200/281600), Ethernet0/0 P 10.4.7.0/24, 1 successors, FD is 307200 via 10.2.7.7 (307200/281600), Ethernet0/1 P 10.1.4.0/24, 1 successors, FD is 307200 via 10.1.2.1 (307200/281600), Ethernet0/0 P 10.5.7.0/24, 1 successors, FD is 307200 via 10.2.7.7 (307200/281600), Ethernet0/1
インターフェースの状態
show ip interface brief コマンドで確認。
Statusと Protocolが upになっていること。
R2#sh ip int bri | e una Interface IP-Address OK? Method Status Protocol Ethernet0/0 10.1.2.2 YES manual up up Ethernet0/1 10.2.7.2 YES manual up up
AS番号の不一致
sh ip protocols コマンドで確認。
以下のコマンド実行例の①の箇所。
R2#sh ip protocols | be eigrp Routing Protocol is "eigrp 1" ←① Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Default networks flagged in outgoing updates Default networks accepted from incoming updates EIGRP-IPv4 Protocol for AS(1) ←① Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 ←② Soft SIA disabled NSF-aware route hold timer is 240 Router-ID: 10.1.2.2 Topology : 0 (base) Active Timer: 3 min Distance: internal 90 external 170 Maximum path: 4 Maximum hopcount 100 Maximum metric variance 1 Automatic Summarization: disabled Maximum path: 4 Routing for Networks: 10.1.2.2/32 10.2.7.2/32 Passive Interface(s): Passive Interface(s): ←③ Ethernet0/1 Routing Information Sources: Gateway Distance Last Update 10.2.7.7 90 00:27:46 10.1.2.1 90 00:00:18 Distance: internal 90 external 170
K値の不一致
show ip protocolsで確認。 上記コマンド実行例の②の箇所。
サブネットの不一致
show running-config interface INT_NAMES コマンドで確認。
R2#sh run int e0/0 Building configuration... Current configuration : 79 bytes ! interface Ethernet0/0 no switchport ip address 10.1.2.2 255.255.255.0 end
パッシブインターフェースの設定
show ip protocolsで確認。 上記コマンド実行例の③の箇所。
認証設定の不一致
show running-config interface INT_NAMESで確認。
R3#show run interface e0/0 Building configuration... Current configuration : 162 bytes ! interface Ethernet0/0 no switchport ip address 10.1.3.3 255.255.255.0 ip authentication mode eigrp 1 md5 ip authentication key-chain eigrp 1 EIGRP_KEY end
認証キーの設定は、show key chainで確認。
R3#show key chain Key-chain EIGRP_KEY: key 1 -- text "Cisco" accept lifetime (always valid) - (always valid) [valid now] send lifetime (always valid) - (always valid) [valid now]
不適切なACL
show ip intraface INT_NAMES でインターフェースに適用されているACLを確認。
show access-list でACLの内容を確認。
タイマー
show ip eigrp interface detail INT_NAMES で確認。
R3#sh ip eigrp interfaces detail e0/0 EIGRP-IPv4 Interfaces for AS(1) Xmit Queue PeerQ Mean Pacing Time Multicast Pending Interface Peers Un/Reliable Un/Reliable SRTT Un/Reliable Flow Timer Routes Et0/0 1 0/0 0/0 8 0/2 50 0 Hello-interval is 5, Hold-time is 15 Split-horizon is enabled Next xmit serial <none> Packetized sent/expedited: 10/0 Hello's sent/expedited: 666/3 Un/reliable mcasts: 0/9 Un/reliable ucasts: 13/4 Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0 Retransmissions sent: 2 Out-of-sequence rcvd: 0 Topology-ids on interface - 0 Authentication mode is md5, key-chain is "EIGRP_KEY" Topologies advertised on this interface: base Topologies not advertised on this interface:
ルーティング情報が正しくない
考えられる原因
- networkコマンドの不備
- 想定外のルートを学習している
- ルートフィルタリング
- スプリットホライズン
原因別確認コマンド
networkコマンドの不備
- show run int INT_NAMES
- show ip protocols
- show ip eigrp interface
想定外のルートを学習している
再配送(redistribute)などにより、想定外にAD値が高い/低いルートを学習している場合がある。
- show ip eigrp topology
- show ip route eigrp
ルートフィルタリング
- show ip protocols
- show running-config | se router eigrp
スプリットホライズン
スプリットホライズンが有効になっているためにルートを学習できない場合がある。
(DMVPNのようなネットワーク設計の場合など)
スプリットホライズンが有効になっているかは、show ip interface INT_NAMESで確認できる。
参考資料
書籍
動画
【CCNP ENARSI】EIGRP
個人的な学習メモです。試験の範囲を網羅しているわけではないので注意してください。
網羅的に学習したい場合は、参考資料欄の情報を確認してください。
EIGRP(基本)
特徴
- Cisco独自のプロトコル(だったが現在はRFC 7868として公開されている)
- 拡張ディスタンスベクタ型のプロトコル。
- コンバージェンスが速い(DUALというアルゴリズムを使用)
- メトリックに帯域幅、遅延、信頼性、負荷、MTUを使用
- IPv4だけではなくIPv6など複数のプロトコルをサポート
- クラスレスルーティングプロトコルで自動集約をサポート
- 「ネイバーテーブル」、「トポロジーテーブル」、「ルーティングテーブル」の3つを使用
- 手動によるルート集約をどのルータでも設定可能(OSPFとの違い)
- 不等コストロードバランシングをサポート(OSPFとの違い)
用語
用語 | 説明 |
---|---|
サクセサ | 最適ルートのネクストホップルータのこと。FDが最小となる。 |
フィージブルサクセサ | フィージブル条件を満たすバックアップルータ。ルーティングループが発生しないことが保証されるのでバックアップルートになる |
サクセサルート | 宛先NWに対して最小パスメトリックとなるルート。最適ルート。 |
FD(Feasible Distance) | 自ルータから宛先NWまでの合計メトリック。 |
RD(Reported Distance) | ネイバールータから宛先NWまでの合計メトリック |
フィージブル条件 | フィージブルサクセサになるための条件。「FD > RD」を満たしていること。 |
EIGRPで使用されるパケット
パケット名 | 説明 |
---|---|
Helloパケット | ネイバーの検出とネイバーがいなくなった時の検出に使用される。 |
Updateパケット | 経路情報の更新のために使用される。 |
Queryパケット | 経路情報を問い合わせるために使用される。 |
Requestパケット | 1つ以上のネイバーから特定の情報を取得するために使用される。 |
Replyパケット | Queryパケットの応答として使用される。 |
ネイバー形成に必要なパラメータ
次のパラメータが一致している必要がある。
- メトリックのK値
- サブネット
- AS(自律システム)番号
- 認証パラメータ
メトリックの計算(計算式とK値の初期値)
メトリック = [ K1 * 帯域幅 + (K2 * 帯域幅) / (256 - 負荷) + K3 * 遅延] * 256
K値のデフォルトは、K1 = 1、K2 = 0、K3 = 1、K4 = 0、K5 = 0
経路集約
EIGRPでは経路の自動集約と手動集約の両方を使用可能。
自動集約
IOSのバージョンによりデフォルトで自動集約有効なのか無効なのかが変わる。
※IOS15.0以降からデフォルトで自動集約無効(no auto-summary)
自動集約が有効な場合は、クラスフルなネットワーク境界で自動集約される。
手動集約
全ルータのインターフェースで設定可能。
(比較:OSPFの場合は、ABRまたはASBRのみで設定可能)
認証機能
設定モードにより設定できる暗号化方式が決まっている。
Classicモードでは、MD5のみ対応。NamedモードではMD5に加えてSHA256にも対応。
ルータID
- EIGRPルータを一意に識別するためのID(32ビット)
- ループ防止メカニズムとして使用される
- 手動で設定していない場合、ループバックインターフェースで最大の IPv4アドレスが使用される ※ループバックインターフェースがない場合は、アップ状態の物理インターフェースでIPv4アドレスが最大のものが使用される
その他の機能など
パッシブインターフェース
パッシブインターフェースの設定をすることでルーティングアップデートを制御できる。 そのインターフェースで Helloパケットの送信をやめるだけでなく、Helloパケットの着信も無視するためネイバーにならなくなる。
スタブルーティング
ハブ&スポーク構成で、ハブ側のNWがダウンした場合でもデフォルトではスポーク側のルータに対してQueryパケットを送信する。
(フィージブルサクセイサが存在しない場合の話)
スポーク側に別の経路を問い合わせたところで「経路無し」の応答が返ってくるだけなのでQueryパケットを送信するだけ無駄。
このような場合、スポーク側のルータでスタブルーティング設定をしておくと、そのことをネイバーに通知するためハブ側のルータはスポーク側のルータにQueryパケットを送信しなくなる。
スタブルーティングで設定できるオプション
パケット名 | 説明 |
---|---|
connected | ルータに直接接続しているルートのみアドバタイズする。 |
receive-only | ルーティングアップデートの受信のみ行う。 |
redistributed | 再配送された外部ルートのみアドバタイズする。 |
static | スタティックルートの情報のみアドバタイズする。 |
summary | 集約ルートのみをアドバタイズする。 |
スプリットホライズン
経路情報を受信したインターフェースからは、同じ経路情報を送信しない機能。
DMVPNでNBMA( Non-Broadcast Multiple Access )ネットワーク構成となっている場合など、スプリットホライズンを無効にしないとEIGRPでルートをアドバタイズできないケースがある。
不等コストロードバランシング
等コストロードバランシング機能(デフォルトで4ルートまで)だけではなく、不等コストロードバランシング機能も備えている。
varianceの値を設定することで、最適経路であるサクセサの何倍のFD値までをルーティングテーブルに登録するか決めることができる。
ただし、フィージブルサクセサになっていないルータは倍率以下のFD値でもルーティングテーブルの登録対象外になる。
障害時の動作
障害の検知
Helloタイマー:5秒間隔で送信(低速インターフェース(T1以下)では 60秒間隔)
Holdタイマー:15秒(低速インターフェースでは 180秒)
Holdタイマーが 0に達するとネイバーが到達不能と判断する。
フィージブルサクセサが存在する場合は、即座にフィージブルサクセサの経路に切り替える。
存在しない場合は、全ネイバーに宛先NWへの経路を問い合わせるためのQueryパケットを送信する。
SIA(Stack in Active)
前述のQueryパケットを全ネイバーに送信したあと、ネイバーからのReplyパケットにより経路の再計算を行う。
1台でもReplyパケットを送り返してこないネイバーがいた場合、再計算を行うことができず経路がActive状態のままになってしまう。
この状態を SIA(Stack In Active)という。
SIAであると判断してからデフォルトでは3分間応答がないと、そのルータとのネイバー関係を解除する。
EIGRP(設定)
設定モード
ClassicモードとNamedモードの 2通りの設定方法がある。
Classicモードは、設定箇所が routerコンフィグレーションモードとインターフェースコンフィグレーションモードに分かれていてわかりにくかった。
Namedモードでは、1箇所ですべて設定できるようになっている。
EIGRP基本設定
設定例の英大文字の箇所は、各設定値に置き換えが必要。
また、モードへの移行部分は省略している場合あり。
Classicモードの例 ----------- router(config)# router eigrp ASN router(config-router)# network INTERFACE_IP [WC-MASK] router(config-router)# eigrp router-id A.B.C.D router(config-router)# metric weights TOS K1 K2 K3 K4 K5 ※認証設定(key chain設定は別途必要) router(config)# interface INT_NAME router(config-if)# ip authentication mode eigrp ASN md5 router(config-if)# ip authentication key-chain CHAIN_NAME Namedモードの例 ------ router(config)# router eigrp NAME router(config-router)# address-family ipv4 unicast autonomous-system ASN router(config-router-af)# network INTERFACE_IP [WC_MASK] router(config-router-af)# eigrp router-id A.B.C.D router(config-router-af)# metric weights TOS K1 K2 K3 K4 K5 ※認証設定(MD5認証の場合は別途key chain設定が必要。Sha254の場合はパスワード直接入力。 router(config-router-af)# af-interface {INT_NAME | default } router(config-router-af-interface)#authentication mode md5 router(config-router-af-interface)#authentication key-chain CHAIN_NAME or router(config-router-af-interface)#authentication mode hmac-sha-256 PASSOWRD router(config-router-af-interface)#exit-af-interface router(config-router-af)# exit-address-family
EIGRPその他の設定
パッシブインターフェース設定
Classicモードの例 ----------- router(config-router)# passive-interface INT_NAME or router(config-router)# passive-interface default router(config-router)# no passive-interface INT_NAME Namedモードの例 ------ router(config-router-af)# af-interface {INT_NAME | default } router(config-router-af-interface)#passive-interface router(config-router-af-interface)#exit-af-interface ※パッシブインターフェース設定の確認 router# show ip protocols router# show ip eigrp interfaces
ルート集約
Classicモードの例 ----------- router(config)# interface INT_NAME router(config-if)# ip summary-address eigrp ASN X.X.X.X/YY Namedモードの例 ------ router(config-router-af)# af-interface INT_NAME router(config-router-af-interface)# summary-address X.X.X.X/YY router(config-router-af-interface)#exit-af-interface
スタブルーティング
オプション無しで設定した場合は、connectedとstaticだけが有効になる。
receive-onlyだけは他のオプションと一緒に指定することができない。
Classicモードの例 ----------- router(config-router)# eigrp stub [ connected | receive-only | redistributed | static | summary] Namedモードの例 ------ router(config-router-af)# eigrp stub
スプリットホライズン
Classicモードの例 ----------- router(config)# interface INT_NAME router(config-if)# no split-horizon Namedモードの例 ------ router(config-router-af)# af-interface INT_NAME router(config-router-af-interface)# no split-horizon router(config-router-af-interface)#exit-af-interface
不等コストロードバランシング
Classicモード ------ router(config-router)# variance <倍率> Namedモード ------ router(config)# router eigrp NAME router(config-router)# address-family ipv4 unicast autonomous-system ASN router(config-router-af)# topology base router(config-router-af-topology)# variance <倍率>
Helloタイマー
Classicモード ------ router(config-if)# ip hello-interval eigrp ASN SEC router(config-if)# ip hold-time eigrp ASN SEC Namedモード ------ router(config-router-af)# af-interface {INT_NAME | default } router(config-router-af-interface)#hello-interrval SEC router(config-router-af-interface)#hold-time SEC router(config-router-af-interface)#exit-af-interface
K値の変更
Classicモードの例 ----------- router(config-router)# metric weights TOS K1 K2 K3 K4 K5 Namedモードの例 ------ router(config-router-af)# metric weights TOS K1 K2 K3 K4 K5
参考資料
書籍
動画
入門セキュリティコンテスト-ーーCTFを解きながら学ぶ実戦技術
CTFとは
Capture The Flagの略で、情報セキュリティ技術を競う競技。
CTFの種類
さまざまな種類があるが代表的なものは以下の2つ。
- クイズ形式(Jeopardy形式)
- 攻防戦形式(Attack & Defense形式)
著名なCTF
- DEF CON CTF
- picoCTF
- Google CTF
- SECCON
問題のジャンル
- Reversing(リバースエンジニアリング)
- Crypt(暗号関連)
- Forensics
- Web
- Network
- Pwnable(Exploit)
- Misc(雑多)
リバースエンジニアリング
SECCON 2018の「runme.exe」という問題が取り上げられている。
リバースエンジニアリング技術が問われ、逆アセンブラやデバッグなどを利用してい解析を行うので、低レイヤの知識が必要。
暗号
SECCON 2015の「Unzip the file」という問題が取り上げられている。
古典暗号や現代暗号の暗号アルゴリズムの知識が必要。
フォレンジック
SECCON 2018の「History」という問題が取り上げられている。
必要とされる知識が多岐にわたる。
各OSのファイルシステム、TCP/IPなどのネットワークなど。
Webセキュリティ
SECCON 令和CTFの「reiwaVote」という問題が取り上げられている。
Webアプリケーションとその周辺知識が必要。
ネットワーク
SECCON 2013の「Find the key!」という問題が取り上げられている。 パケット解析や各プロトコルの知識が必要。
Pwnable
SECCON 2017の「baby_stack」という問題が取り上げられている。 プログラミングの知識、プログラム解析のスキルが必要。
Misc
SECCON 2019の「Sandstorm」という問題が取り上げられている。
上記ジャンルに分類できない、その他雑多な問題。
感想など
私のような初心者でも、解説の文章を読めば何とか理解できるレベルの問題が取り上げられているので、タイトルどおりCTFの『入門』にぴったりの内容です。
今後の学習
以下で紹介する書籍で学習するのと、本書で紹介されていた入門者用のCTF(picoCTF)をやってみようと思う。
書籍紹介
私が持っている書籍の中から各ジャンルごとに役立ちそうなものを紹介します。
本書内に著者が「さらに勉強したい人に向けて」として各ジャンルのおすすめ書籍を紹介しているのですが、そこに記載されていたものと結構ダブってます。
Reversing(リバースエンジニアリング)
著者が紹介している書籍で私が所持しているものはなかったが、関連しそうな書籍を何冊紹介する。
以前からこの分野に興味はあったので、購入はしているがまだ読めてない。
リバースエンジニアリングツールGhidra実践ガイド (Compass Booksシリーズ)
Crypt(暗号関連)
こちらもかなり購入はしているがすべては読めてない。
読んだ中では、結城浩さんの「暗号技術入門 第3版」が分かりやすかった(著者のおすすめ本でもあります)
図解即戦力 暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書
現代暗号入門 いかにして秘密は守られるのか (ブルーバックス)
Forensics
おすすめ本として紹介されている「インシデントレスポンス 第3版」については、過去記事で読書メモを書いてます。 shin569.hatenablog.com
また、インシデントレスポンス関連では以下も評価が良いので購入してますがこちらは未読。
詳解 インシデントレスポンス ―現代のサイバー攻撃に対処するデジタルフォレンジックの基礎から実践まで
Web
おすすめ本として紹介されている 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 は、一度読んでるが完全には理解できてない。
CTFを実際に解きながら見返す感じで学習するのが良いと思う。
Network
一番業務で扱う分野に近いので、逆に紹介する書籍が難しい。
パケット解析という点だけに絞れば、著者がおすすめしている本もいいいが、
パケットキャプチャの教科書 (Informatics&IDEA)
もわかりやすかったのでおすすめ。
Pwnable(Exploit)
著者もおすすめしているが、
Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
は今まで読んできたセキュリティ関係の書籍の中で一番面白かった。
ただかなり前の書籍になるので今見ると少し内容が古くなっている部分があるかも。
プログラム例がperlで書かれてたりするので、pythonで書き直してみたら勉強になるかもしれません。
脆弱性診断スタートガイド第 2 版
基本
脆弱性診断とは
脆弱性を発見するためのテスト手法のこと。
脆弱性以外にセキュリティ機能の不足も発見することができる。
ペネトレーションテストとの違い
脆弱性を何か 1 つでも発見し、それを利用してデータを奪取したり管理者権限を奪取するなど、システムに侵入できるかを確認するのを「ペネトレーションテスト」という。
「脅威ベースペネトレーションテスト(Threat-LedPenetrationTesting:TLPT)」ともいう。
ペネトレーションテストを組織的に行うチームを「RedTeam」という。
脆弱性診断の対象
プラットフォームの脆弱性対策
対象
- OS(Linux、Windows など)
- Web サーバー(ApacheHTTPServer、MicrosoftIIS など)
- データベース(OracleDatabase、MicrosoftSQLServer など)
- 言語環境(PHP、Java など)
- アプリケーションサーバー(ApacheTomcat など)
- フレームワーク(RubyonRails、ApacheStruts など)
- ライブラリ(Angular、CGI.pm など)
- コンテンツの更新に利用するサービス(FTP、SSH など)
- Web サーバーの OS などのメンテナンスに利用するサービス(SSH など)
- データベース(OracleDatabase、MicrosoftSQLServer など)
対策すべき脆弱性
既知の脆弱性
→ 最新バージョンへアップデート
→ サポートが継続されているプロダクトへ移行設備の不備
→ セキュリティに関わる設定の見直し
→ 開発環境、本番環境での設定を一致させる
脆弱性以外のセキュリティ機能の不足
- 安全でないプロトコルの利用
- 脆弱なパスワードの使用
Web アプリケーションの脆弱性対策
Web アプリケーションを採用するのは主に 2 つのケースがある
既存プロダクトの脆弱性対策
既知の脆弱性
→ 最新バージョンへアップデート
→ サポートが継続されているプロダクトへ移行設備の不備
→ セキュリティに関わる設定の見直し
→ 開発環境、本番環境での設定を一致させる
新規開発または既存プロダクトを改修した Web アプリの脆弱性対策
- 適切なセキュリティ要件定義を行う
- セキュリティ要件定義に基づき、適切に設計して実装を行う
- セキュリティ要件定義通りに実装できているかテストを行う
- 脆弱性につながるバグがないかテストを行う
- 第三者が開発したシステムを受けいれる際に機能テスト・性能テストとともにセキュリティテストを行う
本書の脆弱性診断は上記新規開発または既存プロダクトを改修した Web アプリが対象
脆弱性診断士に必要な知識や技術
脆弱性診断士に求められる
脆弱性診断士(Web アプリケーション)スキルマップ&シラバスという資料が公開されている。
セキュリティ以外で脆弱性診断士に求められる知識
- Web アプリケーション開発に関する知識
- 診断対象システムに対する理解
Web アプリケーションへの攻撃とは
HTTP リクエストメッセージに攻撃コードを載せて行われる。 クエリ-やフォーム、HTTP ヘッダー、Cookie などを経由して送り込まれ、 Web アプリケーションに脆弱性があった場合は情報が盗まれたり、 権限が取られたりする
Web アプリケーションの攻撃パターン
能動的攻撃
→ 攻撃者が直接 Web アプリケーションに対してアクセスし攻撃コードを送るタイプの攻撃。
→SQL インジェクション、コマンドインジェクションなど受動的攻撃
→ 罠を利用してユーザに攻撃コードを実行させる攻撃。
→ クロスサイトスクリプティング、クロスサイトリクエストフォージェリなど
インジェクション
Web アプリケーションの出力処理に起因する脆弱性をついた攻撃
- SQL インジェクション(CWE-89)
- コマンドインジェクション(CWE-77)
- メールヘッダインジェクション
- HTTP ヘッダインジェクション
認証
- 認証回避(CWE-592)
- ログアウト機能の不備や未実装
- 過度な認証試行に対する対策不備・欠落(CWE-307)
- 脆弱なパスワードポリシー(CWE-521)
- 復元可能なパスワード保存(CWE-257)
- パスワードリセットの不備
セッション管理の不備
セッションフィクセイション(CWE-384)
→ 攻撃者が指定したセッション ID をユーザに強制的に使わせることができる脆弱性Cookie の HttpOnly 属性未設定
- 推測可能なセッション ID
情報漏洩
- クエリストリング情報の漏えい(CWE-598)
- キャッシュからの情報漏えい(CWE-524)
- パスワードフィールドのマスク不備(CWE-549)
- 画面表示上のマスク不備
- HTTPS 利用時の Cookie の Secure 属性未設定(CWE-614)
- HTTPS の不備
- 不要な情報の存在
その他
- 認可制御の不備
- クロスサイトリクエストフォージェリ(CWE-352)
- パストラバーサル(CWE-22)
- XML 外部エンティティ参照(XXE)(CWE-611)
- オープンリダイレクト(CWE-601)
- 安全でないデシリアライゼーション
- リモートファイルインクルージョン(CWE-98)
- クリックジャッキング(CWE-693)
脆弱性診断の流れ
- 診断前の準備
- 診断実施
- 診断実施後のアフターサポート
診断前の準備
- 診断対象の確認
- 実施内容の説明
- ヒアリング
- 環境・データ準備
- オンサイト作業環境の準備
- 禁止事項と免責事項
脆弱性診断の実施手順
- テストケース作成
- 脆弱性診断の実施
- 診断結果の検証
- レポート作成
自動診断ツールによる診断
得意とするのは
発見が難しい脆弱性は
- 認可制御の不備・欠落
- ジネスロジック上の問題
- メールヘッダインジェクション
- クロスサイトリクエストフォージェリ
- 人間の判断や操作が必要になるもの
- ゲームのような操作を伴うもの
- 脆弱性の発動に複数のパラメーターを利用するもの
- 一度しか実行できない機能
- 入力値の影響が次画面ではなく他の画面にでるもの 手動診断ツールによる診断
診断リストを使って行う
ヒント集
診断リストに記載されている「検出パターン」や「診断方法」だけでは発見できない脆弱性についてのヒント集
- 記号の挿入で挙動を確認
- パラメーターの値を変更
- ヌルバイト(%00)の挿入
- クロスサイトスクリプティングのさまざまなパターン XSS Filter Evation Cheet Sheet(https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet)
- セカンドオーダー SQL インジェクション
- Google Hacking Database(https://www.exploit-db.com/google-hacking-database/)
診断報告書の作成
報告書の記載事項
- エグゼクティブサマリー
- 詳細な報告書
診断報告書について
顧客に提出した診断報告書は下記のようなことに使われます。
- 発見した脆弱性やセキュリティ機能の不足などに対する検証用の資料
- 解決すべき課題の優先順位の判断材料・脆弱性の対処方法、回避方法の説明資料
- 想定されるリスクの明確化
- 顧客が開発や構築を外部に依頼している場合の説明資料
- 次回の脆弱性診断実施時の比較資料
報告書作成の流れ
- 材料を集める
- 報告書の作成
- 内部レビュー
- 納品/報告会
報告書の記載事項
- 表紙 タイトル、日付、報告者(会社名、部署名、担当者名など)
- 目次
- イントロダクション
- 診断実施概要
- 診断結果
- 診断結果の総合評価 - 個別の脆弱性の報告
関係法令とガイドライン
関係法令
セキュリティに関する基準
- PCI DSS → クレジットカード情報および取引情報を保護するためにクレジットカード会社の国際ブランドが共同で策定。