OSPFのネイバーを張るコマンドのおさらい

PAK85_desk15215645-thumb-1000xauto-19523

OSPFのネイバーを張るコマンドの説明です。主にCCNA/CCNPのチャレンジャー対象です。

CCIE勉強中の方には分かりやすすぎですかね?

隣接ルーターでネイバーを張るコマンドについて説明します。

スポンサーリンク
レクタングル大

OSPFのネイバーを張るコマンドは2種類ある

OSPFはLink-Stateタイプのルーティングプロトコルです。隣接ルーターとネイバーを張る事によって、ルート(厳密にはノードのリンク情報)のやり取りをします。

つまり、経路の交換をする為には、隣接ルーターとネイバーを張る事が大前提です。(ここではDR/BDRとかFullとか2wayとかは一旦置いときます)

ネイバーを張る方法としては、以下の2つのコマンドがあります。

  • インターフェースレベルでのip ospfコマンド
  • router ospfレベルでのnetworkコマンド

恐らく、このブログを見てくださっている方ならnetworkコマンドは知っていると思いますが、もしかしたらCCNA勉強中の方はip ospfコマンドは知らないかもしれません。

このコマンドの違いは何でしょうか?

コマンドでやりたい事、結果は同じ

結論から言うと、どちらのコマンドを投入しても、結果は同じです。(Secondaryアドレスの広報など非常にマイナーな違いはありますが、CCNA/CCNPではそれ程意識しないで良いでしょう)

正確には、結果は同じに出来るという表現が正しいかもしれません。

そもそも、上記の2つのコマンドは、以下の目的で使用します。

  • 特定のインターフェースからネイバーを張るパケットの送出を開始する
  • 特定のインターフェースのプレフィックスを広報する(OSPFの場合は、厳密には、自ノードにそのインターフェースがリンクとして存在する事を広報する)

どちらを利用してもこの目的を達成する事には変わりません。送出するパケットの内容は変わりません。

目的が同じ、送出するパケットの内容も変わらない、では何故2つ違うコマンドがあるのでしょうか?

実際に例を挙げて考えてみましょう

今回は以前紹介した以下のトポロジを利用します。

topology1_trim

  • 上のR21/R2間でネイバーを張ってみます。
  • 話をシンプルにするために、Areaは0だけにしてみます

R2でnetworkコマンドを使ってみる

R2の設定ではrouter ospfレベルでのnetworkコマンドを使ってみます。

まずは、router ospfです。

networkコマンドは、networkの後に、設定するインターフェースの持っているIPアドレスを指定します。

例えば、R21側のインターフェース(f0/0)に設定されているIPアドレスは「10.20.1.2」なので、以下のコマンドを実行します。

ちなみに、上記の「0.0.0.0」はワイルドカードです。この辺は当記事では深く扱いません(Google先生に聞いてください)が、これを調整する事で広報するインターフェースの範囲を指定する事が出来ます。

例えば「network 10.0.0.0 0.255.255.255 area 0」とかしたら

  • 10.0.0.0-10.255.255.255のIPアドレスが設定されているインターフェース

が全てネイバーを張る(そして、OSPFの広報するリンクの対象)となります。

networkコマンドでどのインターフェースが設定の対象となっているか(ネイバーを張ろうと努力しているか)は以下のコマンドで確認できます。

上記例だと、想定通りFa0/0(10.20.1.2を持っている)が対象となっていますね。

では、次にR21の設定をしてみましょう。

R21でip ospfコマンドを使ってみる。

R21の設定ではインターフェースレベルでip ospfコマンドを使用してみます。

R21のR2向きインターフェースはF0/0です。

なので、F0/0に対して設定を行います。

お!コマンドを実行した直後に、ネイバーが張れたメッセージが表示されました!

R2側の設定は既に終わらせていたので、ネイバーが張れたのですね!

念のため、確認コマンドでもネイバーが張れているかチェックしてみましょう(sh ip ospf neighbor)

問題なさそうです。

以上でネイバーを張るまでの操作が終了しました。

networkコマンド、ip ospfコマンド、両方の組み合わせでも問題なくネイバー張れることが実証されました。

では、R2側のルーティングテーブルを見てみましょう。

ネイバーが張れているのに、R21のLoのルートが見えない

R2のルーティングテーブルは以下の通りです

あれ?R21のLoのルートがありませんね。

上記だとわかりずらいので、OSPF経由で取得したルートだけを見てみましょう。

なにもありませんね・・・・ 何故でしょうか?

何故なら、R21のLoはnetworkコマンドでもip ospfコマンドでも設定していないですよね。

繰り返しになりますが、上記コマンドの目的は

  • 特定のインターフェースからネイバーを張るパケットの送出を開始する
  • 特定のインターフェースのプレフィックスを広報する(OSPFの場合は、厳密には、自ノードにそのインターフェースがリンクとして存在する事を広報する)

この2つがあります。

Loを使用してネイバーを張る必要がなくても、そのルートを広報したかったら、F0/0と同じようにnetworkコマンド化ip ospfコマンドで設定が必要です。

なので、Loに対して設定してみましょう。(3つあるのでちょっと面倒くさい)

はい、無事設定が終わりました。R2のルーティングテーブルを再度見てみましょう。

お!R2のLoのルートが登録されています。試しに、Lo2(10.20.2.21)に対してPINGしてみましょう。

問題なく疎通できましたね。

テストを踏まえて、2つのコマンドの違いを考えてみる

上記の結果、2つのコマンドの使い分けが分かってきたと思います。

インターフェースレベルでのip ospf コマンドを利用するとき

設定するインターフェースが明確な時は、このコマンドを使用した方が安全です。

このコマンドの場合は、インターフェースのIPアドレスを変えても、設定自体は有効なままです。

一方、大量のインターフェースに対して設定するのはちょっと面倒くさいですね。

router ospfでnetworkコマンドを利用するとき

networkコマンドだとワイルドカードが使えるので、1つのコマンドで同時に複数のインターフェースに対して設定を有効にすることが出来ます。

例えば「network 0.0.0.0 255.255.255.255 area 0」とかすると、全インターフェースをarea0で設定できます。これは便利です。

一方、OSPFの対象にしたくないインターフェースを誤って有効にしてしまう恐れもあります。

先の例だと、R21に「network 10.20.0.0 0.0.255.255 area 0」とすると、F0/0,Lo2,Lo3,Lo4のインターフェース全てでOSPFが有効になります。で、その後「10.20.5.21 255.255.255.0」とかのインターフェースをLo5として新規作成したらどうなるでしょう。自動的にOSPFが有効になってしまいますよね。この自動的にOSPFが有効になる状況は、場合によっては好ましくない状況かもしれません。

まとめ

インターフェースレベルのip ospfコマンド、router ospfでのnetworkコマンドにはそれぞれ一長一短がある事が分って頂けたかと思います。

その時その時の要件に合わせて使い分けれるようにしましょう。CCNA/CCNPのシミュレーションに対しても、違いが分かればシミュレーション対策が出来ると思います。

勉強を再会する方へ
スポンサーリンク
レクタングル大
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">