10.2.2.3. VRRPによる冗長設定

動作確認バージョン:Brocade 5600vRouter Version4.2R1S1

ここでは、VRRPを用いたネットワークの冗長化設定の紹介をします。

VRRP(Virtual Router Redundancy Protocol)とは

2台のルータ(ここではファイアウォール)を仮想的に1台のルータとして動作させて接続される端末等からは、1台のルータとして認識させるプロトコルになります。
これにより、2台のファイアウォールはMASTERとBACKUPと呼ばれる状態で役割が分担されます。
接続される端末からは、ファイアウォールインタフェースの本当のIPアドレスを設定しなくてもVRRPで作成した仮想IPアドレスに対してデフォルトゲートウェイを指定して通信をさせることが可能です。
MASTER側が異常によりパケット転送ができなくなった場合にも、自動的にBACKUP側がMASTERに状態が変化して端末からの通信は継続させることが可能になります。

注釈

  • Brocade 5600vRouter にてVRRPの設定を実施いただく前に、ECL2.0のカスタマーポータルから「VRRP用通信許可設定の登録」を実施いただく必要があります。
  • VRRP設定をした場合は、ロジカルネットワークのDHCP(アドレス設定機能)は「有効」として頂くようお願い致します。DHCP設定が「無効」の場合には、弊社ネットワークにおいてソースのアドレスが0.0.0.0でARPリクエストが実施されます。この場合、一部のアプライアンスでARPリプライしないことが確認されています。
  • VRRPのpreemptはデフォルトのまま有効(True)として頂くようお願い致します。preemptが無効になっている場合、全インターフェイスでステータスが一致せず、通信断が継続する場合があります。
  • Packet Filtering機能と組み合わせて設定される場合、VRRPのやり取りのために必要な通信(protocolがvrrpである通信)がDROPされないように注意してください。
    • 特に、パケットフィルタリングのdefault-actionをdropに設定されている場合には、明示的に以下のようなprotocol vrrpの通信を許可するルールを設定ください。
    • set security firewall name [ルール名] rule [ルール番号] protocol vrrp
    • set security firewall name [ルール名] rule [ルール番号] action accept
  • 本サービスでは非対称通信はサポートしておりません。複数インタフェースでVRRPを利用する際、[SYNC-GROUP NAME]に同じ値を指定することで、VRRPの切り替わりを同期させてください。
  • VRRPのadvertise intervalは初期設定では基盤側においてVRRP通信が稀に不安定になることが確認されていたため20sec以上を推奨しておりましたが(2016年12月時点)、不安定事象が解消したためお客様のシステム構成に合わせ設計ください(2017年8月時点)。(3回連続でHello Packetを受信しなかった際に断検知します)。なお本設定を変更する場合、Backup側のファイアウォールから変更してください。Master側から変更すると、Backup側へのHelloパケット送信間隔が変わるため、Backup側もMasterに昇格し、両装置がMasterになる可能性があります。
  • その他の機能とVRRP機能を組み合わせて設定される場合には、動作確認済み利用モデル が参考になりますので合わせてご確認ください。

VRRPによる冗長性確認

2台のファイアウォールにてVRRP設定を実施し、冗長構成を作ります。

サンプル設定のシナリオ

  • 2台のファイアウォールのVRRP設定を実施したい
  • 仮想IPアドレスを172.16.1.33にしたい
  • IPアドレス172.16.1.31を持つ1号機側を正常時MASTERにしたい
  • IPアドレス172.16.1.32を持つ2号機側を異常時切り替わってMASTERにしたい
  • 切り替わりの検知時間を60秒にしたい
  • 切り替わり発生後に1号機側が復旧時に自動で切り戻る設定にしたい
構成図
VRRP Fig1

