動的ルーティングを実装する

この記事では動的ルーティングを実現するルーティングプロトコルである
OSPF (Open Shortest Path First) の設定を実施していきます。

ciscoのネットワークシュミレーションツール「Cisco Packet Tracer」を使って
ネットワークの構築をシュミレーションしていきます。ルータやスイッチに
加えてWEBサーバやDNSサーバを設置したり、PCを接続したりすることで
よりインターネットをイメージしやすい構成にしてみたいと思います。

下記のような構成を想定して、ネットワークの構築を行っていきます。
最終的なゴールは全PCからWEBサイトを閲覧できる状態を目指します。


OSPFとは

OSPFは隣接するルータにOSPF Helloパケットを送信することでネイバーを発見します。
OSPFネイバーを発見した後も定期的にOSPF Helloパケットを送信することでネイバーを
維持し続けます。そして各ルータは自らと直接されているルータの情報を保持しており
これを周囲のルータと交換します。このパケットは LSA (Link State Advertisement) と
呼ばれています。

ルータは他のルータからこのLSAを受け取ると、これらの情報を集約している自らの
データベースを更新します。このデータベースは LSDB と呼ばれており、各ルータは
LSAの送受信を繰り返すことでLSDBを同期しています。そしてこのLSDBを基に最適
な経路を導き出しています。

 

 

IPアドレスの決定

それでは早速 各ホスト と 各ルータ のインターフェースのIPアドレスを決めていきます。

このネットワークではクラスCのプライベートIPアドレスである
192.168.1.0/24 ~ 192.168.7.0/24」を使用したいと思います。

「いちくに いちろっぱ」が言いやすく覚えやすいので
このIPアドレスを使って構築していこうと思います。

各インターフェースには下記のようにアドレスを割り振ってみました。

 

 

ホスト部のビットが全て 0 または 1 のアドレスはそれぞれネットワークアドレス
ブロードキャストアドレスであるため機器に割り当てられないため注意が必要です。

 

機器の設置・結線

では機器を設置してみたいと思います。

Cisco Packet Tracer (以下、パケトレ)の下部からアイコンをドラッグアンドドロップして
機器を設置します。ディスプレイネームを構成図通りにリネームして下記の通りに設置が
完了しました。

 

続いて機器同士をケーブルでつないでいきます。

PCルータはポートにMDIポートを使用しており、ハブスイッチはポートに
MDI-Xポートを使用しています。異なるポートはストレートケーブルで接続し、
同じポート同士はクロスケーブルで接続します。

機器の設置と同様にパケトレ下部からアイコンをドラッグアンドドロップして各ポートにケーブルを接続して下記の通りに結線が完了しました。実線がストレートケーブルで破線がクロスケーブルになります。

 

IPアドレスの設定

では先程決定したIPアドレスを機器の各インターフェースに設定していきます。
この構成では、PCやサーバにとってデフォルトゲートウェイは自セグメントの
ルータのインターフェースのIPアドレスになります。

デフォルトゲートウェイを設定しない場合、デフォルトゲートウェイのインターフェースまでは自セグメントであるため通信が届きますが、その先にある他セグメント宛の通信は
どこにルーティングすればよいか示されていない状態のため、破棄されてしまいます。

 

PCとサーバのインターフェース

  1. PC1でインターフェースのIPアドレスデフォルトゲートウェイ
    DNSサーバのIPアドレスを設定します。

     

  2. PC2でインターフェースのIPアドレスデフォルトゲートウェイ
    DNSサーバのIPアドレスを設定します。

     

  3. PC3でインターフェースのIPアドレスデフォルトゲートウェイ
    DNSサーバのIPアドレスを設定します。

     

  4. WEB ServerでインターフェースのIPアドレスデフォルトゲートウェイ
    設定します。

     

  5. DNS ServerでインターフェースのIPアドレスデフォルトゲートウェイ
    設定します。

     

