# IP / VRRP

VRRP（Virtual Router Redundancy Protocol）は、複数のルーターをグループ化し、あたかも1台のルーターであるかのように見せかけることで、デフォルトゲートウェイを冗長化し、IPネットワークに冗長性を与えるプロトコルです。
本製品は、IPv4/IPv6両対応のVRRPv3をサポートしています。
Note

VRRPv3は、AlliedWare Plusバージョン5.4.2以前で使用されていたVRRPv2とは互換性がありませんのでご注意ください。

Note

IPv6でVRRPを使用する場合はIPv6機能の有効化が必要です。IPv6機能を有効化する方法については、「IPv6」/「一般設定」をご覧ください。

## プロトコル概要

VRRPの基本的な考え方は次のとおりです。

- 同一ネットワーク上にある複数のルーターをグループ化し、1台のように見せかける。このグループ全体をバーチャルルーター（VR = Virtual Router）と呼ぶ。
- バーチャルルーターを構成する各ルーターは次のものを共有し、互いに連携して動作する。
  - VRID: バーチャルルーターを識別するための番号（1～255）。
  - バーチャルMACアドレス: バーチャルルーターへのARP要求に対して返されるMACアドレス。VRIDから導出される。
  - バーチャルIP/IPv6アドレス: バーチャルルーターのIPv4/IPv6アドレス。クライアントホストには、このアドレスをデフォルトゲートウェイとして設定する（IPv6ではリンクローカルアドレスを使います）。
- バーチャルルーターを構成する各ルーターは、1～255の優先度を持つ。バーチャルIP/IPv6アドレスとインターフェースの実アドレスが一致している場合、そのルーターの優先度は自動的に最高値の255となる（preferred master）。それ以外のルーターには、1～254の優先度を設定する（初期値は100）。
- バーチャルルーターは、マスタールーター1台と、バックアップルーター1台以上から構成される。バーチャルルーター内でもっとも高い優先度を持つルーターがマスタールーターとなる。
- マスタールーターは、バーチャルIP/IPv6アドレスとバーチャルMACアドレスを使い、実際にルーターとしての動作を行う。また、VRRP Advertisementパケットをマルチキャストグループアドレス224.0.0.18（IPv4）、ff02::12（IPv6）宛てに定期的に送信し、自らの健在をバックアップルーターに知らせる。また、自分より高い優先度を持つAdvertisementパケットを受信した場合は、バックアップルーターに移行する。
- バックアップルーターは、ルーターとしての動作は行わずに、Advertisementパケットを監視している。バックアップルーターは、Advertisementパケットが途絶えるとマスタールーターに障害が発生したものと見なし、新しいマスタールーターの選出プロセスに入る。

Note

本製品は、本製品が所属するIPv4/IPv6ネットワークからバーチャルIP/IPv6アドレスへのICMP/ICMPv6に応答します。

## 基本設定

次に、実際に2台のルーターを用いてIPv4/IPv6のデフォルトゲートウェイを冗長化するための設定方法を示します。
IPv4用の設定とIPv6用の設定は下記の箇所を除いて同一です。

- バーチャルルーターの作成コマンドがIPv4とIPv6で異なる
  - IPv4では、router vrrpコマンドを使う
  - IPv6では、router ipv6 vrrpコマンドを使う
- バーチャルIP/IPv6アドレスの指定コマンドがIPv4とIPv6で異なる
  - IPv4では、virtual-ipコマンドを使う
  - IPv6では、virtual-ipv6コマンドを使う。IPv6ではリンクローカルアドレスを指定する必要があることに注意

### IPv4

ここでは、次のようなネットワーク構成を例にIPv4用のVRRP設定手順を示します。

この例では通常ルーターAが使用されますが、ルーターAが故障すると、同ルーターが定期的に送信しているVRRP AdvertisementパケットをルーターBが受信できなくなります。この場合、ルーターBはルーターAがダウンしたものと見なしてバックアップルーターからマスタールーターに移行し、両方のセグメントに対するデフォルトゲートウェイアドレスを引き継ぎます。ルーターAが復旧すると、ルーターBは元のバックアップルーターに戻ります。
なお、以下の各例では、VLANの作成とIPアドレスの設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。IPアドレスの設定については、「IP」の「IPインターフェース」をご覧ください。

#### ルーターA

1. VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。

       RouterA(config)# service vrrp

2. router vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター（以下、VR100）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterA(config)# router vrrp 100 vlan100

3. virtual-ipコマンドでVR100のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.100.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterA(config-router)# virtual-ip 10.100.100.32 backup

4. priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。

       RouterA(config-router)# priority 101

5. circuit-failoverコマンドを用いて、vlan200（VR200）がダウンした場合にvlan100側（VRID=100）の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。

       RouterA(config-router)# circuit-failover vlan200 2

6. enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。

       RouterA(config-router)# enable
       RouterA(config-router)# exit

7. router vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター（以下、VR200）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterA(config)# router vrrp 200 vlan200

8. virtual-ipコマンドでVR200のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.200.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterA(config-router)# virtual-ip 10.100.200.32 backup

9. priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。

       RouterA(config-router)# priority 101

10. circuit-failoverコマンドを用いて、vlan100（VR100）がダウンした場合にvlan200側（VR200）の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。

        RouterA(config-router)# circuit-failover vlan100 2

11. enableコマンドを実行してVR200の動作を有効化します。

        RouterA(config-router)# enable

#### ルーターB

1. VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。

       RouterB(config)# service vrrp

2. router vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター（以下、VR100）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterB(config)# router vrrp 100 vlan100

3. virtual-ipコマンドでVR100のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.100.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterB(config-router)# virtual-ip 10.100.100.32 backup

4. priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。

       RouterB(config-router)# priority 100

   Note

   優先度100は初期値なので、実際には本コマンドを入力する必要はありません。

5. enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。

       RouterB(config-router)# enable
       RouterB(config-router)# exit

6. router vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター（以下、VR200）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterB(config)# router vrrp 200 vlan200

7. virtual-ipコマンドでVR200のバーチャルIPアドレスを設定します。ここではバーチャルIPアドレス10.100.200.32がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterB(config-router)# virtual-ip 10.100.200.32 backup

8. priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。

       RouterB(config-router)# priority 100

   Note

   優先度100は初期値なので、実際には本コマンドを入力する必要はありません。

9. enableコマンドを実行してVR200の動作を有効化します。

       RouterB(config-router)# enable

基本設定は以上です。
LAN上の各IPv4ホストには、デフォルトゲートウェイとして、バーチャルルーターのIPアドレス（バーチャルIPアドレス）を設定します。通常時には、ルーターAがマスタールーターとして機能し、VLAN間のトラフィックを転送します。ルーターAのインターフェースのどちらか（vlan100、vlan200）がリンクダウンした場合は、ルーターBがマスタールーターとなりバーチャルルーターとしての役割を引き継ぎます。このとき、バーチャルルーターのIPアドレスとMACアドレスは変化しないため、LAN上のホストがルーターの切り替えを意識することはありません。
Note

VLANインターフェースは、所属ポートがすべてリンクダウンして初めて「リンクダウン」状態になります。一方、VLAN所属ポートが1ポートでもリンクアップすれば、該当VLANインターフェースは「リンクアップ」状態になります。VRRPでは、VLANインターフェースのリンクアップ、リンクダウンを検出してマスタールーターを切り替えるため、VLAN所属ポートの設定に注意してください。上図のように、マスター、バックアップともVLAN所属ポートを1ポートのみとし、レイヤー2スイッチを介してクライアントや他のルーターと接続すると、確実にリンクダウンを検出させることができます。

### IPv6

ここでは、次のようなネットワーク構成を例にIPv6用のVRRP設定手順を示します。

この例では通常ルーターAが使用されますが、ルーターAが故障すると、同ルーターが定期的に送信しているVRRP AdvertisementパケットをルーターBが受信できなくなります。この場合、ルーターBはルーターAがダウンしたものと見なしてバックアップルーターからマスタールーターに移行し、両方のセグメントに対するデフォルトゲートウェイアドレスを引き継ぎます。ルーターAが復旧すると、ルーターBは元のバックアップルーターに戻ります。
なお、以下の各例では、VLANの作成とIPv6アドレスの設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。IPv6アドレスの設定については、「IPv6」の「IPv6インターフェース」をご覧ください。

#### ルーターA

1. VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。

       RouterA(config)# service vrrp

2. router ipv6 vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター（以下、VR100）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterA(config)# router ipv6 vrrp 100 vlan100

3. virtual-ipv6コマンドでVR100のバーチャルIPv6アドレスを設定します。ここではバーチャルIPv6アドレス fe80::1 がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterA(config-router)# virtual-ipv6 fe80::1 backup

   Note

   バーチャルIPv6アドレスには、リンクローカルアドレスを指定する必要があります。

4. priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。

       RouterA(config-router)# priority 101