シナリオにおける設定のながれ

  • 1. VRRPグループ10 と仮想IPアドレス172.16.1.33)を決定しカスタマポータルからVRRP設定する
  • 2.インタフェース(dp0s4)にてVRRPを設定し、VRRPグループを 10 で設定
  • 3.1号機側がMASTERにするためプライオリティ値を 200 に設定
  • 4.2号機側をBACKUPにするためプライオリティ値を 150 に設定
  • 5.MASTER側障害検知時間を 60秒 (20秒x3回の応答待ち)に設定
  • 6.2号機がMASTERの際に、1号機側の通信が復旧したら切り戻す設定
  • 7.仮想IPアドレスで利用するMACアドレスはRFPで定義されているMACアドレスを利用したい
  • 8.SYNC-GROUP NAMEを test に設定

CLIにて入力するコマンド

ファイアウォール1号機
set interface dataplane dp0s4 vrrp vrrp-group 10 virtual-address '172.16.1.33'
set interface dataplane dp0s4 vrrp vrrp-group 10 priority '200'
set interface dataplane dp0s4 vrrp vrrp-group 10 advertise-interval '20'
set interface dataplane dp0s4 vrrp vrrp-group 10 preempt 'true'
set interface dataplane dp0s4 vrrp vrrp-group 10 'rfc-compatibility'
set interface dataplane dp0s4 vrrp vrrp-group 10 sync-group 'test'
ファイアウォール2号機
set interface dataplane dp0s4 vrrp vrrp-group 10 virtual-address '172.16.1.33'
set interface dataplane dp0s4 vrrp vrrp-group 10 priority '150'
set interface dataplane dp0s4 vrrp vrrp-group 10 advertise-interval '20'
set interface dataplane dp0s4 vrrp vrrp-group 10 preempt 'true'
set interface dataplane dp0s4 vrrp vrrp-group 10 'rfc-compatibility'
set interface dataplane dp0s4 vrrp vrrp-group 10 sync-group 'test'

注釈

  • 上記以外のインターフェイスでVRRPを設定する場合は、VRRPの切り替わりを同期させるため、sync-groupを上記と同一の値で設定してください。
  • 各インターフェイス(dp0s4)のIPアドレスは、カスタマポータルから設定するのでCLIでの入力は必要ありません。
正しく設定が完了したときのコンフィグレーションは次のとおりです。
ファイアウォール1号機(MASTER側)
interfaces {
 dataplane dp0s4 {
   address 172.16.1.31/24
   vrrp {
     vrrp-group 10 {
       advertise-interval 20
       preempt true
       priority 200
       rfc-compatibility
       sync-group test
       virtual-address 172.16.1.33
     }
   }
 }
}
ファイアウォール2号機(BACKUP側)
interfaces {
 dataplane dp0s4 {
   address 172.16.1.32/24
   vrrp {
     vrrp-group 10 {
       advertise-interval 20
       preempt true
       priority 150
       rfc-compatibility
       sync-group test
       virtual-address 172.16.1.33
     }
   }
 }
}

動作確認結果

2台のファイアウォールで、それぞれ意図したとおりにStateがMASTER/BACKUP状態に
なっていることが確認できており、接続する端末から仮想IPアドレス(ここでは、172.16.1.33)
に対して通信が可能であることが端末側からも確認できましたので
VRRP設定は正しく機能していることが確認できました。

ファイアウォール1号機(MASTER側)
user-admin@FW-01:~$ show vrrp

                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
dp0s4             10     MASTER  dp0vrrp1   no     10h19m18s   test
ファイアウォール2号機(BACKUP側)
user-admin@FW-02:~$ show vrrp

                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
dp0s4             10     BACKUP  dp0vrrp1   no     10h14m10s   test
端末から仮想IPアドレス宛の通信
#172.16.1.2から172.16.1.33(VIP)通信 -> OK

test@localhost:~$ ping -c 5 172.16.1.33
PING 172.16.1.33 (172.16.1.33) 56(84) bytes of data.
64 bytes from 172.16.1.33: icmp_seq=1 ttl=64 time=1.66 ms
64 bytes from 172.16.1.33: icmp_seq=2 ttl=64 time=0.908 ms
64 bytes from 172.16.1.33: icmp_seq=3 ttl=64 time=0.855 ms
64 bytes from 172.16.1.33: icmp_seq=4 ttl=64 time=0.824 ms
64 bytes from 172.16.1.33: icmp_seq=5 ttl=64 time=0.685 ms

