HSRP 実践編:(2) HSRP のスタンバイ・グループを作成する

サブネット192.168.1.0/24 にバーチャル・ルーターをつくります。

a
Router-A、B、C にスタンバイ・グループ10 を作成します。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface ethernet0/0
Router-A(config-if)#standby 10 ip 192.168.1.1
Router-A(config-if)#^Z
Router-A#
Feb 6 20:48:00.585: %SYS-5-CONFIG_I: Configured from console by console
Router-A#
Feb 6 20:48:30.848: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby
Feb 6 20:48:30.848: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Active

まずRouter-A のインターフェイスe0/0 にstandby 10 ip 192.168.1.1 を設定します。
しばらくすると、スタンバイ・グループ10 のアクティブ・ルーターになったことを意味するメッセージが表示されます。

ここでshow standby を実行すると、スタンバイ・グループ10 の状況を確認できます。

Router-A#show standby
Ethernet0/0 - Group 10
State is Active
2 state changes, last state change 00:04:41
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.132 secs
Preemption disabled
Active router is local
Standby router is unknown
Priority 100 (default 100)
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-A#

HSRP ステートはActive となっています。

バーチャルIP アドレスは192.168.1.1 です。

バーチャルMAC アドレスは、スタンバイ・グループ10 を意味する00-00-0c-07-ac-0a です。

Hello Time とHold Time は、それぞれ3秒と10秒です(デフォルト値)。

プライオリティはデフォルト値の100 となっています。


引き続きRouter-B に同じ設定をします。

Router-B#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-B(config)#interface ethernet0/0
Router-B(config-if)#standby 10 ip 192.168.1.1
Router-B(config-if)#^Z
Router-B#
Feb 6 20:51:18.300: %SYS-5-CONFIG_I: Configured from console by console
Router-B#
Feb 6 20:51:48.400: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Speak -> Standby

スタンバイ・グループ10 のスタンバイ・ルーターとなったことを意味するメッセージが表示されます。

show standby を見てみましょう。

Router-B#show standby
Ethernet0/0 - Group 10
State is Standby
1 state change, last state change 00:02:37
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.920 secs
Preemption disabled
Active router is 192.168.1.101, priority 100 (expires in 8.044 sec)
Standby router is local
Priority 100 (default 100)
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-B#

HSRP ステートはStandby となっています。

アクティブ・ルーターは、先ほど設定したRouter-A(192.168.1.101)となっています。

スタンバイ・ルーターは自分自身を意味するLocal です。


ここでもう一度、Router-A でshow standby を見てみます。

Router-A#show standby
Ethernet0/0 - Group 10
State is Active
2 state changes, last state change 00:16:44
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.992 secs
Preemption disabled
Active router is local
Standby router is 192.168.1.102, priority 100 (expires in 9.756 sec)
Priority 100 (default 100)
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-A#

先ほどはUnknown となっていたスタンバイ・ルーターが、Router-B(192.168.1.102)となりました。Router-B からのHello メッセージを受け取ったからです。

IP アドレスが大きいRouter-B(192.168.1.102)が出現しても、Router-A(192.168.1.101)はアクティブ・ルーターであり続けます。アクティブ・ルーターは、自分から辞めない限りアクティブ・ルーターのままです。


続けてRouter-C を設定します。

Router-C#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-C(config)#interface ethernet0/0
Router-C(config-if)#standby 10 ip 192.168.1.1
Router-C(config-if)#^Z
Router-C#

Router-C にスタンバイ・グループ10 を設定すると、Router-B のコンソールにメッセージが表示されました。

Router-B#
Feb 6 20:53:18.684: %HSRP-6-STATECHANGE: Ethernet0/0 Grp 10 state Standby -> Listen
Router-B#

Router-B がスタンバイ・ルーターでは無くなったようです。
Router-C でshow standby を見てみます。

Router-C#show standby
Ethernet0/0 - Group 10
Local state is Standby, priority 100
Hellotime 3 sec, holdtime 10 sec
Next hello sent in 1.292
Virtual IP address is 192.168.1.1 configured
Active router is 192.168.1.101, priority 100 expires in 7.060
Standby router is local
1 state changes, last state change 00:08:31
Router-C#

Router-C がスタンバイ・グループ10 のスタンバイ・グループとなったことが確認できます。

※ Router-C はIOS version 12.0 で動作しているので、show コマンドの表示が異なります。

今度はRouter-B のshow standby です。


Router-B#show standby
Ethernet0/0 - Group 10
State is Listen
6 state changes, last state change 00:10:35
Virtual IP address is 192.168.1.1
Active virtual MAC address is 0000.0c07.ac0a
Local virtual MAC address is 0000.0c07.ac0a (v1 default)
Hello time 3 sec, hold time 10 sec
Preemption disabled
Active router is 192.168.1.101, priority 100 (expires in 7.528 sec)
Standby router is 192.168.1.103, priority 100 (expires in 8.988 sec)

Priority 100 (default 100)
IP redundancy name is "hsrp-Et0/0-10" (default)
Router-B#

HSRP ステートがListen となっています。

アクティブ・ルーターはRouter-A(192.168.1.101)、スタンバイ・ルーターはRouter-C(192.168.1.103)となっているのが確認できます。

Router-B ではなくRouter-C がスタンバイ・ルーターとなったのは、Router-C のIP アドレス(192.168.1.103)の方がRouter-B(192.168.1.102)よりも大きいからです。


ひとまず設定が完了したので、PC-1、2、3 のデフォルト・ゲートウェイを192.168.1.1 に変更します。

hsrp-b2.png

PC-1、2、3 からサーバー宛のパケットは、スタンバイ・グループ10 のバーチャル・ルーター(192.168.1.1)宛に送られます。
今はRouter-A がスタンバイ・グループ10のアクティブ・ルーターとなっているので、パケットはすべてRouter-A によりルーティングされます。


ICMP リダイレクトを無効にする

Router-A とB はIOS バージョン12.4 で動作しているので、HSRP を設定してもICMP リダイレクトは有効になっています。
しかし、Standby Group 内にIOS バージョン12.0 で動作しているRouter-C が存在するので、Router-A とB でもICMP リダイレクトを無効にします。

Router-A#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface ethernet 0/0
Router-A(config-if)#no ip redirects
Router-A(config-if)#^Z
Router-A#

IOS バージョン12.0 で動作しているルーターでは、ICMP リダイレクトとの協調機能が実装されていません。
そのため、Listen ステートとなっている間はAdvertisement メッセージを送信せず、Router-A やB からはパッシブ・ルーターであることが分かりません。結果、パッシブ・ルーターであるにもかかわらず、Router-A やB から、ICMP リダイレクトの対象とされてしまいます。

ICMP リダイレクトを有効にするのは、スタンバイ・グループ内のすべてのルーターが協調機能をサポートしているときだけにしましょう。

※ Router-C(IOS バージョン12.0)では、HSRP を設定すると自動的にICMP リダイレクトが無効となります。