5. circuit-failoverコマンドを用いて、vlan200（VR200）がダウンした場合にvlan100側（VRID=100）の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。

       RouterA(config-router)# circuit-failover vlan200 2

6. enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。

       RouterA(config-router)# enable
       RouterA(config-router)# exit

7. router ipv6 vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター（以下、VR200）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterA(config)# router ipv6 vrrp 200 vlan200

8. virtual-ipv6コマンドでVR200のバーチャルIPv6アドレスを設定します。ここではバーチャルIPアドレス fe80::1 がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterA(config-router)# virtual-ipv6 fe80::1 backup

   Note

   バーチャルIPv6アドレスには、リンクローカルアドレスを指定する必要があります。

9. priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのマスタールーターにするため、優先度を初期値の100よりも高い101に設定します。

       RouterA(config-router)# priority 101

10. circuit-failoverコマンドを用いて、vlan100（VR100）がダウンした場合にvlan200側（VR200）の優先度を引き下げ、ルーターBがマスタールーターになるよう設定します。

        RouterA(config-router)# circuit-failover vlan100 2

11. enableコマンドを実行してVR200の動作を有効化します。

        RouterA(config-router)# enable

#### ルーターB

1. VRRPの動作に必要なVRRPサービスを有効にします。これにはservice vrrpコマンドを使います。

       RouterB(config)# service vrrp

2. router ipv6 vrrpコマンドを実行して、vlan100インターフェース上にVRID=100のバーチャルルーター（以下、VR100）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterB(config)# router ipv6 vrrp 100 vlan100

3. virtual-ipv6コマンドでVR100のバーチャルIPv6アドレスを設定します。ここではバーチャルIPv6アドレス fe80::1 がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterB(config-router)# virtual-ipv6 fe80::1 backup

   Note

   バーチャルIPv6アドレスには、リンクローカルアドレスを指定する必要があります。

4. priorityコマンドでVR100における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。

       RouterB(config-router)# priority 100

   Note

   優先度100は初期値なので、実際には本コマンドを入力する必要はありません。

5. enableコマンドを実行してVR100の動作を有効化します。これでVR100の設定は完了です。exitコマンドでグローバルコンフィグモードに戻り、次にVR200の設定に移ります。

       RouterB(config-router)# enable
       RouterB(config-router)# exit

6. router ipv6 vrrpコマンドを実行して、vlan200インターフェース上にVRID=200のバーチャルルーター（以下、VR200）を作成し、該当バーチャルルーターの設定を行うためのVRRPモードに移行します。

       RouterB(config)# router ipv6 vrrp 200 vlan200

7. virtual-ipv6コマンドでVR200のバーチャルIPv6アドレスを設定します。ここではバーチャルIPv6アドレス fe80::1 がインターフェースの実アドレスではないので、キーワードbackupを指定します。

       RouterB(config-router)# virtual-ipv6 fe80::1 backup

   Note

   バーチャルIPv6アドレスには、リンクローカルアドレスを指定する必要があります。

8. priorityコマンドでVR200における優先度を設定します。こちらをデフォルトのバックアップルーターにするため、優先度は初期値100のままとします。

       RouterB(config-router)# priority 100

   Note

   優先度100は初期値なので、実際には本コマンドを入力する必要はありません。

9. enableコマンドを実行してVR200の動作を有効化します。

       RouterB(config-router)# enable

基本設定は以上です。
LAN上の各IPv6ホストには、デフォルトゲートウェイとして、バーチャルルーターのIPv6リンクローカルアドレス（バーチャルIPv6アドレス）を設定します。通常時には、ルーターAがマスタールーターとして機能し、VLAN間のトラフィックを転送します。ルーターAのインターフェースのどちらか（vlan100、vlan200）がリンクダウンした場合は、ルーターBがマスタールーターとなりバーチャルルーターとしての役割を引き継ぎます。このとき、バーチャルルーターのIPv6リンクローカルアドレスとMACアドレスは変化しないため、LAN上のホストがルーターの切り替えを意識することはありません。
Note

VLANインターフェースは、所属ポートがすべてリンクダウンして初めて「リンクダウン」状態になります。一方、VLAN所属ポートが1ポートでもリンクアップすれば、該当VLANインターフェースは「リンクアップ」状態になります。VRRPでは、VLANインターフェースのリンクアップ、リンクダウンを検出してマスタールーターを切り替えるため、VLAN所属ポートの設定に注意してください。上図のように、マスター、バックアップともVLAN所属ポートを1ポートのみとし、レイヤー2スイッチを介してクライアントや他のルーターと接続すると、確実にリンクダウンを検出させることができます。