第5回 OSPFトポロジでまさかのループが発生!? その理由は
(OSPF:解決編)


草場 英仁
三井物産セキュアディレクション株式会社

中村 光宏
サイバーディフェンス研究所
上級分析官
2008/7/16
今回の概要:
前回、大規模ネットワークに新規ルータを増設することを課せられた、新人の坂本さん。さっそく、ネットワークを切断してしまったようです。無事に任務を遂行できるのか?

 調査開始 

 ルータの設定を坂本さんに任せて、席を立ったのはさすがにまずかったかな……。内心しくじったと思いつつ、作業中の新しいプリンタの設定をひとまず中止して、自分のデスクに戻ってきました。目に飛び込んできたのは、かかってくる電話の応対に追われている坂本さんの姿。

「せ、せんぱい〜、ごめんなさい。助けて!」

 やれやれ、僕が戻って確認する前にルータをつないでしまったようです。

「ここはひとまずいいから、事態を収拾しよう。何をどうしたか教えて」

「は、はい〜」

2人でサーバ室へ向かいます。

 一通り坂本さんの設定内容を教えてもらいましたが、聞いた限りでは問題なさそうです。ここはWiresharkでネットワークの状況を見た方が早いでしょう。ただし今回は、キャプチャを開始する前に収集するプロトコルをOSPFのみに絞りたいところです。以下のフィルターを登録しておきます。

画面1 “proto 89”と入力。OSPF用に確保されているプロトコル89番

 さて、キャプチャ開始です。すぐに原因を突き止められるといいのですが。

画面2 キャプチャを開始

「おっと。うわ、なんでこんなことに」

 斉藤君の独り言Tips:OSPFのルータ間の監視

 今回は複数の機器との通信が発生しているため、キャプチャデータを1つ1つ追うのではなく、ある機能を使って解析することにしましょう。

 以下のやり方を坂本さんへわかりやすく説明します。

  1. キャプチャする
  2. キャプチャを停止する
  3. メニューバー Statistics
  4. Flow Graphを選択
画面3 Flow Graphを選択

 以下のような図が出てきたら成功です。

画面4 このようなグラフが表示されれば成功

 普通であれば、OSPFはルータ間でhelloパケットのみ交換する程度ですが、helloに加えて、LS Acknowledge、および LS Updateが大発生しています。どうやら、LS_Updateがバックボーン以外のルータ2台から、LS_Acknowledgeが3台すべてのルータから途切れることなくフラッディングしているようです。これが長時間続くことは正常ではありません。OSPFが全く収束できていないことを意味しています。

 このように、Flow Graphという機能を使えば、複数のルータ(複数のIP)とのやりとりや順序が簡単に分かります。TCPの3wayハンドシェイクがどうやって行われているかなどの学習にも便利です。

 今回はこの図を見ることで、たくさんのHello Packetを受け取っているLS Updateが大量発生していることが一目で分かります。

 たくさんのパケットを俯瞰(ふかん)する際に非常に便利な機能です。

 「坂本さん、つないでしまった新しいルータを外してみて」

 「だ、大丈夫ですか……」

 こわごわ坂本さんがルータを切断します。

 すると、Wiresharkでも、LS_Acknowledgeが見る間になくなります。LS_Updateが正常に宣言され、helloパケットを交換するのみに症状が変わり、ネットワークが復旧しました。OSPFの収束が正常に終わったようです。

画面5 ネットワークが復旧した

 解析開始

 「取りあえずネットワークは復旧したよ」

 こう告げると坂本さんは明らかにホッとした顔をしています。

 でも、現状復帰はしましたが、ここからがトラブルシューティングの本題です。坂本さんを横に座らせて、先ほどまで大発生していたOSPFのパケットを分析することにしました。

 まずは情報の整理です。Wiresharkでは、以下の3つのタイプのパケットを収集できました。

  1. LS_Hello(タイプ1)……OSPFネイバルータ(近隣ルータ)の確立、継続
  2. LS_Update(タイプ4) ……リンクステート情報が含まれる
  3. LS_Acknowledge(タイプ5) ……タイプ4やタイプ2受信の応答

 以上、それぞれの仕様に基づいて考えると、LS_Updateあたりを見ることで、何らかの情報が得られそうです。2つのルータが吐いている、LS_Updateパケットを詳細に見てみることにします。

画面6 Router_2 側

 Wiresharkでは、OSPFヘッダフィールドと、LS Updateパケットフィールドを視覚的に確認することができます。ここでは、最も基本的な部分に着目して確認しました。

画面7 Router_3 側

 Router_3 側でも、同様の部分を確認しました。よくよく見比べてみると……。

「ん! Router_2側のOSPFルータIDとアドバタイジングルータの値が同じじゃないか!」

1/2

Index
OSPFトポロジでまさかのループが発生!? その理由は
Page1
調査開始
解析開始
  Page2
原因特定と対処
確認と補足
エピローグ
  前編へ
大規模ネットワークに新規ルータを増設する方法(問題提起編)

Wiresharkでトラブルハック 連載インデックス


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間