Yamaha RTX ルータのVRRP設定例

スポンサーリンク

Yamaha RTX ルータにおけるVRRPの設定方法を紹介します。VRRPはデフォルトゲートウェイを冗長化する技術です。データセンター内のハイエンド機では2台の機器を1台に見せかける技術が主流なので近年は使用頻度が減りつつありますが、ローエンド機器やWAN接続部分ではまだまだ現役の技術かと思われます。

設定まとめ

基本設定

VRRPの最小限の設定は以下の通りです。

ip <インターフェース番号> vrrp <ID> <仮想IPアドレス>

その他、オプションとしてadvertise間隔、プライオリティ、プリエンプト等のオプション指定が可能です。構文は以下の通りです。

ip <インターフェース> vrrp <ID> <仮想IPアドレス> [<オプション>...]

オプションの指定例は以下の通りです。

ip lan1 vrrp 10 192.168.10.254 priority=100 preempt=on advertise-interval=3

interface tracking

WAN側のインタフェースがdownしているか否かに応じてVRRPを切り替える、いわゆるinterface trackingの設定も可能です。interface trackingを設定するには”vrrp shutdown”コマンドを使用します。

ip <VRRPを設定するインターフェース> vrrp shutdown trigger <ID> <監視対象のインターフェース>

多くの場合は、LANインターフェースに対してVRRPを設定し、WANインターフェースを監視対象にします。ですので、Yamaha RTX 810の場合ならば、以下のような設定になる事が殆どです。

ip lan1 vrrp shutdown trigger <ID> lan2

icmp tracking

ping応答するかによってVRRPを切り替える事も可能です。ping応答によってVRRPを切り替えるには、まず、ip keepaliveコマンドでping監視を定義します。

ip keepalive <ID> icmp-echo <interval> <count> <target>

以下は200.0.10.1に対して1秒間隔で監視し3連続で応答がなかった場合にNGと判定するkeepaliveの設定例です。

ip keepalive 10 icmp-echo 1 3 200.0.10.1

keepaliveの監視結果はstatic routeと紐づける事ができます。static routeと紐づける設定例は以下の通りです。

ip route <宛先> gateway <next hop> keepalive <keepaliveのID>

VRRPはstatic routeがルーティングテーブルに載っているかどうかに応じてVRRPを切り替える事ができます。

ip <VRRPを設定するインターフェース> vrrp shutdown trigger <ID> route <宛先> <next hop>

以上の設定を組み合わせ、対向機器がping応答する場合のみVRRPを有効にするような設定例は以下のようになります。

ip keepalive 50 icmp-echo 1 3 200.0.10.1
ip route default gateway 200.0.10.1 keepalive 50
ip lan1 vrrp 10 192.168.10.254 priority=100 preempt=on advertise-interval=3
ip lan1 vrrp shutdown trigger 10 route default 200.0.10.1

動作確認

動作確認の構成

以下の環境で動作確認を行います。

            +-----------------+ 
       eth0 |    VyOS 1.4     | eth1
        +---+    Internet     +---+
        | .1|Lo:200.0.0.200/32|.1 |
        |   +-----------------+   |
        | 200.0.10.0/24           | 200.0.20.0/24
        |                         |
   lan2 | .10                lan2 | .20
+-------+----------+    +---------+--------+
|  Yamaha RTX 810  |    |  Yamaha RTX 810  |
|        R1        |    |        R2        |
+-------+----------+    +---------+--------+
   lan1 | .1                 lan1 | .2
        | vrrp(.254)              | vrrp(.254)
        +------------+------------+
                     | 192.168.10.0/24
                     | 
              ens224 | .10
             +-------+----------+
             |  RockyLinux 8.4  |
             |     host010      |
             +------------------+

初期設定

初期設定はIPアドレス、デフォルトゲートウェイ、NATとします。

R1 : Yamaha RTX 810
ip route default gateway 200.0.10.1
ip lan1 address 192.168.10.1/24
ip lan2 address 200.0.10.10/24
ip lan2 nat descriptor 100
nat descriptor type 100 masquerade
nat descriptor address outer 100 primary
telnetd host lan
R2 : Yamaha RTX 810
ip route default gateway 200.0.20.1
ip lan1 address 192.168.10.2/24
ip lan2 address 200.0.20.20/24
ip lan2 nat descriptor 100
nat descriptor type 100 masquerade
nat descriptor address outer 100 primary
telnetd host lan

