スタティックルートによる経路冗長化
1.概要
ネットワークにおける経路冗長化設計となると、OSPFやBGPなど動的なプロトコルを用いることがほとんどですが、ユーザ企業のセキュリティポリシーや回線の制約によって、スタティックルートしか使えない場合があります。ここでは具体的なシナリオを元に、スタティックルート構成における経路冗長化方法を記載します。
一般的には冗長化されたIP-VPN網を使って拠点間接続を行う際に使われるケースが多いです。
2.シナリオ
以下のような構成において、スタティックルートのみで経路の自動切り替えをします。
本シナリオで想定する通信は、Server1(192.168.1.100)からServer2(192.168.2.100)へ通信になります。
なおISP1とISP2はそれぞれ異なるプロバイダを模擬しており、ISP1経由を主回線、ISP2経由を副回線とします。
3.設定と確認
Ciscoルータの設定例を記載します。ここでは冗長化設定有りと無しの設定を行い、実際の動きを比較してみます。
なお、BR1,BR2はCisco 891FJ、ISP1,ISP2はCatalyst 3750Gを使って検証しています。
準備1(ISP1とISP2の設定)
ISP1とISP2はプロバイダ回線を模擬したものですので、一般的なインタフェースの設定とルーティングを行うのみとなります。
### ISP1の設定 ###
ip routing
interface GigabitEthernet2/0/1
no switchport
ip address 10.0.12.1 255.255.255.0
!
interface GigabitEthernet2/0/2
no switchport
ip address 10.0.11.1 255.255.255.0
ip route 192.168.1.0 255.255.255.0 10.0.12.2
ip route 192.168.2.0 255.255.255.0 10.0.11.2
### ISP2の設定 ###
ip routing
interface GigabitEthernet1/0/1
no switchport
ip address 10.0.22.1 255.255.255.0
!
interface GigabitEthernet1/0/2
no switchport
ip address 10.0.21.1 255.255.255.0
ip route 192.168.1.0 255.255.255.0 10.0.22.2
ip route 192.168.2.0 255.255.255.0 10.0.21.2
準備2(BR1とBR2の設定)
BR1とBR2については、ルーティングを除くインタフェースの設定を行います。ルーティング設定は後述の検証の過程で追加します。
### BR1の設定 ###
interface FastEthernet0
no shutdown
ip address 10.0.22.2 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet0
switchport access vlan 100
switchport mode access
no ip address
spanning-tree portfast
interface GigabitEthernet8
no shutdown
ip address 10.0.12.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan100
ip address 192.168.1.254 255.255.255.0
### BR2の設定 ###
interface FastEthernet0
no shutdown
ip address 10.0.21.2 255.255.255.0
duplex auto
speed auto
interface GigabitEthernet0
switchport access vlan 200
switchport mode access
no ip address
spanning-tree portfast
!
interface GigabitEthernet8
no shutdown
ip address 10.0.11.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan200
ip address 192.168.2.254 255.255.255.0
これで準備が整いました。
設定(スタティックルート優先度設定のみ)
スタティックルート設定を行います。BR1~BR2の通信において、スタティックルートはそれぞれ4つ必要になります。
ただし、主回線のスタティックルートを優先する必要があるので、副回線向けのスタティックルートにはAD値を設定し、優先度を設定する必要があります。
AD値は、スタティックルート設定コマンドの末尾に1~254の優先度(値が小さいほど優先)を追加することで設定することができます。スタティックルートのデフォルトAD値は1ですので、ここでは副回線のスタティックルートに明示的に2を設定します。
### BR1の設定 ###
ip route 10.0.11.0 255.255.255.0 10.0.12.1 # BR1からISP1~BR2間へのネットワーク経路
ip route 10.0.21.0 255.255.255.0 10.0.22.1 # BR1からISP2~BR2間へのネットワーク通路
ip route 192.168.2.0 255.255.255.0 10.0.12.1 # BR1からBR2のLAN側(VLAN200)へのネットワーク経路(主回線)
ip route 192.168.2.0 255.255.255.0 10.0.22.1 2 # BR1からBR2のLAN側(VLAN200)へのネットワーク経路(副回線)※AD値2とする
### BR2の設定 ###
ip route 10.0.12.0 255.255.255.0 10.0.11.1 # BR2からISP1~BR1間へのネットワーク経路
ip route 10.0.22.0 255.255.255.0 10.0.21.1 # BR2からISP2~BR1間へのネットワーク経路
ip route 192.168.1.0 255.255.255.0 10.0.11.1 # BR2からBR1のLAN側(VLAN100)へのネットワーク経路(主回線)
ip route 192.168.1.0 255.255.255.0 10.0.21.1 2 # BR2からBR1のLAN側(VLAN100)へのネットワーク経路(副回線)※AD値2とする
動作確認(スタティックルート優先度設定のみ)
さて、この状態で通信できるでしょうか。まずServer1からServer2へPINGを実行してみると、無事に通信ができています。
Server1 > ping 192.168.2.100
192.168.2.100 に ping を送信しています 32 バイトのデータ:
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
BR1とBR2のルーティングテーブル(経路情報)を確認してみます。行き(Server1→Server2)のネットワーク(192.168.2.0/24)への経路は
192.168.2.0/24 [1/0] via 10.0.12.1
となっています。つまり主回線(10.0.12.1)経由で通信が行われます。
BR1#show ip route static
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
S 10.0.11.0/24 [1/0] via 10.0.12.1
S 10.0.21.0/24 [1/0] via 10.0.22.1
S 192.168.2.0/24 [1/0] via 10.0.12.1
BR1#
次にBR2のルーティングテーブルを確認します。戻り(Server2→Server1)のネットワーク(192.168.1.0/24)への経路はどうなっているでしょうか。
192.168.1.0/24 [1/0] via 10.0.11.1
となっているので、戻りも主回線(10.0.11.1)であることがわかります。
BR2#show ip route static
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
S 10.0.12.0/24 [1/0] via 10.0.11.1
S 10.0.22.0/24 [1/0] via 10.0.21.1
S 192.168.1.0/24 [1/0] via 10.0.11.1
BR2#
それではBR1~ISP1のケーブルを切断し通信が回復するか確認してみましょう。通信は切断されたままになるはずです。
Server1 > ping 192.168.2.100
要求がタイムアウトしました。
192.168.1.254 からの応答: 宛先ホストに到達できません。
192.168.1.254 からの応答: 宛先ホストに到達できません。
192.168.1.254 からの応答: 宛先ホストに到達できません。
なぜでしょうか。BR1とBR2のルーティングテーブルを確認してみます。
BR1#show ip route
S 192.168.2.0/24 [2/0] via 10.0.22.1
BR1#
BR2#show ip route
S 192.168.1.0/24 [1/0] via 10.0.11.1
BR2#
BR1は192.168.2.0/24 [1/0] via 10.0.22.1
と副回線経由になっていることに対し、BR2は192.168.1.0/24 [1/0] via 10.0.11.1
と主回線経由になっています。
つまり、Server1からServer2への通信は下図のように転送されており、通信ができないことがわかります。
このような問題が発生するのは、なぜでしょうか。
簡単に言うと、BR2では隣接機器へのリンクがオンラインになっているため、BR2視点では障害が起きていないことになります。これにより、主回線向けのスタティックルートが生きたままになり、今回のような問題が起きてしまいます。
つまり、
BR2(またはBR1)は回線上のルータ、スイッチをまたいだ先の回線障害は検知することができない
ことに原因があります。
この場合はObject Trackingを使い、BR1からBR2までの回線状況を監視し、障害検知を行う必要があります。
次の項でObject Trackingの設定を追加しましょう。
設定(スタティックルート優先度設定+Object Tracking)
Object Trackingを含めた追加手順を記載します。なお、Object TrackingはIP SLAを利用します。IP SLAはCisco独自の機能のため、他ベンダの機器を使う場合は同様の機能があるか確認する必要があります。
BR1(config)#ip sla 1
BR1(config-ip-sla)#icmp-echo 10.0.11.2 source-interface Gi8
BR1(config-ip-sla-echo)#frequency 10
BR1(config-ip-sla-echo)#timeout 5000
BR1(config-ip-sla-echo)#exit
BR1(config)# ip sla schedule 1 life forever start-time now
BR1(config)#track 101 ip sla 1 reachability
BR1(config-track)#exit
BR1(config)#no ip route 192.168.2.0 255.255.255.0 10.0.12.1
BR1(config)#ip route 192.168.2.0 255.255.255.0 10.0.12.1 track 101
BR1(config)#ip route 192.168.2.0 255.255.255.0 10.0.22.1 2
BR1(config)#end
BR2(config)#ip sla 1
BR2(config-ip-sla)#icmp-echo 10.0.12.2 source-interface Gi8
BR2(config-ip-sla-echo)#frequency 10
BR2(config-ip-sla-echo)#timeout 5000
BR2(config-ip-sla-echo)#exit
BR2(config)#ip sla schedule 1 life forever start-time now
BR2(config)#track 101 ip sla 1 reachability
BR2(config-track)#exit
BR2(config)#no ip route 192.168.1.0 255.255.255.0 10.0.11.1
BR2(config)# ip route 192.168.1.0 255.255.255.0 10.0.11.1 track 101
BR2(config)#ip route 192.168.1.0 255.255.255.0 10.0.21.1 2
動作確認(スタティックルート優先度設定+Object Tracking)
Server1からServer2へPINGを実行してみると、通信ができています。
Server1 > ping 192.168.2.100
192.168.2.100 に ping を送信しています 32 バイトのデータ:
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
次にBR1とBR2のルーティングテーブル(経路情報)を確認してみます。
BR1#show ip route static
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
S 10.0.11.0/24 [1/0] via 10.0.12.1
S 10.0.21.0/24 [1/0] via 10.0.22.1
S 192.168.2.0/24 [1/0] via 10.0.12.1
BR1#
BR2#show ip route static
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
S 10.0.12.0/24 [1/0] via 10.0.11.1
S 10.0.22.0/24 [1/0] via 10.0.21.1
S 192.168.1.0/24 [1/0] via 10.0.11.1
BR2#
それではBR1~ISP1のケーブルを切断し通信が回復するか確認してみましょう。
ケーブルを切断後、数秒程度でBR1,BR2のコンソールには以下の表示が出るはずです。
%TRACK-6-STATE: 101 ip sla 1 reachability Down -> Up
Server1 > ping 192.168.2.100
192.168.2.100 に ping を送信しています 32 バイトのデータ:
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.2.100 からの応答: バイト数 =32 時間 <1ms TTL=64
次にBR1とBR2のルーティングテーブル(経路情報)を確認してみます。
BR1#show ip route static
10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
S 10.0.21.0/24 [1/0] via 10.0.22.1
S 192.168.2.0/24 [2/0] via 10.0.22.1
BR2#show ip route static
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
S 10.0.12.0/24 [1/0] via 10.0.11.1
S 10.0.22.0/24 [1/0] via 10.0.21.1
S 192.168.1.0/24 [2/0] via 10.0.21.1
BR2#
また、下図のようなISP1~BR2間の障害ケースでも同様に経路情報が切り替わります。
おまけ
IP SLA(Service Level Agreement)とは
直訳すると、「サービス・レベル合意」となります。
IP SLAは遠隔地のネットワーク機器に対して、ICMP ECHO要求などの監視パケットを送信し、障害を検知することができます。
今回はこのIP SLAでルータ間のPING死活監視を行い、Object Trackingと紐づけることでスタティックルートの制御を行っているわけです。