ルータのインターフェース

  1. RT1でインターフェース Gi0/0Gi0/1IPアドレスを設定し有効化します。
    
                 --- System Configuration Dialog ---
    
    Would you like to enter the initial configuration dialog? [yes/no]: no
    
    
    Press RETURN to get started!
    
    
    
    Router>ena
    Router>enable 
    Router#
    Router#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)#
    Router(config)#hostn
    Router(config)#hostname RT1
    RT1(config)#
    RT1(config)#
    RT1(config)#inter
    RT1(config)#interface Gi
    RT1(config)#interface GigabitEthernet 0/0
    RT1(config-if)#
    RT1(config-if)#ip add
    RT1(config-if)#ip address 192.168.1.1 255.255.255.0
    RT1(config-if)#
    RT1(config-if)#no shu
    RT1(config-if)#no shutdown 
    
    RT1(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
    
    RT1(config-if)#exit
    RT1(config)#
    RT1(config)#
    RT1(config)#
    RT1(config)#
    RT1(config)#
    RT1(config)#inter
    RT1(config)#interface Gi
    RT1(config)#interface GigabitEthernet 0/1
    RT1(config-if)#
    RT1(config-if)#ip add
    RT1(config-if)#ip address 192.168.2.2 255.255.255.0
    RT1(config-if)#
    RT1(config-if)#no shu
    RT1(config-if)#no shutdown 
    
    RT1(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to up
    
    RT1(config-if)#
    RT1(config-if)#
        
  2. RT2でインターフェース Gi0/0Gi0/1 と Gi0/2 IPアドレスを設定し有効化します。
    
             --- System Configuration Dialog ---
    
    Would you like to enter the initial configuration dialog? [yes/no]: n
    
    
    Press RETURN to get started!
    
    
    
    Router>en
    Router>enable 
    Router#
    Router#conf t
    Router#conf terminal 
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)#
    Router(config)#hostn
    Router(config)#hostname RT2
    RT2(config)#
    RT2(config)#
    RT2(config)#inter
    RT2(config)#interface Gi
    RT2(config)#interface GigabitEthernet 0/0
    RT2(config-if)#
    RT2(config-if)#ip add
    % Incomplete command.
    RT2(config-if)#ip add
    RT2(config-if)#ip address 192.168.2.1 255.255.255.0
    RT2(config-if)#
    RT2(config-if)#no shu
    RT2(config-if)#no shutdown 
    
    RT2(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
    
    RT2(config-if)#exit
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#inter
    RT2(config)#interface Gi
    RT2(config)#interface GigabitEthernet 0/1
    RT2(config-if)#
    RT2(config-if)#ip add
    RT2(config-if)#ip address 192.168.3.2 255.255.255.0
    RT2(config-if)#
    RT2(config-if)#no shu
    RT2(config-if)#no shutdown 
    
    RT2(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to up
    
    RT2(config-if)#
    RT2(config-if)#
    RT2(config-if)#exit
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#
    RT2(config)#inter
    RT2(config)#interface Gi
    RT2(config)#interface GigabitEthernet 0/2
    RT2(config-if)#
    RT2(config-if)#ip add
    RT2(config-if)#ip address 192.168.5.4 255.255.255.0
    RT2(config-if)#
    RT2(config-if)#no shu
    RT2(config-if)#no shutdown 
    
    RT2(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/2, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to up
    
    RT2(config-if)#
    RT2(config-if)#
        
  3. RT3でインターフェース Gi0/0Gi0/1 と Gi0/2 IPアドレスを設定し有効化します。
    
             --- System Configuration Dialog ---
    
    Would you like to enter the initial configuration dialog? [yes/no]: no
    
    
    Press RETURN to get started!
    
    
    
    Router>en
    Router>enable 
    Router#
    Router#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)#
    Router(config)#host
    Router(config)#hostname R3
    R3(config)#
    R3(config)#
    R3(config)#inter
    R3(config)#interface Gi
    R3(config)#interface GigabitEthernet 0/0
    R3(config-if)#
    R3(config-if)#ip add
    R3(config-if)#ip address 109.168.3.1 255.255.255.0
    R3(config-if)#
    R3(config-if)#no shu
    R3(config-if)#no shutdown 
    
    R3(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
    
    R3(config-if)#exit
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#inter
    R3(config)#interface Gi
    R3(config)#interface GigabitEthernet 0/1
    R3(config-if)#
    R3(config-if)#ip add
    R3(config-if)#ip address 192.168.4.2 255.255.255.0
    R3(config-if)#
    R3(config-if)#no shu
    R3(config-if)#no shutdown 
    
    R3(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to up
    
    R3(config-if)#exit
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#
    R3(config)#inter
    R3(config)#interface Gi
    R3(config)#interface GigabitEthernet 0/2
    R3(config-if)#
    R3(config-if)#ip add
    R3(config-if)#ip address 192.168.6.1 255.255.255.0
    R3(config-if)#
    R3(config-if)#no shu
    R3(config-if)#no shutdown 
    
    R3(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/2, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to up
    
    R3(config-if)#exit
    R3(config)#
    R3(config)#
        
  4. RT4でインターフェース Gi0/0Gi0/1 と Gi0/2 IPアドレスを設定し有効化します。
    
    Press RETURN to get started!
    
    
    
    Router>en
    Router>enable 
    Router#
    Router#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)#
    Router(config)#host
    Router(config)#hostname R4
    R4(config)#
    R4(config)#inter
    R4(config)#interface Gi
    R4(config)#interface GigabitEthernet 0/0
    R4(config-if)#
    R4(config-if)#ip add
    R4(config-if)#ip address 192.168.4.1 255.255.255.0
    R4(config-if)#
    R4(config-if)#no shu
    R4(config-if)#no shutdown 
    
    R4(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
    
    R4(config-if)#exit
    R4(config)#
    R4(config)#
    R4(config)#inter
    R4(config)#interface Gi
    R4(config)#interface GigabitEthernet 0/1
    R4(config-if)#
    R4(config-if)#ip add
    R4(config-if)#ip address 192.168.1.2 255.255.255.0
    R4(config-if)#
    R4(config-if)#no shu
    R4(config-if)#no shutdown 
    
    R4(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to up
    
    R4(config-if)#exit
    R4(config)#
    R4(config)#
    R4(config)#
    R4(config)#
    R4(config)#
    R4(config)#inter
    R4(config)#interface Gi
    R4(config)#interface GigabitEthernet 0/2
    R4(config-if)#
    R4(config-if)#ip add
    R4(config-if)#ip address 192.168.7.1 255.255.255.0
    R4(config-if)#
    R4(config-if)#no shu
    R4(config-if)#no shutdown 
    
    R4(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/2, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to up
    
    R4(config-if)#exit
    R4(config)#
    R4(config)#
        

全ての機器のインターフェースにIPアドレスの割り当てが完了すると、
下記のように全てリンクアップした状態になります。

 

ここでルータを確認してみると、この時点では自らが直接接続しているセグメントの
経路しか登録されていないことが分かります。(下記のキャプチャはRT1の設定です)

 

OSPFの設定

いよいよOSPFを設定していきます。networkコマンドではサブネットマスクではなく
ワイルドカードマスクを設定します。また、今回はシングルエリアOSPFを構築したい
のでエリアは全ルータで0を指定します。

 

  1. RT1でOSPFを設定します。
    
    RT1>en
    RT1>enable 
    RT1#
    RT1#
    RT1#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT1(config)#
    RT1(config)#router os
    RT1(config)#router ospf 1
    RT1(config-router)#
    RT1(config-router)#netwo
    RT1(config-router)#network 192.168.1.0 0.0.0.255 area 0
    RT1(config-router)#
    RT1(config-router)#network 192.168.2.0 0.0.0.255 area 0
    RT1(config-router)#
    RT1(config-router)#
        
  2. RT2でOSPFを設定します。
    
    RT2>en
    RT2>enable 
    RT2#
    RT2#
    RT2#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT2(config)#
    RT2(config)#router os
    RT2(config)#router ospf 1
    RT2(config-router)#
    RT2(config-router)#netw
    RT2(config-router)#network 192.168.2.0 0.0.0.255 area 0
    RT2(config-router)#
    02:33:49: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.2.2 on GigabitEthernet0/0 from LOADING to FULL, Loading Done
    
    RT2(config-router)#
    RT2(config-router)#
    RT2(config-router)#
    RT2(config-router)#
    RT2(config-router)#network 192.168.3.0 0.0.0.255 area 0
    RT2(config-router)# RT2(config-router)#network 192.168.5.0 0.0.0.255 area 0
    RT2(config-router)# RT2(config-router)#
  3. RT3でOSPFを設定します。
    
    R3>en
    R3>enable 
    R3#
    R3#
    R3#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    R3(config)#
    R3(config)#router os
    R3(config)#router ospf 1
    R3(config-router)#
    R3(config-router)#netw
    R3(config-router)#network 192.168.3.0 0.0.0.255 area 0
    R3(config-router)#
    R3(config-router)#network 192.168.4.0 0.0.0.255 area 0
    R3(config-router)# R3(config-router)#network 192.168.6.0 0.0.0.255 area 0
    R3(config-router)# R3(config-router)#
  4. RT4でOSPFを設定します。
    
    R4>en
    R4>enable 
    R4#
    R4#
    R4#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    R4(config)#
    R4(config)#router os
    R4(config)#router ospf 1
    R4(config-router)#
    R4(config-router)#netwo
    R4(config-router)#network 192.168.1.0 0.0.0.255 area 0
    R4(config-router)#
    R4(config-router)#network 192.168.4.0 0.0.0.255 area 0
    R4(config-router)#
    R4(config-router)#network 192.168.4.0 0.0.0.255 area 0
    02:27:49: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.2.2 on GigabitEthernet0/1
    
    R4(config-router)# R4(config-router)#network 192.168.7.0 0.0.0.255 area 0
    R4(config-router)# R4(config-router)#

ここでルータを確認してみると、自らが直接接続しているセグメント以外の経路が
OSPFによって登録されていることが分かります。(下記のキャプチャはRT1の設定です)

 

疎通確認

それではネットワークの疎通に問題がないかをpingで確認していきます。
PCとサーバも設置しているため、せっかくなのでエンドツーエンドで
PC1からWEB Serverに向けてpingを打ってみたいと思います。


パケットロスもなく疎通に問題がないことが確認できました!

以上でOSPFの設定は無事に完了したのですが、よりインターネットをイメージしやすく
するためにWEBサーバにコンテンツを作成して、PCのブラウザからURLでアクセスして
サイトを閲覧してみたいと思います。

 

コンテンツの作成

サーバの HTTP から index.html を編集していきます。


せっかくなのでこのブログのブログ名を冠して色味を似せたページを作ってみました。

 

DNSサーバにレコードを登録

WEBサイトにはIPアドレスでもアクセス可能ですが、IPアドレスでアクセスする機会は
ほぼほぼないかと思います。通常はドメイン名を使用してサイトにアクセスしますが、
このドメイン名とIPアドレスを対応付けて管理しているサーバがDNSサーバになります。

今回はドメイン名をWEB ServerのIPv4アドレスと対応させたいのでAレコードを登録
していきます。FQDNもこのブログと同じものを登録してみます。


上記でレコードの登録が完了しました。

 

WEBページにアクセス

それではPCからWEBサイトにアクセスしてみたいと思います。
先程はPC1から疎通を確認しましたので、今回はPC2を使ってみたいと思います。


PC2のデスクトップからWEBブラウザを起動します。


このブログのURLにアクセスしてみます。


先程私がWEB Serverに配置したコンテンツを閲覧することができました!


念のため、本当に名前解決ができているかどうか、
今度はPC3からnslookupコマンドで確認してみます。


問題なく名前解決できていることが確認できました。

 

障害の発生

それでは、このネットワークで障害が発生した場合はどうなるでしょうか。

OSPFはネットワーク構成に変更があった場合でも、変更の差分をネイバールータに
トリガードアップデートするため障害が発生しても自動で最適な経路を再計算します。

こちらも動作を確認してみたいと思います。まず、現状でPC1がWEBサーバに対して
どの経路でアクセスしているかをtracertコマンドを使って確認してみたいと思います。


実行結果から、下記のルートを通っていることが確認できました。


それでは、経路の途中で回線障害が発生したと仮定して、
RT3 - RT4間のケーブルを抜線してみたいと思います。


再度WEBページを確認してみると、抜線したにもかかわらずWEBページが見れています。


障害発生後にどのような経路を通っているか確認してみます。


実行結果から、下記のルートを通っていることが確認できました。
ネットワークトポロジに変更が生じても自動で迂回がかかることが確認できました!

 

以上、OSPFでのネットワーク構築からWEBサイトの閲覧
回線障害が発生した際の動作確認までを実施しました。

最後までご覧いただきありがとうございました。