動作確認 (1) VRRPによる仮想IPアドレス設定

R1とR2の両方にVRRPを設定し、R1とR2で仮想IPアドレスを設定します。なお、priorityが大きい方が優先されますので、以下設定例の場合はR1に仮想IPアドレスが付与されます。

[R1:RTX810]
ip lan1 vrrp 10 192.168.10.254 priority=100 preempt=on advertise-interval=3
[R2:RTX810]
ip lan1 vrrp 10 192.168.10.254 priority=90 preempt=on advertise-interval=3

VRRPの状態は”show status vrrp”で確認する事ができます。

[R1:RTX810]
# show status vrrp 
 LAN1 ID:10  仮想IPアドレス: 192.168.10.254
  現在のマスター: 192.168.10.1 優先度: 100
      自分の状態: Master / 優先度: 100  Preempt  認証: NONE  タイマ: 3
[R2:RTX810]
# show status vrrp 
 LAN1 ID:10  仮想IPアドレス: 192.168.10.254
  現在のマスター: 192.168.10.1 優先度: 100
      自分の状態: Backup / 優先度: 90  Preempt  認証: NONE  タイマ: 3

念の為、host010からYamaha RTXを経由して、インターネットを擬似したVyOSの200.0.0.200まで疎通可能である事を確認します。

[host010:RockyLinus8.4]
[root@host010 ‾]# ping -c 3 200.0.0.200
PING 200.0.0.200 (200.0.0.200) 56(84) bytes of data.
64 bytes from 200.0.0.200: icmp_seq=1 ttl=63 time=1.01 ms
64 bytes from 200.0.0.200: icmp_seq=2 ttl=63 time=0.866 ms
64 bytes from 200.0.0.200: icmp_seq=3 ttl=63 time=0.801 ms

--- 200.0.0.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2016ms
rtt min/avg/max/mdev = 0.801/0.893/1.014/0.095 ms

動作確認 (2) リンクダウン障害対策

Yamaha RTXに限らず、VRRPのデフォルト設定は筐体障害にしか耐えられず、WAN側のインターフェースダウンを検出する事はありません。インターフェースダウンを検出する設定はinterface trackingなどを呼ばれる事が多く、Yamaha RTXは”vrrp shutdow”コマンドを使用して設定します。

以下はlan2がlink down状態である場合にVRRPを停止される設定です。

[R1:RTX810]
ip lan1 vrrp shutdown trigger 10 lan2 
[R2:RTX810]
ip lan1 vrrp shutdown trigger 10 lan2 

この設定でR1のlan2を抜線操作すると、VRRPのマスターがR1からR2に切り替わります。

[R1:RTX810]
# show status vrrp 
# 
[R2:RTX810]
# show status vrrp 
 LAN1 ID:10  仮想IPアドレス: 192.168.10.254
  現在のマスター: 192.168.10.2 優先度: 90
      自分の状態: Master / 優先度: 90  Preempt  認証: NONE  タイマ: 3
# 

動作確認 (3) リンクダウンを伴わない障害対策

前述の設定例は、リンクダウン状態で切り替わる設定であり、リンクダウンを伴わないような対向装置障害では切り替わりません。このような障害に対応するには、ping監視と組み合わせる必要があります。

Yamaha RTXでping監視とVRRPを組み合わせるには、まずは”ip keepalive”コマンドでping監視を定義します。

[R1:RTX810]
ip keepalive 10 icmp-echo 1 3 200.0.10.1 
[R2:RTX810]
ip keepalive 10 icmp-echo 1 3 200.0.20.1

ping監視が成功しているかどうかは”show status ip keepalive”で確認できます。

[R1:RTX810]
# show status ip keepalive 

 ID  STATE TARGET                                  REACH TIMER COUNT
------------------------------------------------------------------------
  10   up  200.0.10.1                                yes     1     3
