VRRP設定について記載します。
GNS3で設定しました。
参照サイト
GNS3上にCisco7200を置いて、それぞれ
スロット0にC7200-IO-2FE
スロット1にPA-2FE-TX
を構成しました。
イーサネットスイッチも置きました。
Idle PC設定を行ないます。
全ルーターにいつのもやつを入れておきます。
Router(config)#hostname R1
R1(config)#no ip domain-lookup
R1(config)#line console 0
R1(config-line)#exec-timeout 0 0
R1(config-line)#logging synchronous
R1#wr mem
全ルーターにIPアドレスを割り振り、スイッチを
含め結線しno shutしておきます。
※まずルーターとスイッチともに冗長構成前の構成で試行しますが
WEBサーバー見立てのルーター2台だけは例外的にVRRPを
設定しておきます。
R3(config)#int fa 1/0
R3(config-if)#vrrp 10 ip 192.168.0.200
R6(config)#int fa 1/0
R6(config-if)#vrrp 10 ip 192.168.0.200
R6(config-if)#vrrp 10 priority 50
WEBサーバー見立て(R3,R6)と、クライアントPC見立て(R5)に
デフォルトゲートウェイを設定します。
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.0.1
R6(config)#ip route 0.0.0.0 0.0.0.0 192.168.0.1
※まずはR1の物理IPアドレスに設定しておきます。
R5(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.1
スタティックでルーティングするなら
R1(config)#ip route 10.0.0.0 255.0.0.0 172.16.0.1
R4(config)#ip route 192.168.0.0 255.255.255.0 172.16.0.2
OSPFでルーティングするなら
R1(config)#router ospf 1
R1(config-router)#network 0.0.0.0 255.255.255.255 area 0
R1(config-router)#passive-interface FastEthernet 1/0
R4(config)#router ospf 1
R4(config-router)#network 0.0.0.0 255.255.255.255 area 0
R4(config-router)#passive-interface FastEthernet 1/0
以下の図のようになりました。
クライアントPC(R5)からWEBサーバーの仮想IPアドレスへpingが通ることを確認します。
R5#ping 192.168.0.200
この時、ルーター「R1」が壊れてもスイッチ「SW1」が壊れても
通信断になります。
そこで冗長構成にしておくことが望ましいとされています。
SW2を増設しました。
ルーター「R2」を追加し、IP設定、ルーティング設定を行ないます。
スタティックでルーティングするなら
R2(config)#ip route 10.0.0.0 255.0.0.0 172.17.0.1
R4(config)#ip route 0.0.0.0 0.0.0.0 172.17.0.2
※「R4」の設定です。
「R1」の停止、「R1」 - 「R4」間の断線、「R4」のfa0/0のポート障害等で
R4のルーティングテーブルから
が消え去った時のためにデフォルトゲートウェイを設定しています。
※GNS3では「R1」の停止、「R1」 - 「R4」間の断線では以上のルーティング
情報は消え去りませんし、keepaliveが有効になっていたとしてもR4から
R4自体のfa0/0へpingを打つと疎通が出来てしまいます。
なので今後発生させる障害テスト時は、代替方法としてfa0/0をシャットダウンし、
ルーティングテーブルから消し去っています。
実際の機器のCisco1812Jでそれっぽい事をしたところ、意図通りに
ルーティング情報は消え去りました。
OSPFでルーティングするなら
R2(config)#router ospf 1
R2(config-router)#network 0.0.0.0 0.0.0.0 area 0
R2(config-router)#passive-interface fastethernet 1/0
R1(config)#int fa 1/0
R1(config-if)#vrrp 1 ip 192.168.0.100
R2(config)#int fa 1/0
R2(config-if)#vrrp 1 ip 192.168.0.100
※デフォルトのプライオリティ値は100です。プライオリティ値が高いものが
Masterとなります。
※同じプライオリティの場合
ルーター「R1」をMasterにしたいため、
ルーター「R2」のプライオリティ値を低くします。
R2(config-if)#vrrp 1 priority 50
*Oct 24 20:10:31.359: %VRRP-6-STATECHANGE: Fa1/0 Grp 1 state Master -> Backup
VRRPアドバタイズの送信元は
Masterルーター内のVRRPの仮想IPアドレスを設定したインターフェースで、
宛先はマルチキャストアドレスの224.0.0.18です。
デフォルトでは1秒間隔で送信して、
3回受信出来なかった場合はダウンとみなします。
VRRPアドバタイズのパケットキャプチャは以下の図です。
仮想ルータは”00-00-5E-00-01-XX”というMACアドレスを使用します。
最後の”XX”部分はVirtual Router IDentifier(VRID) です。
今回は「vrrp 1」として設定したため、最後の”XX”部分は「01」です。
「Source」が「192.168.0.198」のものはWEBサーバー見立てのR3(192.168.0.198)が
WEBサーバー見立てのR6(192.168.0.199)へ向けて送信しているパケットです。
こちらは「vrrp 10」で設定したため最後の”XX”部分は「0a」です。
2台のWEBサーバーのデフォルトゲートウェイを
192.168.0.1(ルーター「R1」のFastEthernet 1/0)から
192.168.0.100(「R1」「R2」で構成するVRRPの仮想IPアドレス)へ
変更します。
R3(config)#no ip route 0.0.0.0 0.0.0.0 192.168.0.1
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.0.100
R6(config)#no ip route 0.0.0.0 0.0.0.0 192.168.0.1
R6(config)#ip route 0.0.0.0 0.0.0.0 192.168.0.100
以下の図のようになりました。
SW1とSW2の渡りケーブルを付けたのはWEBサーバー同士、及びルーター
「R1」 - 「R2」間のVRRPアドバタイズ(224.0.0.18宛)ができるようにです。
OSPF運用の場合はこれで終了です。
SW1の障害時は、クライアントからサーバーへの通信時にR2を経由します。
R4のルーティングテーブルが変更されるため。
※GNS3の場合は多分、SW1の障害時にR1のルーティングテーブルは
変わらないためOSPFでのルート切替は発生せず、通信不可となります。
スタティックルート運用の場合はSW1の障害時、R4のルーティングテーブルに
変更は無いため通信不可となります。
そのために「R1」 - 「R2」間に渡りケーブルを追加し
R1でデフォルトルートをR2へ設定します。
R1(config)#int fa 1/1
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2
R2(config)#int fa 1/1
R2(config-if)#ip add 1.1.1.2 255.255.255.0
R2(config-if)#no shut
「R1」のfa 0/0や「R4」のfa 0/0に関する障害が起きたときは、
行きと帰りのルートが異なります。VRRPの仮想IPアドレスを持っているのは「R1」のままであるため。
行きと帰りのルートを同じにする必要が有る場合にはトラックインターフェース設定を追加します。
R1(config)#track 1 interface FastEthernet0/0 line-protocol
(今回はFastEthernet0/0)がダウンした際にプライオリティを60減少させる。
R1(config)#interface FastEthernet1/0
R1(config-if)#vrrp 1 track 1 decrement 60
※R1のプライオリティ値はデフォルトの100でR2のプライオリティ値は
50であるため、60減少させるということは、結局40になってR2の50よりも低くなる
=R2がMasterになる。ということです。
トラックインターフェース設定前と後の通信経路は以下のようになります。
プリエンプト自体はデフォルトで有効です。
R1の障害復旧時、R2からR1へ切り戻しが発生しますが、デフォルトでは
その際に0秒で切り戻されます。R1のルーティングテーブルが動的で有った
場合、完成を待たずに切り戻される事になります。
なので、そのような場合には切り戻し時の待ち時間(秒数)を設定します。
preemptとは「先取りする」という意味です。
R1(config)#int fa 1/0
R1(config-if)#vrrp 1 preempt delay minimum 45
以下の「R1」の起動時のパケットキャプチャで、最初の物理アドレスが出す
Gratuitous ARPから仮想アドレスが出すGratuitous ARPまでの間隔が
約45秒であることが分かりますね。
VRRP切替時は以下の図のGratuitous ARPが出ます。
・送信元MAC
・送信元IP
・送信元MAC
・送信先IP
を見ると分かりやすいですね。
※サーバー見立てのものも別VRIDでVRRPアドバタイズを送出させているため
パケットキャプチャ時に見やすくするため、サーバー見立てのものは停止させています。
自身のIPアドレスをリクエストするためのARPパケットのこと。
同一ネットワーク内のIPアドレスの重複をチェックする。
ネットワーク上の他のホストに対してARPテーブルを更新するよう通知する。
引用元
参照サイト
このパケットによってL2スイッチのMACアドレステーブルも変わるため、
正常に通信が出来るようになります。
SW2のMACアドレステーブルは以下のように変わりました。
上記の切り替わる前から変化しました。