動的ルーティングを実装する
この記事では動的ルーティングを実現するルーティングプロトコルである
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とサーバのインターフェース
- PC1でインターフェースのIPアドレスとデフォルトゲートウェイ、
DNSサーバのIPアドレスを設定します。
- PC2でインターフェースのIPアドレスとデフォルトゲートウェイ、
DNSサーバのIPアドレスを設定します。
- PC3でインターフェースのIPアドレスとデフォルトゲートウェイ、
DNSサーバのIPアドレスを設定します。
- WEB ServerでインターフェースのIPアドレスとデフォルトゲートウェイを
設定します。
- DNS ServerでインターフェースのIPアドレスとデフォルトゲートウェイを
設定します。
ルータのインターフェース
- RT1でインターフェース Gi0/0 と Gi0/1 にIPアドレスを設定し有効化します。
--- 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)#
- RT2でインターフェース Gi0/0 と Gi0/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)#
- RT3でインターフェース Gi0/0 と Gi0/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)#
- RT4でインターフェース Gi0/0 と Gi0/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を指定します。
- 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)#
- 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)# - 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)# - 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サイトの閲覧
回線障害が発生した際の動作確認までを実施しました。
最後までご覧いただきありがとうございました。