[R2:RTX810]
# show status ip keepalive 

 ID  STATE TARGET                                  REACH TIMER COUNT
------------------------------------------------------------------------
  10   up  200.0.20.1                                yes     1     3

ここまでの確認は不要かと思いますが、念の為にパケットキャプチャしてみると、確かにYamaha RTXから定期的にicmp echoが送信されている事が分かります。

[Internet:VyOS1.4]
admin@vyos:‾$ tcpdump -nnn -i eth0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:52:27.849964 IP 200.0.10.10 > 200.0.10.1: ICMP echo request, id 60049, seq 40128, length 72
10:52:27.850023 IP 200.0.10.1 > 200.0.10.10: ICMP echo reply, id 60049, seq 40128, length 72
10:52:28.850768 IP 200.0.10.10 > 200.0.10.1: ICMP echo request, id 60050, seq 40129, length 72
10:52:28.850835 IP 200.0.10.1 > 200.0.10.10: ICMP echo reply, id 60050, seq 40129, length 72
10:52:29.851549 IP 200.0.10.10 > 200.0.10.1: ICMP echo request, id 60051, seq 40130, length 72
10:52:29.851601 IP 200.0.10.1 > 200.0.10.10: ICMP echo reply, id 60051, seq 40130, length 72

前述のip keepalive設定を、デフォルトゲートウェイを指し示すstatic routeの設定と組み合わせます。このような設定をする事によって、ping監視で生存が確認されている場合のみstatic routeがルーティングテーブルに載ります。

[R1:RTX810]
ip route default gateway 200.0.10.1 keepalive 10 
[R2:RTX810]
ip route default gateway 200.0.20.1 keepalive 10 

VRRPはルーティングテーブルと組み合わせた設定が可能です。以下はデフォルトゲートウェイがルーティングテーブルに存在する場合のみVRRPが有効になる設定例です。デフォルトゲートウェイはping監視が生存している場合のみルーティングテーブルに載るので、ping監視で生存が確認できている場合のみVRRPが有効になります。

[R1:RTX810]
ip lan1 vrrp shutdown trigger 10 route default 200.0.10.1
[R2:RTX810]
ip lan1 vrrp shutdown trigger 10 route default 200.0.20.1

この状態で、Internet側でリンクダウンを伴わない障害を再現してみましょう。VyOSのdisableコマンドでリンクダウンを伴わない障害を再現します。

この動作確認方法が可能なのは仮想環境のみです。物理的な環境でshutdownコマンドやdisableコマンドを使用すると、対向機器はリンクダウンを検出できます。物理環境でリンクダウンを伴わない障害を再現するのは工夫が必要です。物理環境でリンクダウンを伴わない障害を再現させたいならば「直接接続ではなく途中にハブと挟む」等の工夫をしましょう。

[Internet:VyOS1.4]
admin@vyos# set interfaces ethernet eth0 disable
[edit]
admin@vyos# commit
[edit]
admin@vyos# 

障害が発生すると、R1側はデフォルトゲートウェイが「down」と表示され、VRRPは停止した状態になります。一方、R2側はVRRPがバックアップからマスターに切り替わります。

[R1:RTX810]
# show ip route 
宛先ネットワーク    ゲートウェイ     インタフェース  種別  付加情報
default             200.0.10.1             LAN2    (down)  k(10)
192.168.10.0/24     192.168.10.1           LAN1  implicit  
200.0.10.0/24       200.0.10.10            LAN2  implicit  
# 
# 
# show status vrrp 
# 
[R2:RTX810]
# show ip route 
宛先ネットワーク    ゲートウェイ     インタフェース  種別  付加情報
default             200.0.20.1             LAN2    static  k(10)
192.168.10.0/24     192.168.10.2           LAN1  implicit  
200.0.20.0/24       200.0.20.20            LAN2  implicit  
# 
# 
# show status vrrp 
 LAN1 ID:10  仮想IPアドレス: 192.168.10.254
  現在のマスター: 192.168.10.2 優先度: 90
      自分の状態: Master / 優先度: 90  Preempt  認証: NONE  タイマ: 3
# 
タイトルとURLをコピーしました