CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。
前回投稿記事
こちらの「OSPF【OSPFの概要】」投稿記事の続きです。
2.OSPFの設定と確認
2-1.OSPFの設定
■2-1-1.ワイルドカードマスク
OSPFでは、動作を有効にしたいインターフェイスを指定する際に ワイルドカードマスクという
ものを使用します。ワイルドカードマスクは、直前に指定されたセットとなっているIPアドレスの
どこまでを比較の対象とするのかを指定する為に使用されます。
直前に指定されたIPアドレスのうち、条件とする部分を 0、任意の値で良い部分を 1で
指定します。
具体的に確認してみましょう。
例えば「172.16.1.0/24」のネットワークに属するインターフェイスでOSPFの動作を有効に
したい場合、172.16.1.0/24のネットワーク内に属するIPアドレスは、172.16.1.0〜172.16.1.255
ですので、最初の3オクテットの 172.16.1が条件とする部分で、最後の1オクテットは任意である
IPアドレスとなります。
ワイルドカードマスクは、IPアドレスのうち、条件とする部分を 0、任意の値で良い部分を 1とする為、
ワイルドカードマスクは、「0.0.0.255」となります。よって、IPアドレスとワイルドカードマスクは、「172.16.1.0 0.0.0.255」と指定します。
##### ■2-1-2.OSPFの有効化 ダイナミックルーティングを行うには、ルータでOSPFを有効化する必要があります。 OSPFを有効化するには、グローバルコンフィギューレションモードで 次のrouter ospfコマンド を実行します。
(config)# router ospf <プロセスID>
OSPFは1台のルータで、複数のOSPFプロセスを起動することができます。
その際に他のプロセス区別する為にプロセスIDを指定する必要があります。
プロセスIDは、1 ~ 65,535の値を指定可能です。
このプロセスIDはローカルルータのみで使用する値であるため、ネイバールータとプロセスIDを
一致させる必要はなく、範囲内のいずれかの値を指定しておけば問題ありませんが、
分かりやすい設計/管理という観点でネイバールータとプロセスIDは同じの方が望ましいです。
コマンドを実行するとルータコンフィギューレションモードに移行し、
プロンプトが「(config-router)#」となります。
##### ■2-1-3.インターフェイスの指定 インターフェイスでOSPFを有効にするには、ルータコンフィギューレションモードで 次の networkコマンドを実行します。
(config-router)# network < IPアドレス > < ワイルドカードマスク > area < エリアID >
<エリアID>には、有効にするインターフェイスが所属するエリア番号を指定します。
インターフェイスでOSPFを有効にすると、Helloパケットを送信し始めます。また、
そのインターフェイスに関する LSAを通知します。
また、IOSのバージョンによっては、インターフェイスコンフィギューレションモードで
次の ip ospf areaコマンドを実行する事で有効にする事も出来ます。
(config-if)# ip ospf < プロセスID > area < エリアID >
このコマンドではインターフェイス事にOSPFを有効にする事が出来ます。
<プロセスID>は、どのプロセスを起動させるかを指定します。
※ IPアドレスを「0.0.0.0」、ワイルドカードマスクを「255.255.255.255」にすると
IPアドレスとしてどのような値でもかまわないという意味になり、全てのインターフェイスで、
OSPFが有効になります。
##### ■2-1-4.パッシブインターフェイスの設定 パッシブインターフェイスの設定をする事で、OSPFを動作させる必要があるものの Helloパケットがを送信する必要がないインターフェイスから、Helloパケットが送信されなく なります。
パッシブインターフェイスの設定するには、ルータコンフィギューレションモードで、
次の passive-interfaceコマンドを実行します。
(config-router)# passive-interface < インターフェイス >
##### ■2-1-5.ルータIDの指定 OSPFでは、各ルータを識別する為にルータIDが必要になります。 ルータIDは設定しなくても、IPアドレスが設定されていればそこから自動で設定します。 しかし、手動で設定したい場合は、ルータコンフィギューレションモードで、 次の router-idコマンドを実行します。
(config-router)# router-id < ルータID >
<ルータID>には、32ビットの値をIPアドレスと同じ形式で指定します。
また、手動で設定していない場合は、ループバックインターフェイス、物理インターフェイスの順で、
IPアドレスから設定されます。
ループバックインターフェイスの作成は、グローバルコンフィギューレションモードで、
次の interface Loopbackコマンドを実行します。
(config)# interface Loopback <番号>
<番号>には、0 ~ 2,147,483,647の値を指定します。作成したインターフェイスには、
IPアドレスを設定します。
またルータID設定した後、再度設定変更するには、
router-idコマンドで再設定した後、再起動する必要があります。
再起動のコマンドは、特権EXCEモードで、次の clear ip ospf processコマンドを
実行します。
# clear ip ospf process
##### ■2-1-5.OSPFの設定の流れ
(config)# interface Loopback 0 // ループバックインターフェイスの作成
(config-if)# ip address 10.10.10.1 255.255.255.255 // IPアドレスの設定
(config-if)# exit
(config)# router ospf 10
(config-router)# network 192.168.100.0 0.0.0.255 area 0 //インターフェイスでOSPFの有効化
(config-router)# network 172.16.10.1 0.0.0.0 area 0 //インターフェイスでOSPFの有効化
※ ワイルドカードマスクを、「0.0.0.0」に指定すると全てのビットを条件とする為、
IPアドレスそのものを指定します。
2-2.OSPFの設定の確認
■2-2-1.ネイバーの確認
OSPFでは、ネイバーとして隣のルータを認識しないとLSDBの同期を始めません。
なので、まずネイバーテーブルの確認をします。ネイバーテーブルを確認するには、
特権EXCEモードで、次の show ip ospf neighborコマンドを実行します。
# show ip ospf neighbor
show ip ospf neighborコマンドの実行結果を確認していきます。
項目 | 説明 |
---|---|
①Neighbor ID | 認識しているネイバーのルータID |
②Pri | ネイバーのルータプライオリティ |
③State | 隣接関係を表す。「FULL」または「2Way」と表示。 / の後ろはDR、BDR、DROTHERかそれ以外(-)が表示される |
④Dead Time | 後何秒間、Helloパケットが到達しなかったらネイバーダウンとみなすかを表す |
⑤Address | ネイバーのIPアドレス |
⑥Interface | 隣接関係を結んだインターフェイス |
show ip ospf neighborコマンドでネイバーテーブルを確認出来ますが、自身のルータ情報ではなく、 隣接するネイバーのルータの情報である事に注意。
##### ■2-2-2.LSDBの要約情報の確認 LSDBの要約情報であるトポロジテーブルを確認します。 特権EXCEモードで、次の show ip ospf databaseコマンドを実行します。
# show ip ospf database
詳細は、CCNA試験の範囲外なので割愛します。
※興味がある方はOSPFデータベースの概要と読解という記事参照して見て下さい
##### ■2-2-3.ルーティングテーブルの確認 OSPFでルートを学習出来ているかどうかの確認をするには、 特権EXCEモードで、次の show ip routeコマンドを実行します。
# show ip route
show ip routeコマンドの実行結果を確認していきます。
項目 | 説明 |
---|---|
① | ルートの情報源。「O」であることからOSPFにより宛先ルート |
② | 宛先ネットワーク。 |
③ | アドミニストレーティブディスタンス。OSPFの場合はAD値が「110」。 |
④ | OSPFの場合、メトリック値はコスト |
⑤ | ネクストホップアドレス。 |
⑥ | 宛先ルートを受信してから経過時間。 |
⑦ | 宛先ネットワークに転送するための出力インターフェース。 |
##### ■2-2-4.OSPFのプロトコルの確認 OSPFのプロトコルの確認をするには、 特権EXCEモードで、次の show ip protocolsコマンドを実行します。
# show ip protocols
show ip protocolsコマンドの実行結果を確認していきます。
項目 | 説明 |
---|---|
①Routing Protocol | 通信プロトコル |
②Router ID | ルータID |
③Number of area | このルータの所属するエリアは1つで標準エリアに接続していることを表示。スタブエリア、NSSAエリアには所属なし。 |
④Maximum path | 等コストロードバランシングの数 |
⑤Routing for Networks | 定義したnetworkコマンドの情報を表示 |
⑥Reference | コスト計算式の分子の値 |
⑦Routing Information Sources | エリア内でLSAを交換しているルータの情報を表示 |
⑧Distance | アドミニストレーティブディスタンス値 |
##### ■2-2-5.インターフェイスの確認 OSPFが動作しているインターフェイスの情報を確認するには、 特権EXCEモードで、次の show ip ospf interfaceコマンドを実行します。
# show ip ospf interface [<インターフェイス>]
インターフェースの所属エリア、ネットワークタイプ、コスト値、Hello/Deadタイマー間隔を確認できます。
例えば、Fa 1 のOSPFの動作状況を確認したい場合は、下記のように入力します。
# show ip ospf interface FastEthernet 1
show ip ospf interfaceコマンドの実行結果を確認していきます。
項目 | 説明 |
---|---|
① | このインターフェースのIPアドレスと、インターフェースの所属エリア ※1 |
② | このルータのOSPFプロセスID、ルータID、このインターフェースのネットワークタイプとコスト値 ※2 |
③ | このインターフェースのプライオリティ値及びDR/BDR/DROTHERなのかを示す |
④ | このインターフェースのセグメント上のDRのルータIDとIPアドレス |
⑤ | このインターフェースのセグメント上のBDRのルータIDとIPアドレス |
⑥ | このインターフェースのHelloタイマー、Deadタイマー、Waitタイマー、Retransmitタイマー ※3 |
⑦ | このインターフェースのセグメントにおけるネイバー関係の数、アジャセンシ―関係の数 |
⑧ | アジャセンシー関係が確立されたネイバールータのルータIDと、ネイバールータがDRであることの情報 |
※1 エリアIDやサブネットマスクが対抗ルータと異なっているとネイバーにはなりません
※2 ネットワークタイプが「ブロードキャストマルチアクセス」の場合、「BROADCAST」と表示さ、
ネットワークタイプが「ポイントツーポイント」の場合、「POINT_TO_POINT 」と表示される。
※3 これらの値が隣接ルータとずれていると隣接関係が築けません
#### 2-3.OSPF関連のパラメータの調整
■2-3-1.ルータプライオリティ
マルチアクセス環境では、DRとBDRを選択します。その際に比較されるのが、
ルータプライオリティとルータIDです。
● ルータプライオリティの変更
ルータプライオリティを設定するには、インターフェイスコンフィギューレションモードで、
次の ip ospf priorityコマンドを実行します。
(config-if)#ip ospf priority <ルータプライオリティ値>
<ルータプライオリティ値>のデフォルト値は 1です。変更したい場合は、0 ~ 255の値を
指定します。0を設定すると、DR及びBDRに選出されなくなります。
ルータプライオリティを変更する事で、意図するルータにDRの役割を持たせる事が出来ます。
● ルータプライオリティの変更の注意点
例えば、既にDRに選定されているルータがあり、ip ospf priorityコマンドを使用して、
ルータプライオリティ値を設定して新たに別のルータをDRを選定しようとした場合、
DRの変更されない可能性があります。
理由は、既にDRとして選定されているルータが稼動している為です。
DRが頻繁に変更されるとそのたびにマルチアクセスネットワーク上の他のルータとアジャセンシーを
確立しなおさなければいけないので、なるべくDRは変更されないように動作しているからです。
なので、プライオリティの高いルータが新たに追加されたとしても、DRは変更されません。
そこで、既にDRとして選定されているルータのプライオリティをip ospf priorityコマンドを使用して、
0に変更してしましょう。0を設定すると、DR及びBDRに選出されなくなります。
そうすれば、DRではなくなり、プライオリティの高いルータが新たにDRに選定されます。
また、OSPFのプロセスを再始動して、OSPFの動作を初めからやり直すというやり方もあります。
OSPFのプロセスを再始動するには、特権EXCEモードで、次の clear ip ospf processコマンドを
実行します。
# clear ip ospf process
プロセスを再始動すると、隣接するルータとネイバーの関係を一度解消し、
OSPFの動作を初めからやり直す事が出来ます。
##### ■2-3-2.OSPFのコスト
インターフェイスのコスト値を変更する事で、最適ルートを任意に変更する事が出来ます。
インターフェイスのコスト値を変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf costコマンドを実行します。
(config-if) #ip ospf cost <コスト値>
<コスト値>は、 1 ~ 65535 の範囲で指定する。
例えば、interface GigabitEthernet 0/1 にコスト値を 「10」 とする設定例は以下。
(config) # interface GigabitEthernet 0/1
(config-if) # ip ospf cost 10
##### ■2-3-3.帯域幅
コスト計算で使用する帯域幅を変更する事でもルートを変更する事が出来ます。
インターフェイスの帯域幅を変更するには、インターフェイスコンフィギューレションモードで、
次の bandwidthコマンドを実行します。
(config-if) #bandwidth <帯域幅>
<帯域幅>は、kbps単位で指定します。
※コスト値と帯域幅の変更を同時に行った場合、コスト値の変更で設定した値が優先されます。
その為、帯域幅でコスト値を変更する場合は、コスト値を変更するコマンドを先に実行しておく
必要があります。
bandwidthコマンドで帯域を変更する事で、コスト値を変更することも可能ですが、
このようなマイナー手法での設定変更は一般的に行いません。
##### ■2-3-4.Hellowインターバルの変更
OSPFは、Helloパケットによってネイバーを検出します。
Helloパケットを定期的に送信していて、ネイバーからのHelloパケットを受信出来ていれば、
そのネイバーが正常に動作していると判断します。
Helloパケットを送信する間隔をHelloインターバルと呼び、ネイバーがダウンしたとみなす時間が、
Deadインターバルです。これらの間隔はインターフェイス事に設定出来ます。
Helloインターバルを変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf hello-intervalコマンドを実行します。
(config-if) #ip ospf hello-interval <秒数>
Helloインターバルを変更すると、Deadインターバルは自動でその4倍の時間に設定されます。
● 下記が設定例
(config) #interface FastEthernet 0/0
(config-if) #ip ospf hello-interval 10
Helloインターバルを 10と設定したので、自動的にDeadインターバルは 40と設定される
Deadインターバルのみを変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf dead-intervalコマンドを実行します。
(config-if) #ip ospf dead-interval <秒数>
隣接するルータと、Helloインターバル、Deadインターバルが一致していないとネイバーとして認識 されない為、実行する際には注意が必要です。
##### ■2-3-5.MTUのミスマッチ検出機能の無効化 MTUのサイズが異なると、完全な隣接環境を築く事が出来ません。 その為、MTUを合わせるか、またはMTUの不一致を検出する機能を無効にする必要が、 あります。
MTUの不一致を検出する機能を無効にするには、インターフェイスコンフィギューレションモードで、
次の ip ospf mtu-ignoreコマンドを実行します。
(config-if) #ip ospf mtu-ignore
##### ■2-3-6.デフォルトルートの配布
● デフォルトルートの配布の設定
1台のルータにデフォルトルートの設定を行い、OSPFで他のルータに配布すると
いった方法を使う事があります。
デフォルトルートを他のルータに配布するには、ルータコンフィギューレションモードで、
次の default-information originateコマンドを実行します。
(config-router) #default-information originate [always]
alwaysのオプションを付けると、ルータにデフォルトルートの設定がされていなくても
デフォルトルートを他のルータに配布する事が出来ます。
つまり、デフォルトルートの設定を行う ip routeコマンドを行わなくても、デフォルトルートを
他のルータに配布するという事。
● デフォルトルートの配布の設定例
設定例1
RouterA(config) #ip route 0.0.0.0.0.0.0.0 FastEthernet 0/1
RouterA(config) #router ospf 10
RouterA(config-router) #network 192.168.1.0. 0.0.0.255 area 0
RouterA(config-router) #default-information originate
設定例2(alwaysのオプションを付けた場合)
RouterA(config)# router ospf 1
RouterA(config-router) #network 192.168.1.0. 0.0.0.255 area 0
RouterA(config-router)#default-information originate always
● 補足
ルーティングテーブルで確認した際、ルートの情報源が、「OE2」と表示されます。
「」は、デフォルトルートを表し、「E2」は、OSPF以外で設定されたルートがOSPFで構成
されているネットワーク内で伝えられた事を表します。このようなルートを外部ルートといいます。
参考記事 - ※[OSPF DR/BDR](https://server-network-note.net/2018/04/ospf-dr-bdr/)という記事参照 ※[OSPF - sh ip ospf neighbor / sh ip ospf database / sh ip route](https://www.infraexpert.com/study/ospfz11.html)という記事参照