--- 172.16.1.33 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.685/0.987/1.667/0.349 ms

VRRPの切り替わり確認

先の設定内容で、MASTER側のVRRPを停止させBACKUP側がMASTERとなり
端末からは継続して通信ができることを確認します。

構成図
VRRP Fig2

CLIにて入力するコマンド

切り替わりを強制的に発生させるため、VRRPをコンフィグで停止させます。
set interface dataplane dp0s4 vrrp vrrp-group 10 disable

各装置のVRRP状態

VRRPが設定され同期が取れた状態におけるVRRP情報は次のとおりです。

ファイアウォール1号機(MASTER側)
user01@FW01:~$ sho vrrp detail
--------------------------------------------------
Interface: dp0s4
--------------
  Group: 10
  ----------
  State:                        MASTER
  Last transition:              7h37m47s

  Version:                      2
  RFC Compliant
  Virtual MAC interface:        dp0vrrp1
  Address Owner:                no

  Source Address:               172.16.1.31
  Configured Priority:          200
  Effective Priority:           200
  Advertisement interval:       20 sec
  Authentication type:          none
  Preempt:                      enabled

  VIP count:                    1
    172.16.1.33/32

user01@FW01:~$
ファイアウォール2号機(BACKUP側)
user01@FW02:~$ show vrrp detail
--------------------------------------------------
Interface: dp0s4
--------------
  Group: 10
  ----------
  State:                        BACKUP
  Last transition:              7h37m43s

  Master router:                172.16.1.31
  Master priority:              200

  Version:                      2
  RFC Compliant
  Virtual MAC interface:        dp0vrrp1
  Address Owner:                no

  Source Address:               172.16.1.32
  Configured Priority:          150
  Effective Priority:           150
  Advertisement interval:       20 sec
  Authentication type:          none
  Preempt:                      enabled

  VIP count:                    1
    172.16.1.33/32

user01@FW02:~$

MASTER側停止後の各装置のVRRP状態

1号機側のVRRPを停止させたことで、MASTER側からのVRRPのアドバタイズが
途絶えてしまうので、BACKUP側はMASTER側障害と認識し切り替わりが発生します。
ステータス確認で、2号機側がMASTERになっていますが、端末からは
仮想IPアドレス宛に通信ができており、VRRPの切り替わりも確認できました。

ファイアウォール1号機(VRRP 停止中)
user01@FW01:~$ show vrrp detail
--------------------------------------------------
user01@FW01:~$
user01@FW01:~$

注釈

VRRPが停止しているので、ステータスの確認はできません。

ファイアウォール2号機(BACKUPからMASTER)
user01@FW02:~$ show vrrp detail
--------------------------------------------------
Interface: dp0s4
--------------
  Group: 10
  ----------
  State:                        MASTER
  Last transition:              27s

  Version:                      2
  RFC Compliant
  Virtual MAC interface:        dp0vrrp1
  Address Owner:                no

  Source Address:               172.16.1.32
  Configured Priority:          150
  Effective Priority:           150
  Advertisement interval:       20 sec
  Authentication type:          none
  Preempt:                      enabled

  VIP count:                    1
    172.16.1.33/32

user01@FW02:~$
端末から仮想IPアドレス宛の通信(切り替わり発生後)
#172.16.1.2から172.16.1.33(VIP)通信 -> OK

test@localhost:~$ ping -c 5 172.16.1.33
PING 172.16.1.33 (172.16.1.33) 56(84) bytes of data.
64 bytes from 172.16.1.33: icmp_seq=1 ttl=64 time=1.47 ms
64 bytes from 172.16.1.33: icmp_seq=2 ttl=64 time=0.738 ms
64 bytes from 172.16.1.33: icmp_seq=3 ttl=64 time=0.722 ms
64 bytes from 172.16.1.33: icmp_seq=4 ttl=64 time=0.739 ms
64 bytes from 172.16.1.33: icmp_seq=5 ttl=64 time=0.579 ms

--- 172.16.1.33 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 0.579/0.851/1.479/0.320 ms