セキュリティと VPN : IPSec ネゴシエーション/IKE プロトコル

Dynamic Multipoint IPsec VPN(マルチポイント GRE/NHRP を使用した IPsec VPN のスケーリング)

2003 年 6 月 16 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2006 年 1 月 4 日) | フィードバック

目次

概要
背景説明
DMVPN ソリューション
     自動 IPsec 暗号化の始動
     「スポークツーハブ」リンクのダイナミック トンネルの作成
     「スポークツースポーク」トラフィックのダイナミック トンネルの作成
     ダイナミック ルーティング プロトコルのサポート
     mGRE 用の Cisco Express Forwarding ファースト スイッチング
IPsec 保護 VPN でのダイナミック ルーティングの使用
基本設定
     ハブ ルータ アンド スポーク ルータでのルーティング テーブルの例
ハブ ルータの設定サイズの縮小
スポークでのダイナミック アドレスのサポート
ダイナミック マルチポイント ハブ アンド スポーク
ダイナミック マルチポイント IPsec VPN
     RIP
     EIGRP
     OSPF
     初期状態
     Spoke1 と Spoke2 の間でダイナミック リンクが作成された後の状態
デュアル ハブを使用したダイナミック マルチポイント IPsec VPN
デュアル ハブ - シングル DMVPN レイアウト
     初期状態と変更
デュアル ハブ - デュアル DMVPN レイアウト
     初期状態と変更
結論
関連するシスコ サポート コミュニティ ディスカッション
関連情報

概要

この文書では、Dynamic Multipoint IPsec VPN(DMVPN)について説明し、Cisco IOS(R) ソフトウェアでのこの新しい IPsec VPN ソリューションを活用するために、企業がネットワークを設計あるいはマイグレーションする必要性について解説しています。

背景説明

企業では、暗号化によりトラフィックを保護しながらインターネット経由でメイン サイトに多くのサイトを相互接続し、さらに場合によっては各サイト同士を相互接続する必要があります。 たとえば、在庫確認と注文のために企業の本社への接続を必要とする小売店舗群では、製品が入手できるかどうかを確認するため企業内の他の店舗への接続を必要とする場合もあります。 以前ならば、この接続を実現するには、ISDN やフレーム リレーなどのレイヤ 2 ネットワークを使用して、すべてを相互接続する方法しかありませんでした。 内部 IP トラフィック用にこのようなハードワイヤによるリンクを構成して費用をかけるのは、時間がかかり、コスト高となる可能性があります。 (メイン サイトを含む)すべてのサイトですでに比較的安価なインターネット アクセスが用意されている場合、IPsec トンネルを使用してプライバシーとデータの完全性を確保することにより、このインターネット アクセスを店舗と本社との間の内部 IP 通信にも使用できます。

企業が、インターネット経由でサイトを相互接続する大規模な IPsec ネットワークを構築するには、IPsec ネットワークをスケーリングできる必要があります。 IPsec は 2 つのエンドポイント(ピア)の間のトラフィックを暗号化し、暗号化は共有の「秘密キー」を使用して 2 つのエンドポイントにより行われます。 この秘密キーはこれら 2 つのエンドポイントの間でのみ共有されるため、暗号化されたネットワークは必然的に、ポイントツーポイント リンクの集まりになります。 したがって、IPsec は本質的にはポイントツーポイント トンネル ネットワークです。 大規模なポイントツーポイント ネットワークをスケーリングする最も実現性の高い方法は、ネットワークをハブ アンド スポークまたはフル(部分)メッシュ ネットワークに編成する方法です。 大部分のネットワークでは、IP トラフィックの大部分はスポークとハブの間を流れ、スポーク間ではトラフィックはほとんど流れていないので、多くの場合ではハブ アンド スポークの設計が最適の選択肢になります。 このようなネットワークではすべてのサイト間のリンクへの投資がきわめて高額なものとなっていたので、本設計は旧式のフレーム リレー ネットワークにも適していることになります。

ハブとスポークの間の相互接続としてインターネットを使用する場合、スポークも追加コストなしで相互に直接接続できますが、フル(部分)メッシュ ネットワークを設定/管理することは不可能ではなくとも、非常に困難なことでした。 多くの場合フルメッシュ ネットワークまたは部分メッシュ ネットワークが有利です。それは、スポークツースポーク トラフィックがハブを経由することなく直接に送信できると、コストの削減が可能であるためです。 ハブを通過するスポークツースポーク トラフィックは、特に IPsec 暗号化を使用する際にハブのリソースを使用し、余分な遅延が発生する場合があります。これは、ハブが送信元スポークからの着信パケットを復号化し、続いてそのトラフィックを再度暗号化して受信側スポークに送信する必要があるためです。 ダイレクトなスポークツースポーク トラフィックが有用であるもう 1 つの例は、2 つのスポークが同じ市内にあり、ハブが全国をカバーしている場合です。

IPsec ハブ アンド スポーク ネットワークはすでに配備され、規模も大きくなっているため、IPsec ハブ アンド スポーク ネットワークで IP パケットを可能な限りダイナミックにルーティングさせることが一層求められるようになっています。 旧式のフレーム リレー ハブ アンド スポーク ネットワークでは、これはフレーム リレー リンク上で OSPF や EIGRP などのダイナミック ルーティング プロトコルを実行することによって実現されていました。 この方法は、スポーク ネットワークの到達可能性のダイナミックなアドバタイジングと、IP ルーティング ネットワークの冗長性をサポートするためにも便利でした。 ネットワークでハブ ルータが失われた場合、バックアップ ハブ ルータが自動的に引き継ぎを行い、スポーク ネットワークへのネットワーク接続を維持できます。

IPsec トンネルとダイナミック ルーティング プロトコルには根本的な問題が存在します。 ダイナミック ルーティング プロトコルは IP マルチキャストまたはブロードキャスト パケットの使用に依存していますが、IPsec はマルチキャストまたはブロードキャスト パケットの暗号化をサポートしていません。 現時点でこの問題を解決するには、Generic Routing Encapsulation(GRE; 総称ルーティング カプセル化)トンネルと IPsec 暗号化を組み合わせて使用する方法があります。

GRE トンネルは、GRE トンネルのもう一方の端への IP マルチキャストおよびブロードキャスト パケットの転送をサポートしています。 GRE トンネル パケットは IP ユニキャスト パケットであるため、GRE パケットは IPsec を使用して暗号化できます。 このシナリオでは、GRE がトンネリングの作業を行い、IPsec が VPN ネットワークのサポートの暗号化部分を行います。 GRE トンネルの設定時には、トンネルのエンドポイント(tunnel source ...tunnel destination ...)の IP アドレスは、もう一方のエンドポイントにより認識され、インターネット経由でルーティング可能である必要があります。 このことは、このネットワーク内のハブとすべてのスポーク ルータは、スタティックな非プライベート IP アドレスが必要であることを意味します。

小規模サイトのインターネットへの接続の場合、スポークの外部 IP アドレスは、インターネットに接続するたびに変化するのが一般的です。これは、スポークがオンライン(Asymmetric Digital Subscriber Line [ADSL; 非対称デジタル加入者線] およびケーブル サービス)になるたびに、Internet Service Provider(ISP; インターネット サービス プロバイダー)が Dynamic Host Configuration Protocol(DHCP; ダイナミック ホスト コンフィギュレーション プロトコル)により外部インターフェイスのアドレスをダイナミックに提供するためです。 すべてのユーザが同時にオンラインになるわけではないため、このようにルータの「外部アドレス」をダイナミックに割り当てることで、サービスプロバイダーはインターネット アドレス空間の使用を実際よりも多く予約できるようになります。 スポーク ルータのスタティック アドレスを割り当てるためにプロバイダーに支払う費用は、かなり高額になる可能性があります。 IPsec VPN でダイナミック ルーティング プロトコルを実行すると、GRE トンネルを使用する必要がありますが、外部物理インターフェイス上でダイナミックに割り当てられた IP アドレスを持つスポークを使用する選択肢がなくなります。

上記とその他の制限事項は、次の 4 つのポイントに要約できます。

  • IPsec は Access Control List(ACL; アクセス コントロール リスト)を使用してどのデータを暗号化するかを定義します。 そのため、新しい(サブ)ネットワークがスポークまたはハブの背後に追加されるたびに、ハブ ルータとスポーク ルータの両方で ACL を変更する必要があります。 サービス プロバイダーがルータを管理している場合、新しいトラフィックが暗号化されるよう IPsec ACL を変更するために、サービス プロバイダーに通知する必要があります。

  • 大規模なハブ アンド スポーク ネットワークでは、ハブ ルータ上の設定のサイズは、使用不可能な程にまで極大化することがあります。. たとえば、300 のスポーク ルータをサポートするには、ハブ ルータは 3900 行までの設定が必要になります。 これは、設定を表示して、デバッグ中の現在の問題に関連する設定のセクションを見つけるのが困難になる程の大きさです。 また、このサイズの設定では NVRAM に保存するには大きすぎ、フラッシュ メモリへの保存が必要となります。

  • GRE + IPsec では、エンドポイント ピアのアドレスの情報が必要です。 スポークの IP アドレスは独自のサービスプロバイダーを経由してインターネットに直接接続され、多くの場合それらの IP アドレスは、外部インターフェイスのアドレスが固定されないように設定されています。 IP アドレスは、(DHCP を介して)サイトがオンラインになるたびに変わる可能性があります。

  • スポークが IPsec VPN 経由で相互に直接やりとりを行う必要がある場合、そのハブ アンド スポーク ネットワークはフルメッシュ構造であることが必要です。 どのスポークが相互に直接やりとりする必要があるかはまだ判明していないため、各スポークでの他のすべてのスポークとの直接のやりとりが不要となる可能性がある場合でも、フルメッシュ構造は必要です。 また、小規模なスポーク ルータで IPsec を設定して、その小規模なスポーク ルータをネットワーク内のその他すべてのスポーク ルータに直接接続させるのは現実的ではないので、スポーク ルータは、場合によってはさらに強力なルータである必要があります。

DMVPN ソリューション

DMVPN ソリューションでは、上記の問題をスケーラブルな方法で解決するために、Multipoint GRE(mGRE)および Next Hop Resolution Protocol(NHRP)と、IPsec およびいくつかの新しい拡張機能を併用します。

自動 IPsec 暗号化の始動

現在、IPsec 暗号化トンネルの始動には、IPsec トンネルを通過するデータ トラフィック フローが必要です。 GRE と IPsec を併用する場合、GRE トンネルの設定にはすでに GRE トンネルのピア(tunnel destination …)のアドレスが含まれています。またこのアドレスは、IPsec ピアのアドレスでもあります。 これらのアドレスは両方とも事前に設定されています。

ハブ ルータで Tunnel Endpoint Discovery(TED)とダイナミックな暗号化マップを使用する場合、ハブでの IPsec ピア アドレスの事前設定が必要となる事態は回避できますが、ISAKMP ネゴシエーションが始まる前に、TED のプローブと応答を送受信する必要があります。 GRE を使用する場合は、ピアの発信元アドレスと宛先アドレスはすでに判明しているため、この送受信は不要です。 発信元アドレスと宛先アドレスは、設定の中にあるか、(マルチポイント GRE トンネルの場合)NHRP で解決されます。

DMVPN ソリューションでは、IPsec はポイントツーポイントおよびマルチポイント GRE トンネルの両方に対してただちにトリガされます。 また、暗号化 ACL を設定する必要はありません。これは、GRE トンネルの発信元アドレスと宛先アドレスから自動的に得られるためです。 IPsec 暗号化のパラメータを定義するには、次のコマンドを使用します。 set peer ... または match address ... コマンドは不要であることに注意してください、この情報は、関連付けられた GRE トンネルまたは NHRP マッピングから直接得られるためです。

 crypto ipsec profile <profile-name>
  set transform-set <transform-name>
 

次のコマンドは、トンネル インターフェイスと IPsec プロファイルを関連付けます。

 interface tunnel<number>
  ...
  tunnel protection ipsec profile <profile-name>
 

「スポークツーハブ」リンクのダイナミック トンネルの作成

DMVPN ネットワークのハブ ルータでは、スポークに関する GRE や IPsec の情報は設定されていません。 スポーク ルータの GRE トンネルは、ハブ ルータに関する情報を使用して(NHRP コマンドを介して)設定されます。 スポーク ルータの起動時には、前述されているように、ハブ ルータとの IPsec トンネルを自動的に始動します。 続いて NHRP を使用して、ハブ ルータに現在の物理インターフェイスの IP アドレスを通知します。 これは、次の 3 つの理由により有用です。

  • スポーク ルータに物理インターフェイスの IP アドレスがダイナミックに割り当てられている場合(ADSL やケーブルモデムなどで)、スポーク ルータはリロードのたびに新しい物理インターフェイスの IP アドレスを取得するため、ハブ ルータはこの情報を使用して設定できません。

  • ハブ ルータの設定は短く簡潔なものになります。これは、ピア ルータに関する GRE または IPsec の情報が不要であるためです。 この情報はすべて、NHRP を介してダイナミックに学習されます。

  • DMVPN ネットワークに新しいスポーク ルータを追加する場合、ハブや現在のスポーク ルータ上の設定を変更する必要がありません。 新しいスポーク ルータはハブ情報を使用して設定され、そのスポーク ルータは起動時にハブ ルータにダイナミックに登録されます。 ダイナミック ルーティング プロトコルは、このスポークのルーティング情報をハブに伝搬します。 ハブは、この新しいルーティング情報をその他のスポークに伝搬します。 またハブは、その他のスポークからのルーティング情報をこのスポークにも伝搬します。

「スポークツースポーク」トラフィックのダイナミック トンネルの作成

すでに説明したように、現在のメッシュ ネットワークでは、トンネルの一部または大部分が常に稼動中ではなかったり、あるいは不要であったとしても、すべてのポイントツーポイント IPsec(または IPsec+GRE)トンネルを全ルータ上で設定しておく必要があります。 DMVPN ソリューションでは、1 つのルータがハブで、その他すべてのルータ(スポーク)は、ハブへのトンネルを使用して設定されます。 スポークツーハブ トンネルは継続的にアップ状態で、スポークは、その他すべてのスポークへの直接トンネルに関する設定を必要としません。 その代わりに、スポークが(別のスポークの背後にあるサブネットなど)別のスポークへパケットを送信する必要がある場合、スポークは NHRP を使用して、ターゲット スポークの必要な宛先アドレスをダイナミックに決定します。 ハブ ルータは NHRP サーバとして動作し、送信元スポークに関するこの要求を処理します。 これにより、2 つのスポークは両者の間で(1 つの mGRE インターフェイスを介して)ダイナミックに IPsec トンネルを作成します。また、データを直接転送できます。 このダイナミックなスポークツースポーク トンネルは、(設定可能な)無活動期間の後、自動的に解除されます。

ダイナミック ルーティング プロトコルのサポート

DMVPN ソリューションは、トンネリング マルチキャスト/ブロードキャスト IP パケットをサポートする GRE トンネルに基づいているため、DMVPN ソリューションは、IPsec+mGRE トンネル上で動作するダイナミック ルーティング プロトコルもサポートしています。 以前、NHRP では、マルチキャストおよびブロードキャスト IP パケットの GRE トンネリングをサポートするには、トンネルの宛先 IP アドレスのブロードキャスト/マルチキャスト マッピングを明示的に設定する必要がありました。 たとえば、ハブでは各スポークに関する ip nhrp map multicast <spoke-n-addr> 設定行が必要でした。 DMVPN ソリューションでは、スポークのアドレスは事前に判明していないため、この設定は不可能です。 その代わりに、ip nhrp map multicast dynamic コマンドを使用して、各スポークをハブ上のマルチキャスト宛先リストに自動的に追加するよう NHRP を設定できます。 このコマンドを使用すると、スポーク ルータがユニキャスト NHRP マッピングを NHRP サーバ(ハブ)に登録する場合、NHRP はこのスポークに関するブロードキャスト/マルチキャスト マッピングも作成します。 これにより、スポークのアドレスが事前に判明している必要性がなくなります。

mGRE 用の Cisco Express Forwarding ファースト スイッチング

現在、mGRE インターフェイスのトラフィックはプロセス交換されるため、パフォーマンスが低くなっています。 DMVPN ソリューションは、mGRE トラフィックに対して Cisco Express Forwarding スイッチングを追加しているため、パフォーマンスが向上しています。 この機能を有効にするために必要な設定コマンドはありません。 Cisco Express Forwarding スイッチングが、GRE トンネル インターフェイスと発信/着信の物理インターフェイスで許可されている場合、マルチポイント GRE トンネル パケットは Cisco Express Forwarding でスイッチングされます。

IPsec 保護 VPN でのダイナミック ルーティングの使用

この項では、現在の(DMVPN ソリューションの前の)状態を説明します。 IPsec は、暗号化を定義する一連のコマンドと、ルータの外部インターフェイスで適用される crypto map <map-name> コマンドを介して Cisco ルータ上に実装されています。 この設計と、IPsec を使用して IP マルチキャスト/ブロードキャスト パケットを暗号化するための標準が現時点では存在しないという事実のため、IP ルーティング プロトコル パケットは IPsec トンネルを通過して「転送」することはできず、またすべてのルーティングの変更を IPsec トンネルのもう一方の端にダイナミックに伝搬することはできません。

注: BGP を除くすべてのダイナミック ルーティング プロトコルは、ブロードキャストまたはマルチキャスト IP パケットを使用します。 この問題を解決するため、GRE トンネルは IPsec と組み合わせて使用されます。

GRE トンネルは、仮想トンネル インターフェイス(interface tunnel<#>)を使用することで Cisco ルータ上に実装されます。 GRE トンネリング プロトコルは IP マルチキャスト/ブロードキャスト パケットを処理するよう設計されているため、ダイナミック ルーティング プロトコルは GRE トンネル上で実行できます。 GRE トンネル パケットは、元の IP マルチキャスト/ユニキャスト パケットをカプセル化する IP ユニキャスト パケットです。 このため、IPsec を使用して GRE トンネル パケットを暗号化できます。 トランスポート モードで IPsec を実行し、20 バイトを節約することもできます。これは、GRE はすでに元のデータ パケットをカプセル化しているため、IPsec に、別の IP ヘッダーの GRE IP パケットをカプセル化させる必要はないためです。

トランスポート モードで IPsec を実行している場合、暗号化されるパケットの IP 発信元と宛先のアドレスは、IPsec ピアのアドレス(ルータそれ自体)と一致する必要があるという制限があります。 この場合では、単に GRE トンネル エンドポイントと IPsec ピアのアドレスが同じである必要があるということになります。 同じルータが IPsec と GRE トンネルのエンドポイントの両方を兼ねているので、これは問題とはなりません。 GRE トンネルを IPsec 暗号化と結び付けることにより、ダイナミック IP ルーティング プロトコルを使用して、暗号化されるトンネルの両端でルーティング テーブルの更新が可能です。 暗号化されたトンネルを介して学習された、ネットワークの IP ルーティング テーブルのエントリには、IP ネクスト ホップとしてトンネルのもう一方の端(GRE トンネル インターフェイスの IP アドレス)があります。 したがって、トンネルの一方でネットワークが変更された場合、もう一方はダイナミックに変更を学習し、ルータ上で設定を変更することなく接続は継続します。

基本設定

次に、標準的なポイントツーポイント IPsec+GRE の設定を示します。 この設定例の後では、DMVPN のさまざまな機能を示すため、各ステップで DMVPN ソリューションの特定の機能が追加された一連の設定例を示します。 それぞれの例は、複雑度が高くなるネットワーク設計における DMVPN ソリューションの使用法を示すため、前の例に基づいて構築されます。 この一連の例は、現在の IPsec+GRE VPN を DMVPN にマイグレーションするためのテンプレートとして使用できます。 特定の設定例がネットワーク設計の要件に一致する場合、任意の地点で「マイグレーション」を停止できます。

IPsec + GRE ハブ アンド スポーク

dmvpn_01.gif

REDCIR.gif ハブ ルータ REDCIR.gif

version 12.2
  !
  hostname Hub
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.16.1.1
   set transform-set trans2
   match address 101
  crypto map vpnmap1 20 IPsec-isakmp
   set peer 172.16.2.1
   set transform-set trans2
   match address 102
  . . .
  crypto map vpnmap1 <10n> IPsec-isakmp
   set peer 172.16.<n>.1
   set transform-set trans2
   match address <n+100>
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.1.1
  !
  interface Tunnel2
   bandwidth 1000
   ip address 10.0.0.5 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.2.1
  !
  . . .
  !
  interface Tunnel<n>
   bandwidth 1000
   ip address 10.0.0.<4n-1> 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.<n>.1
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.0.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre host 172.17.0.1 host 172.16.1.1
  access-list 102 permit gre host 172.17.0.1 host 172.16.2.1
  ...
  access-list <n+100> permit gre host 172.17.0.1 host 172.16.<n>.1
 

REDCIR.gif Spoke1 ルータ REDCIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.2 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
  !
  interface Ethernet0
   ip address 172.16.1.1 255.255.255.252
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre host 172.16.1.1 host 172.17.0.1
 

REDCIR.gif Spoke2 ルータ REDCIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.6 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
  !
  interface Ethernet0
   ip address 172.16.2.1 255.255.255.252
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.2.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.2.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre host 172.16.2.1 host 172.17.0.1
 

REDCIR.gif スポーク <n> ルータ REDCIR.gif

version 12.2
  !
  hostname Spoke<n>
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<4n-2> 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
  !
  interface Ethernet0
   ip address 172.16.<n>.1 255.255.255.252
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.<n>.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.<n>.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre host 172.16.<n>.1 host 172.17.0.1
 

上記の設定では、どのトラフィックを暗号化するかを定義するために ACL が使用されます。 ハブ ルータとスポーク ルータの両方で、この ACL は GRE トンネル IP パケットにだけ一致する必要があります。 いずれかの端でネットワークがどのように変更されても、GRE IP トンネル パケットは変更されないため、この ACL は変更の必要がありません。

注: 12.2(13)T よりも前の Cisco IOS ソフトウェアのバージョンを使用する場合は、GRE トンネル インターフェイス(Tunnel<x>)と物理インターフェイス(Ethernet0)の両方に対して、crypto map vpnmap1 設定コマンドを適用する必要があります。 Cisco IOS バージョン 12.2(13)T 以降では、物理インターフェイス(Ethernet0)だけに crypto map vpnmap1 設定コマンドを適用します。

ハブ ルータおよびスポーク ルータでのルーティング テーブルの例

REDCIR.gif ハブ ルータ上のルーティング テーブル REDCIR.gif

172.17.0.0/24 is subnetted, 1 subnets
  C       172.17.0.0 is directly connected, Ethernet0
       10.0.0.0/30 is subnetted, <n> subnets
  C       10.0.0.0 is directly connected, Tunnel1
  C       10.0.0.4 is directly connected, Tunnel2
  ...
  C       10.0.0.<4n-4> is directly connected, Tunnel<n>
  C    192.168.0.0/24 is directly connected, Ethernet1
  D    192.168.1.0/24 [90/2841600] via 10.0.0.2, 18:28:19, Tunnel1
  D    192.168.2.0/24 [90/2841600] via 10.0.0.6, 2d05h, Tunnel2
  ...
  D    192.168.<n>.0/24 [90/2841600] via 10.0.0.<4n+2>, 2d05h, Tunnel<n>

REDCIR.gif Spoke1 ルータ上のルーティング テーブル REDCIR.gif

172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.1.0 is directly connected, Ethernet0
       10.0.0.0/30 is subnetted, <n> subnets
  C       10.0.0.0 is directly connected, Tunnel1
  D       10.0.0.4 [90/2841600] via 10.0.0.1, 23:00:58, Tunnel0
  ...
  D      10.0.0.<4n-4> [90/2841600] via 10.0.0.1, 23:00:58, Tunnel0
  D    192.168.0.0/24 [90/2841600] via 10.0.0.1, 23:00:58, Tunnel0
  C    192.168.1.0/24 is directly connected, Loopback0
  D    192.168.2.0/24 [90/3097600] via 10.0.0.1, 23:00:58, Tunnel0
  ...
  D    192.168.<n>.0/24 [90/3097600] via 10.0.0.1, 23:00:58, Tunnel0

REDCIR.gif スポーク <n> ルータ上のルーティング テーブル REDCIR.gif

172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.<n>.0 is directly connected, Ethernet0
       10.0.0.0/30 is subnetted, <n> subnets
  D       10.0.0.0 [90/2841600] via 10.0.0.1, 22:01:21, Tunnel0
  D       10.0.0.4 [90/2841600] via 10.0.0.1, 22:01:21, Tunnel0
  ...
  C        10.0.0.<4n-4> is directly connected, Tunnel0
  D    192.168.0.0/24 [90/2841600] via 10.0.0.1, 22:01:21, Tunnel0
  D    192.168.1.0/24 [90/3097600] via 10.0.0.1, 22:01:21, Tunnel0
  D    192.168.2.0/24 [90/3097600] via 10.0.0.1, 22:01:21, Tunnel0
  ...
  C    192.168.<n>.0/24 is directly connected, Ethernet0

これは基本の動作設定で、DMVPN ソリューションを使用して実現できるより複雑な設定と比較するための出発点として使用します。 最初の変更では、ハブ ルータ上の設定のサイズを小さくします。 スポーク ルータの数が小さい場合これは重要ではありませんが、50 〜 100 を超えるスポーク ルータが存在する場合には非常に重要になります。

ハブ ルータの設定サイズの縮小

次の例では、複数の GRE ポイントツーポイント トンネル インターフェイスから 1 つの GRE マルチポイント トンネル インターフェイスへ、ハブ ルータ上で設定を最小に変更します。 これは、DMVPN ソリューションへ移行する最初のステップとなります。

各スポーク ルータの暗号化マップの特性を定義するため、ハブ ルータには設定行の固有のブロックがあります。 設定のこの部分は、そのスポーク ルータの暗号化 ACL および GRE トンネル インターフェイスを定義します。 これらの特性は、IP アドレス(set peer …tunnel destination …)を除いて、すべてのスポークに関してほぼ同じです。

ハブ ルータ上の上記の設定を調べると、スポーク ルータごとに少なくとも 13 行の設定が存在することが判明します。4 行は暗号化マップ用で、1 行は暗号化 ACL 用、8 行は GRE トンネル インターフェイス用です。 300 のスポーク ルータが存在する場合、設定行の合計数は 3900 行になります。 また、各トンネル リンクのアドレッシング用に 300(/30)のサブネットも必要になります。 このサイズの設定は非常に管理が困難で、また VPN ネットワークのトラブルシューティングを行う際にはさらに困難なものとなります。 この値を小さくするため、動的暗号化マップを使用できます。これにより上記の値は 1200 行少なくなり、300 のスポークがあるネットワークでは 2700 行になります。

注: 動的暗号化マップを使用する場合、IPsec 暗号化トンネルはスポーク ルータにより始動される必要があります。 ip unnumbered <interface> を使用して、GRE トンネルに必要なサブネットの数を少なくすることもできますが、この方法では後のトラブルシューティングがより困難になる場合があります。

DMVPN ソリューションでは、ハブ ルータ上で 1 つのマルチポイント GRE トンネル インターフェイスと 1 つの IPsec プロファイルを設定して、すべてのスポーク ルータを処理できます。 これにより、VPN ネットワークに追加されるスポーク ルータの数に関係なく、ハブ ルータ上の設定のサイズを一定に保つことができます。

DMVPN ソリューションでは、次の新しいコマンドが導入されています。

      crypto ipsec profile <name>
       <ipsec parameters>
      tunnel protection ipsec profile <name>
      ip nhrp map multicast dynamic
 

crypto ipsec profile <name> コマンドは動的暗号化マップのように使用され、トンネル インターフェイス専用の設計になってます。 このコマンドは、スポークツーハブおよびスポークツースポーク VPN トンネル上での IPsec 暗号化のパラメータの定義に使用されます。 このプロファイルの下で必要なパラメータは、トランスフォーム セットだけです。 IPsec ピアのアドレス、および IPsec プロキシの match address ... 節は、GRE トンネルの NHRP マッピングから自動的に得られます。

tunnel protection ipsec profile <name> コマンドは GRE トンネル インターフェイスの下で設定され、GRE トンネル インターフェイスと IPsec プロファイルの関連付けに使用されます。 また、tunnel protection ipsec profile <name> コマンドは、ポイントツーポイント GRE トンネルとも併用できます。 この場合、IPsec ピアおよびプロキシの情報は、tunnel source ... および tunnel destination ... 設定から得られます。 IPsec ピアと暗号化 ACL が不要になるため、これにより設定が単純になります。

注: tunnel protection … コマンドは、GRE カプセル化がパケットに追加された後に、IPsec 暗号化が行われることを指定します。

これらの最初の 2 つの新しいコマンドは、crypto map <name> コマンドを使用して、暗号化マップを設定し、暗号化マップをインターフェイスに割り当てる作業に似ています。 大きな違いは、新しいコマンドを使用すると、暗号化されるパケットに一致する IPsec ピア アドレスまたは ACL を指定する必要がない点です。 これらのパラメータは、mGRE トンネル インターフェイスの NHRP マッピングから自動的に決定されます。

注: トンネル インターフェイスで tunnel protection … コマンドを使用する場合、物理発信インターフェイスでは crypto map ... コマンドは設定されません。

最後の新しいコマンドである ip nhrp map multicast dynamic を使用すると、スポーク ルータが mGRE+IPsec トンネルを始動しユニキャスト NHRP マッピングを登録する際に、NHRP で自動的にスポーク ルータをマルチキャスト NHRP マッピングに追加できます。 これは、ハブとスポークの間の mGRE+IPsec トンネルでダイナミック ルーティング プロトコルを有効にするのに必要です。 このコマンドが使用できない場合、ハブ ルータには、各スポークに対するマルチキャスト マッピング用の独立した設定行が必要になります。

注: この設定を使用すると、スポークに関する情報を使用してハブ ルータが設定されることはないため、スポーク ルータは mGRE+IPsec トンネル接続を始動する必要があります。 ただし、DMVPN ではスポーク ルータが起動した時点で mGRE+IPsec トンネルは自動的に始動され、常にアップ状態になるため、これは問題にはなりません。

注: 次の例に、スポーク ルータ上のポイントツーポイント GRE トンネル インターフェイスと、ハブ ルータ上で mGRE トンネルをサポートするためにハブ ルータとスポーク ルータの両方に追加された NHRP 設定の行を示します。 設定の変更は次のとおりです。

REDCIR.gif ハブ ルータ(旧) REDCIR.gif

 crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.16.1.1
   set transform-set trans2
   match address 101
  crypto map vpnmap1 20 IPsec-isakmp
   set peer 172.16.2.1
   set transform-set trans2
   match address 102
  . . .
  crypto map vpnmap1 <10n> IPsec-isakmp
   set peer 172.16.<n>.1
   set transform-set trans2
   match address <n+100>
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.1.1
   crypto map vpnmap1
  !
  interface Tunnel2
   bandwidth 1000
   ip address 10.0.0.5 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.2.1
   crypto map vpnmap1
  !
  . . .
  !
  interface Tunnel<n>
   bandwidth 1000
   ip address 10.0.0.<4n-1> 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.16.<n>.1
   crypto map vpnmap1
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
   crypto map vpnmap1
  !
  access-list 101 permit gre host 172.17.0.1 host 172.16.1.1
  access-list 102 permit gre host 172.17.0.1 host 172.16.2.1
  . . .
  access-list <n+100> permit gre host 172.17.0.1 host 172.16.<n>.1
 

ORACIR.gif ハブ ルータ(新) ORACIR.gif

 crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0

REDCIR.gif スポーク <n> ルータ(旧) REDCIR.gif

crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<4n-2> 255.255.255.252
   ip mtu 1440
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   crypto map vpnmap1
  !
  . . .
  !
  access-list 101 permit gre host 172.16.<n>.1 host 172.17.0.1
  !

ORACIR.gif スポーク <n> ルータ(新) ORACIR.gif

crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+1> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   crypto map vpnmap1
  !
  . . .
  !
  access-list 101 permit gre host 172.16.<n>.1 host 172.17.0.1
  !

スポーク ルータ上では、サブネット マスクが変更され、トンネル インターフェイスの下で NHRP コマンドが追加されています。 現在ハブ ルータは NHRP を使用して、スポークの物理インターフェイスの IP アドレスにスポーク トンネル インターフェイスの IP アドレスをマッピングしているため、NHRP コマンドが必要になります。

 ip address 10.0.0.<n+1> 255.255.255.0
       ip mtu 1436
       ip nhrp authentication test
       ip nhrp map 10.0.0.1 172.17.0.1
       ip nhrp network-id 100000
       ip nhrp holdtime 300
       ip nhrp nhs 10.0.0.1
       ...
       tunnel key 100000
 

現在サブネットは /30 ではなく /24 であるため、すべてのノードは異なるサブネットではなく同じサブネット内にあります。 スポークはポイントツーポイント GRE トンネル インターフェイスを使用しているため、スポークは依然としてハブを介してスポークツースポーク トラフィックを送信しています。 ip nhrp authentication ...ip nhrp network-id ... および tunnel key ... コマンドは、ハブで受信された時点で、トンネル パケットと NHRP パケットを正しいマルチポイント GRE トンネル インターフェイスと NHRP ネットワークにマッピングするために使用されます。 スポークの NHRP マッピング(10.0.0.<n+1> --> 172.16.<n>.1)をハブにアドバタイズするため、ip nhrp map ... および ip nhrp nhs ... コマンドは、スポーク上の NHRP により使用されます。 10.0.0.<n+1> アドレスは、トンネル インターフェイス上の ip address ... コマンドから得られ、172.16.<n>.1 アドレスはトンネル インターフェイス上の tunnel destination ... コマンドから得られます。

300 のスポーク ルータが存在するケースでは、この変更によりハブの設定行数が 3900 行から 16 行に減少します(3884 行の削減)。 各スポーク ルータ上の設定は 6 行増加します。

スポークでのダイナミック アドレスのサポート

Cisco ルータでは、IPsec トンネルがアップする前に、各 IPsec ピアは、もう一方の IPsec ピアの IP アドレスを使用して設定する必要があります。 スポーク ルータが物理インターフェイス上に(DSL やケーブル リンクを介して接続されているルータに一般的である)ダイナミック アドレスを持っている場合、この作業には問題があります。

TED では、暗号化する必要があった元のデータ パケットの IP 宛先アドレスに特別な Internet Security Association and Key Management Protocol(ISAKMP)パケットを送信することで、ある IPsec ピアは別の IPsec ピアを検出できます。 このパケットは、IPsec トンネル パケットが通過するのと同じパスを通って、中間ネットワークを通過することが前提になっています。 このパケットは相手側 IPsec ピアによりピックアップされ、相手側 IPsec ピアは最初のピアに応答します。 その 2 つのルータは ISAKMP および IPSec Security Associations(SA; セキュリティ結合)のネゴシエーションを行い、IPsec トンネルを開始します。 この処理が機能するのは、暗号化されるデータ パケットがルーティング可能な IP アドレスを持っている場合だけです。

TED は、前の項で設定した GRE トンネルと組み合わせて使用できます。 この仕組みはテスト済みで、機能しますが、Cisco IOS ソフトウェアの初期のバージョンには、TED が GRE トンネル パケットだけでなく、2 つの IPsec ピア間のすべての IP トラフィックを強制的に暗号化する不具合がありました。 DMVPN ソリューションでは、インターネットでルーティング可能な IP アドレスを使用する必要のあるホストを使用せずに、またプローブ パケットと応答パケットを送信することなく、この仕組みと追加機能を提供しています。 わずかに変更することで、前の項の設定は、外部物理インターフェイス上にダイナミック IP アドレスを持つスポーク ルータのサポートに使用できます。

ORACIR.gif ハブ ルータ(変更なし) ORACIR.gif

crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0

ORACIR.gif スポーク <n> ルータ(旧) ORACIR.gif

crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   match address 101
  !
  ...
  !
  access-list 101 permit gre host 172.16.<n>.1 host 172.17.0.1
 

YELCIR.gif スポーク <n> ルータ(新) YELCIR.gif

crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set transform-set trans2
   set security-association level per-host
   match address 101
  !
  ...
  !
  access-list 101 permit gre any host 172.17.0.1
 

新しいスポーク設定で使用されている機能は、次のとおりです。

  • GRE トンネル インターフェイスがアップ状態になると、ハブ ルータへの NHRP 登録パケットの送信を開始します。 これらの NHRP 登録パケットは、IPsec の始動をトリガします。 スポーク ルータでは、set peer <peer-address> および match ip access-list <ACL> コマンドが設定されています。 ACL は GRE をプロトコルとして指定し、送信元には any、および宛先にはハブの IP アドレスを指定します。

    注: ACL では送信元として any が使用されていますが、スポーク ルータの IP アドレスはダイナミックであり、物理インターフェイスがアクティブになる前には不明なので、このようになっている点に注意してください。 ダイナミックなスポーク インターフェイスのアドレスがそのサブネット内のアドレスに制限されている場合、IP サブネットは ACL の送信元に使用できます。

  • スポークの IPsec プロキシの IP 送信元が、ACL の any ではなく、単にスポークの現在の物理インターフェイスのアドレス(/32)になるよう、set security-association level per-host コマンドを使用します。 ACL の any が IPsec プロキシの送信元として使用された場合、その他すべてのスポーク ルータがこのハブを使用して IPsec+GRE トンネルを設定することもできなくなります。 これは、ハブ上の結果の IPsec プロキシが、permit gre host 172.17.0.1 any に等しいためです。 このことは、任意のスポークが宛先であるすべての GRE トンネル パケットは、ハブを使用してトンネルを確立した最初のスポークに対して暗号化および送信されることを意味しますが、これは IPsec プロキシがあらゆるスポークの GRE パケットに一致するためです。

  • IPsec トンネルが設定されると、NHRP 登録パケットはスポーク ルータから、設定済みの Next Hop Server(NHS)へ移動します。 NHS は、このハブ アンド スポーク ネットワークのハブ ルータです。 NHRP 登録パケットは、ハブ ルータが、このスポーク ルータの NHRP マッピングを作成するための情報を提供します。 このマッピングを使用して、ハブ ルータは mGRE+IPsec トンネル経由で、このスポーク ルータにユニキャスト IP データ パケットを送信できます。 また、ハブは NHRP マルチキャスト マッピング リストにスポーク ルータを追加します。 続いてハブは、(ダイナミック ルーティング プロトコルが設定されている場合)スポークへのダイナミック IP ルーティング マルチキャスト パケットの送信を開始します。 スポークは、ハブのルーティング プロトコルの隣接ルータになり、これらはルーティング更新を交換します。

IPsec + mGRE ハブ アンド スポーク

dmvpn_02.gif

YELCIR.gif ハブ ルータ YELCIR.gif

version 12.2
  !
  hostname Hub
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.0.0 0.0.0.255
   no auto-summary
  !

上記のハブ設定では、スポーク ルータの IP アドレスが設定されていないことに注意してください。 スポークの外部物理インターフェイスと、スポークのトンネル インターフェイスの IP アドレスへのマッピングは、NHRP を介してハブによりダイナミックに学習されます。 これにより、スポークの外部物理インターフェイスの IP アドレスを、ダイナミックに割り当てることができます。

YELCIR.gif Spoke1 ルータ YELCIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set security-association level per-host
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.2 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   crypto map vpnmap1
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre 172.16.1.0 0.0.0.255 host 172.17.0.1
 

YELCIR.gif Spoke2 ルータ YELCIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto map vpnmap1 local-address Ethernet0
  crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set security-association level per-host
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.3 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   crypto map vpnmap1
  !
  interface Ethernet0
   ip address dhcp hostname Spoke2
   crypto map vpnmap1
  !
  interface Ethernet1
   ip address 192.168.2.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
   no auto-summary
  !
  access-list 101 permit gre 172.16.2.0 0.0.0.255 host 172.17.0.1
 

スポークの設定に関して注意する主な事柄には次のものがあります。

  • 外部物理インターフェイス(Ethernet0)の IP アドレスは、DHCP を介したダイナミックなものです。

    ip address dhcp hostname Spoke2

  • 暗号化 ACL(101)は、サブネットを IPsec プロキシの送信元に指定します。

    access-list 101 permit gre 172.16.2.0 0.0.0.255 host 172.17.0.1

  • IPsec 暗号化マップの次のコマンドは、セキュリティ結合がホストごとに行われることを指定します。

    set security-association level per-host

  • すべてのトンネルはハブ ルータ上の同じマルチポイント GRE インターフェイスを介して接続されるため、すべてのトンネルは同じサブネットの一部になります。

    ip address 10.0.0.2 255.255.255.0

これら 3 つのコマンドを組み合わせると、スポークの外部物理インターフェイスの IP アドレスを設定する必要がなくなります。 使用される IPsec プロキシは、サブネットベースではなくホストベースになります。

スポーク ルータ上の設定は、設定済みのハブ ルータの IP アドレスを持っています。これは、IPsec+GRE トンネルを始動する必要があるためです。 Spoke1 と Spoke2 の設定の類似点に注意してください。 これら 2 つが類似しているだけでなく、スポーク ルータのすべての設定が類似しています。 ほとんどの場合、すべてのスポークはインターフェイス上で固有の IP アドレスが必要なだけで、設定の残り部分は同じになります。 これにより、多くのスポーク ルータを迅速に設定および配備できるようになります。

NHRP データは、ハブとスポークでは次のようになります。

YELCIR.gif ハブ ルータ YELCIR.gif

Hub#show ip nhrp
    10.0.0.2/32 via 10.0.0.2, Tunnel0 created 01:25:18, expire 00:03:51
      Type: dynamic, Flags: authoritative unique registered
      NBMA address: 172.16.1.4
    10.0.0.3/32 via 10.0.0.3, Tunnel0 created 00:06:02, expire 00:04:03
      Type: dynamic, Flags: authoritative unique registered
      NBMA address: 172.16.2.10
    ...
    10.0.0.<n>/32 via 10.0.0.<n>, Tunnel0 created 00:06:00, expire 00:04:25
      Type: dynamic, Flags: authoritative unique registered
      NBMA address: 172.16.<n>.41

YELCIR.gif Spoke1 ルータ YELCIR.gif

Spoke1#sho ip nhrp
    10.0.0.1/32 via 10.0.0.1, Tunnel0 created 4d08h, never expire
      Type: static, Flags: authoritative
      NBMA address: 172.17.0.1

ダイナミック マルチポイント ハブ アンド スポーク

上記のスポーク ルータ上の設定は DMVPN ソリューションの機能に依存していないため、スポーク ルータは 12.2(13)T よりも前のバージョンの Cisco IOS ソフトウェアを実行できます。 ハブ ルータ上の設定は DMVPN の機能に依存しているため、Cisco IOS バージョン 12.2(13)T 以降を実行する必要があります。 これにより、すでに配備されているスポーク ルータのアップグレードが必要となる時期の決定に関して、ある程度の柔軟性が実現できます。 スポーク ルータも Cisco IOS バージョン 12.2(13)T 以降を実行している場合、スポークの設定を次のように単純化できます。

YELCIR.gif スポーク <n> ルータ(Cisco IOS 12.2(13)T よりも前) YELCIR.gif

 crypto map vpnmap1 10 IPsec-isakmp
   set peer 172.17.0.1
   set security-association level per-host
   set transform-set trans2
   match address 101
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+1> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   crypto map vpnmap1
  !
  interface Ethernet0
   ip address dhcp hostname Spoke<n>
   crypto map vpnmap1
  !
  . . .
  !
  access-list 101 permit gre any host 172.17.0.1
 

GRECIR.gif スポーク <n> ルータ(Cisco IOS 12.2(13)T 以降) GRECIR.gif

 crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+1> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke<n>
  !

また、次の操作をすでに行っていることに注意してください。

  1. crypto map vpnmap1 10 ipsec-isakmp コマンドを削除し、それを crypto ipsec profile vpnprof に置き換えている。

  2. Tunnel0 および Ethernet0 インターフェースから crypto map vpnmap1 コマンドを削除し、それらを Tunnel0 インターフェイス上でだけ tunnel protection ipsec profile vpnprof コマンドに置き換えている。

  3. 暗号化 ACL access-list 101 permit gre any host 172.17.0.1 を削除している。

この場合、IPsec ピアのアドレスとプロキシは、自動的に tunnel source ... および tunnel destination ... の設定から得られます。 ピアとプロキシは次のようになります(show crypto ipsec sa コマンドからの出力)。

 ...
 local ident (addr/mask/prot/port):    (172.16.1.24/255.255.255.255/47/0)
 remote ident (addr/mask/prot/port):   (172.17.0.1/255.255.255.255/47/0)
 ...
 local crypto endpt.: 172.17.1.24, remote crypto endpt.:172.17.0.1
 ...

要約すると、次の完全な設定には、基本設定(IPsec+GRE ハブ アンド スポーク)からここまでに行われたすべての変更が含まれています。

GRECIR.gif ハブ ルータ GRECIR.gif

version 12.2
  !
  hostname Hub
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.0.0 0.0.0.255
   no auto-summary
  !

ハブ設定には変更はありません。

GRECIR.gif Spoke1 ルータ GRECIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.2 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke2
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
   no auto-summary
  !

GRECIR.gif Spoke2 ルータ GRECIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.3 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke2
  !
  interface Ethernet1
   ip address 192.168.2.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.2.0 0.0.0.255
   no auto-summary
  !

ダイナミック マルチポイント IPsec VPN

この項の概念と設定で、DMVPN の全機能を紹介します。 NHRP は、スポーク ルータが、VPN ネットワークにあるその他のスポーク ルータの外部物理インターフェイス アドレスをダイナミックに学習する機能を提供します。 このことは、スポーク ルータは、その他のスポーク ルータに対して直接 IPsec+mGRE トンネルをダイナミックに構築するための十分な情報を持っていることを意味します。 これにメリットがあるのは、このスポークツースポーク データ トラフィックがハブ ルータを介して送信されると、そのトラフィックは暗号化/復号化する必要があり、ハブ ルータ上で遅延と負荷が 2 回増えるためです。 この機能を使用するためには、スポーク ルータは、ポイントツーポイント GRE(p-pGRE)からマルチポイント GRE(mGRE)トンネル インターフェイスにスイッチングされる必要があります。 またスポーク ルータは、もう一方のスポーク ルータのトンネル IP アドレスの IP ネクストホップを使用して、その他のスポークの背後で使用可能な(サブ)ネットワークを学習する必要もあります。 スポーク ルータは、ハブを使用した IPsec+mGRE トンネル上で動作するダイナミック IP ルーティング プロトコルを介して、これらの(サブ)ネットワークを学習します。

ハブ ルータ上で動作するダイナミック IP ルーティング プロトコルは、あるスポークから同一インターフェイス上のその他すべてのスポークに対してバック アウトされて学習されたルートを反映するように設定可能ですが、これらのルート上の IP ネクストホップは通常ハブ ルータであり、ハブがこのルートを学習した元であるスポーク ルータではありません。

注: ダイナミック ルーティング プロトコルはハブ アンド スポーク リンクでだけ動作し、ダイナミック スポーク ツー スポーク リンクでは動作しません。

ルートがその他のスポークに対してバック アウトしてアドバタイズされた場合、ダイナミック ルーティング プロトコル(RIP、OSPF および EIGRP)は、ハブ ルータ上で mGRE トンネル インターフェイスをバック アウトするルートをアドバタイズするように設定し、さらに、IP ネクストホップを、あるスポークから学習されたルートの発信元スポーク ルータに設定する必要があります。

ルーティング プロトコルの設定の要件は次のようになります。

RIP

ハブ上の mGRE トンネル インターフェイスではスプリット ホライズンを無効にする必要があります。無効にしない場合、RIP は、同じ mGRE インターフェイスを介してバック アウトされることにより学習されたルートをアドバタイズすることはありません。

 no ip split-horizon
 

その他の変更は必要ありません。 RIP は同一インターフェイスからバックアウトされて学習したルートのソース IP を自動的に IP ネクストホップとして使用します。

EIGRP

ハブ上の mGRE トンネル インターフェイスではスプリット ホライズンを無効にする必要があります。無効にしない場合、EIGRP は、同じインターフェイスをバック アウトする mGRE インターフェイスを介して学習されたルートをアドバタイズすることはありません。

 no ip split-horizon eigrp <as>
 

EIGRP はデフォルトでは、同一インターフェイスからバックアウトされる場合でもアドバタイズするルートの IP ネクストホップとしてハブ ルータを設定します。そのためこのケースでは、これらのルートをアドバタイズしている場合、次の設定コマンドを使用して元の IP ネクストホップを使用するよう EIGRP に指示する必要があります。

 no ip next-hop-self eigrp <as>
 

注: no ip next-hop-self eigrp <as> コマンドは、Cisco IOS リリース 12.3(2) 以降で使用可能です。 12.2(13)T と 12.3(2) の間の Cisco IOS のリリースに対しては、次の対処が必要になります。

  • スポークツースポーク ダイナミック トンネルが不要である場合、上記のコマンドは必要ありません。

  • スポークツースポーク ダイナミック トンネルが必要である場合は、スポーク ルータ上のトンネル インターフェイスでプロセス交換を使用する必要があります。

  • それ以外の場合は、DMVPN 上で別のルーティング プロトコルを使用する必要があります。

OSPF

OSPF はリンクステート ルーティング プロトコルであるため、スプリット ホライズンの問題は存在しません。 通常、マルチポイント インターフェイスに対しては OSPF ネットワーク タイプをポイントツーマルチポイントに設定しますが、これにより OSPF はスポーク ルータ上のルーティング テーブルにホスト ルートを追加します。 これらのホスト ルートでは、他のスポーク ルータの背後にあるネットワークを宛先とするパケットは、もう一方のスポークに直接転送されるのではなく、ハブ経由で転送されます。 この問題を回避するには、次のコマンドを使用して OSPF ネットワーク タイプをブロードキャストに設定します。

 ip ospf network broadcast
 

また、ハブ ルータは IPsec+mGRE ネットワークの Designated Router(DR; 代表ルータ)になることも確認する必要があります。 このためには、OSPF プライオリティをハブ上では 1 よりも大きい値に設定し、スポーク上では 0 に設定します。

  • ハブ: ip ospf priority 2

  • スポーク: ip ospf priority 0

DMVPN シングル ハブ

dmvpn_03.gif

CYACIR.gif ハブ ルータ CYACIR.gif

version 12.2
  !
  hostname Hub
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   ip ospf network broadcast
   ip ospf priority 2
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.0.0 0.0.0.255 area 0
  !

ハブ設定の唯一の変更点は、EIGRP の代わりに OSPF がルーティング プロトコルである点です。 OSPF ネットワーク タイプがブロードキャストに設定され、プライオリティが 2 に設定されていることに注意してください。 OSPF ネットワーク タイプをブロードキャストに設定すると、OSPF は、そのスポーク ルータの GRE トンネル アドレスとして IP ネクストホップ アドレスを持つスポーク ルータの背後にあるネットワークのルートをインストールします。

CYACIR.gif Spoke1 ルータ CYACIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.2 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.1.0 0.0.0.255 area 0
  !

この時点では、スポーク ルータ上の設定は、ハブ上の設定と非常に似ています。 相違点を次に示します。

  • OSPF プライオリティは 0 に設定されています。 スポーク ルータは、mGRE Nonbroadcast Multiaccess(NBMA)ネットワークの DR になることはできません。 すべてのスポーク ルータへのスタティックな直接接続を持っているのは、ハブ ルータだけです。 DR は NBMA ネットワークのすべてのメンバにアクセスできます。

  • ハブ ルータに対して設定されている NHRP ユニキャストおよびマルチキャスト マッピングが存在します。

     ip nhrp map multicast 172.17.0.1
     ip nhrp map 10.0.0.1 172.17.0.1
     

    前の設定では、GRE トンネルはポイントツーポイントであったため、ip nhrp map multicast ... コマンドは必要ありませんでした。 その場合マルチキャスト パケットは、トンネルを介して唯一の可能な宛先に自動的にカプセル化されます。 スポークの GRE トンネルはマルチポイントに変更され、可能な宛先が複数存在するため、このコマンドが必要になります。

  • スポーク ルータは、アップになると、ハブとのトンネル接続を始動する必要があります。これは、ハブ ルータはスポーク ルータに関する情報を使用しては設定されておらず、またスポーク ルータはダイナミックに割り当てられた IP アドレスを使用できるためです。 スポーク ルータは、NHRP NHS であるハブを使用しても設定されます。

    ip nhrp nhs 10.0.0.1

    上記のコマンドを使用すると、スポーク ルータは mGRE+IPsec トンネルを介して、NHRP 登録パケットを通常の間隔でハブ ルータに送信します。 これらの登録パケットは、スポーク ルータにパケットをトンネリングして戻すためにハブ ルータによって必要とされる、スポーク NHRP マッピング情報を提供します。

CYACIR.gif Spoke2 ルータ CYACIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.3 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
  !
  interface Ethernet1
   ip address 192.168.3.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.2.0 0.0.0.255 area 0
  !

CYACIR.gif スポーク <n> ルータ CYACIR.gif

version 12.2
  !
  hostname Spoke<n>
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+1> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke<n>
  !
  interface Ethernet1
   ip address 192.168.<n>.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.<n>.0 0.0.0.255 area 0
  !

すべてのスポーク ルータの設定は非常に似ていることに注意してください。 唯一の相違点は、ローカル インターフェイス上の IP アドレスです。 これは、多数のスポーク ルータを配備する場合に役立ちます。 すべてのスポーク ルータを同じように設定可能です。また、ローカル IP インターフェイス アドレスだけを追加する必要があります。

この時点で、ハブ、Spoke1、Spoke2 ルータ上のルーティング テーブルと NHRP マッピング テーブルを調べ、初期状態(Spoke1 および Spoke2 ルータがアップになった直後)と、Spoke1 および Spoke2 ルータが両者の間でダイナミック リンクを作成した後の状態を確認します。

初期状態

CYACIR.gif ハブ ルータの情報 CYACIR.gif

Hub#show ip route
       172.17.0.0/24 is subnetted, 1 subnets
  C       172.17.0.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  C    192.168.0.0/24 is directly connected, Ethernet1
  O    192.168.1.0/24 [110/2] via 10.0.0.2, 00:19:53, Tunnel0
  O    192.168.2.0/24 [110/2] via 10.0.0.3, 00:19:53, Tunnel0
  Hub#show ip nhrp
  10.0.0.2/32 via 10.0.0.2, Tunnel0 created 00:57:27, expire    00:04:13
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.1.24
  10.0.0.3/32 via 10.0.0.3, Tunnel0 created 07:11:25, expire    00:04:33
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.2.75
  Hub#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
   204 Ethernet0   172.17.0.1     set  HMAC_SHA+DES_56_CB     0       0
   205 Ethernet0   172.17.0.1     set  HMAC_SHA+DES_56_CB     0       0
  2628 Tunnel0     10.0.0.1       set  HMAC_MD5               0     402
  2629 Tunnel0     10.0.0.1       set  HMAC_MD5             357       0
  2630 Tunnel0     10.0.0.1       set  HMAC_MD5               0     427
  2631 Tunnel0     10.0.0.1       set  HMAC_MD5             308       0

CYACIR.gif Spoke1 ルータの情報 CYACIR.gif

Spoke1#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.1.24 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  O    192.168.0.0/24 [110/2] via 10.0.0.1, 00:31:46, Tunnel0
  C    192.168.1.0/24 is directly connected, Ethernet1
  O    192.168.2.0/24 [110/2] via 10.0.0.3, 00:31:46, Tunnel0
  Spoke1#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 01:42:00, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  Spoke1#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
     2 Ethernet0   172.16.1.24    set  HMAC_SHA+DES_56_CB     0       0
  2064 Tunnel0     10.0.0.2       set  HMAC_MD5               0     244
  2065 Tunnel0     10.0.0.2       set  HMAC_MD5             276       0

CYACIR.gif Spoke2 ルータの情報 CYACIR.gif

Spoke2#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.2.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  O    192.168.0.0/24 [110/2] via 10.0.0.1, 00:38:52, Tunnel0
  O    192.168.1.0/24 [110/2] via 10.0.0.2, 00:38:52, Tunnel0
  C    192.168.2.0/24 is directly connected, Ethernet1
  Spoke2#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 01:32:10, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  Spoke2#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
    17 Ethernet0   172.16.2.75    set  HMAC_SHA+DES_56_CB     0       0
  2070 Tunnel0     10.0.0.3       set  HMAC_MD5               0     279
  2071 Tunnel0     10.0.0.3       set  HMAC_MD5             316       0

この時点で、192.168.1.2 から 192.168.2.3 に対して ping を発行します。 これらのアドレスは、それぞれ Spoke1 および Spoke2 ルータの背後にあるホスト用です。 直接のスポークツースポーク mGRE+IPsec トンネルを構築するため、次の一連のイベントが行われます。

  1. Spoke1 ルータは、宛先が 192.168.2.3 である ping パケットを受信します。 Spoke1 ルータはルーティング テーブルでこの宛先を検索し、Tunnel0 インターフェイスから IP ネクストホップである 10.0.0.3 にこのパケットを転送する必要があることを検出します。

  2. Spoke1 ルータは宛先 10.0.0.3 に関する NHRP マッピング テーブルを調べ、エントリがないことを検出します。 Spoke1 ルータは NHRP 解決要求パケットを作成し、NHS(ハブ ルータ)に送信します。

  3. ハブ ルータは宛先 10.0.0.3 に関する NHRP マッピング テーブルを確認し、それがアドレス 172.16.2.75 に対応することを検出します。 ハブ ルータは NHRP 解決応答パケットを作成し、Spoke1 ルータにそれを送信します。

  4. Spoke1 ルータは NHRP 解決応答を受信し、NHRP マッピング テーブルに 10.0.0.3 ->172.16.2.75 のマッピングを入力します。 NHRP マッピングを追加することにより、IPsec がトリガされ、ピア 172.16.2.75 との IPsec トンネルが始動します。

  5. Spoke1 ルータは 172.16.2.75 を使用した ISAKMP を始動し、ISAKMP および IPsec SA のネゴシエーションを行います。 IPsec プロキシは、Tunnel0 tunnel source <address> コマンドおよび NHRP マッピングから得られます。

     local ident (addr/mask/prot/port): (172.16.1.24/255.255.255.255/47/0)
     remote ident (addr/mask/prot/port): (172.16.2.75/255.255.255.255/47/0)
     
  6. IPsec トンネルの構築が完了すると、192.168.2.0/24 サブネットへの以降のデータ パケットは、Spoke2 に直接送信されます。

  7. 192.168.2.3 が宛先であるパケットがホストに転送された後、このホストは 192.168.1.2 に戻りパケットを送信します。 Spoke2 ルータが、宛先が 192.168.1.2 であるこのパケットを受信した時点で、ルーティング テーブルでこの宛先を検索し、このパケットを Tunnel0 インターフェイスから IP ネクストホップ 10.0.0.2 に転送する必要があることを検出します。

  8. Spoke2 ルータは宛先 10.0.0.2 に関する NHRP マッピング テーブルを確認し、エントリがないことを検出します。 Spoke2 ルータは NHRP 解決要求パケットを作成し、NHS(ハブ ルータ)に送信します。

  9. ハブ ルータは宛先 10.0.0.2 に関する NHRP マッピング テーブルを確認し、それがアドレス 172.16.1.24 に対応することを検出します。 ハブ ルータは NHRP 解決応答パケットを作成し、Spoke2 ルータにそれを送信します。

  10. Spoke2 ルータはその NHRP 解決応答を受信し、NHRP マッピング テーブルに 10.0.0.2 -> 172.16.1.24 のマッピングを入力します。 NHRP マッピングが追加されることにより、IPsec がトリガされ、ピア 172.16.1.24 との IPsec トンネルが始動しますが、すでにピア 172.16.1.24 との IPsec トンネルが存在するため、これ以上の処理は必要ありません。

  11. Spoke1 と Spoke2 は、相互にパケットを直接転送できるようになりました。 ホールドタイムの間、パケットの転送に NHRP マッピングが使用されなかった場合、NHRP マッピングは削除されます。 NHRP マッピング エントリを削除することで、IPsec による、この直接リンクに関する IPsec SA の削除がトリガされます。

Spoke1 と Spoke2 の間でダイナミック リンクが作成された後の状態

CYACIR.gif Spoke1 ルータの情報 CYACIR.gif

Spoke1#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 02:34:16, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.0.3/32 via 10.0.0.3, Tunnel0 created 00:00:05, expire 00:03:35
    Type: dynamic, Flags: router unique used
    NBMA address: 172.16.2.75
  Spoke1#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
     2 Ethernet0   172.16.1.24    set  HMAC_SHA+DES_56_CB     0       0
     3 Ethernet0   172.16.1.24    set  HMAC_SHA+DES_56_CB     0       0
  2064 Tunnel0     10.0.0.2       set  HMAC_MD5               0     375
  2065 Tunnel0     10.0.0.2       set  HMAC_MD5             426       0
  2066 Tunnel0     10.0.0.2       set  HMAC_MD5               0      20
  2067 Tunnel0     10.0.0.2       set  HMAC_MD5              19       0

CYACIR.gif Spoke2 ルータの情報 CYACIR.gif

Spoke2#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 02:18:25, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.0.2/32 via 10.0.0.2, Tunnel0 created 00:00:24, expire 00:04:35
    Type: dynamic, Flags: router unique used
    NBMA address: 172.16.1.24
  Spoke2#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
    17 Ethernet0   172.16.2.75    set  HMAC_SHA+DES_56_CB     0       0
    18 Ethernet0   172.16.2.75    set  HMAC_SHA+DES_56_CB     0       0
  2070 Tunnel0     10.0.0.3       set  HMAC_MD5               0     407
  2071 Tunnel0     10.0.0.3       set  HMAC_MD5             460       0
  2072 Tunnel0     10.0.0.3       set  HMAC_MD5               0      19
  2073 Tunnel0     10.0.0.3       set  HMAC_MD5              20       0

上記の出力から、Spoke1 と Spoke2 はハブ ルータからお互いに関する NHRP マッピングを取得し、mGRE+IPsec トンネルを構築して使用していたことが確認できます。 NHRP マッピングは、5 分後に期限切れになります(NHRP ホールドタイムの現在の値 = 300 秒)。 NHRP マッピングが期限切れになる前の最後の 1 分以内に使用された場合、エントリが削除される前にエントリを更新するために NHRP の解決要求と応答が送信されます。 それ以外の場合は、NHRP マッピングは削除され、IPsec による IPsec SA のクリアがトリガされます。

デュアル ハブを使用したダイナミック マルチポイント IPsec VPN

スポーク ルータに設定行を数行追加すると、デュアル(つまり複数の)ハブ ルータを設定して冗長性を実現できます。 デュアル ハブ DMVPN を設定するには、次の 2 つの方法があります。

  • 各スポークが 1 つのマルチポイント GRE トンネル インターフェイスを使用し、Next Hop Server(NHS)として 2 つの異なるハブをポイントする、1 つの DMVPN ネットワーク。

    ハブ ルータには 1 つのマルチポイント GRE トンネル インターフェイスだけがあります。

  • 各スポークが 2 つの GRE トンネル インターフェイス(ポイントツーポイントまたはマルチポイント)を持ち、各 GRE トンネルが異なるハブ ルータに接続された、デュアル DMVPN ネットワーク。

    この場合も、ハブ ルータには 1 つのマルチポイント GRE トンネル インターフェイスだけがあります。

次の例では、デュアル ハブ DMVPN 用の 2 つの異なるシナリオの設定を調べます。 どちらのケースでも、強調されている相違点は、DMVPN シングル ハブの設定を基準としています。

デュアル ハブ - シングル DMVPN レイアウト

シングル DMVPN レイアウトを使用したデュアル ハブは設定が非常に簡単ですが、デュアル DMVPN レイアウトを使用したデュアル ハブと比較すると、DMVPN でのルーティングをあまり制御できません。 このケースでのアイデアは、すべてのハブ(このケースでは 2 つ)とすべてのスポークがこの 1 つのサブネット(「クラウド」)に接続された、1 つの DMVPN「クラウド」を用意する、というものです。 スポークからハブへのスタティック NHRP マッピングは、ダイナミック ルーティング プロトコルが実行されるスタティック IPsec+mGRE リンクを定義します。 ダイナミック ルーティング プロトコルは、スポーク間のダイナミック IPsec+mGRE リンクでは動作しません。 スポーク ルータは同じ mGRE トンネル インターフェイス上にハブ ルータを持つルーティング隣接ルータであるため、リンクやインターフェイスの違い(メトリック、コスト、遅延、または帯域幅など)を使用して、両方のハブがアップ状態である場合に、ダイナミック ルーティング プロトコルのメトリックを変更してもう一方のハブよりもあるハブを優先させることはできません。 この優先設定が必要である場合、ルーティング プロトコルの設定の内部でのテクニックを使用する必要があります。 この理由のため、ダイナミック ルーティング プロトコルには、OSPF よりも EIGRP や RIP を使用した方が好ましい場合があります。

注: 通常、上記の問題はハブ ルータが同じ場所に配置されている場合にだけ問題になります。 ハブ ルータが同じ場所に配置されていない場合、いずれかのハブ ルータを介して宛先ネットワークに到達できる場合であっても、通常のダイナミック ルーティングは最終的に正しいハブ ルータを優先させる可能性が高くなります。

デュアル ハブ - シングル DMVPN レイアウト

dmvpn_04.gif

BLUCIR.gif ハブ ルータ BLUCIR.gif

version 12.2
  !
  hostname Hub1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   ip ospf network broadcast
   ip ospf priority 2
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.0
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 1
   network 192.168.0.0 0.0.0.255 area 0
  !

BLUCIR.gif Hub2 ルータ BLUCIR.gif

version 12.2
  !
  hostname Hub2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 900
   ip address 10.0.0.2 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp map  multicast 172.17.0.1
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   ip nhrp nhs 10.0.0.1
   ip ospf network broadcast
   ip ospf priority 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.5 255.255.255.0
  !
  interface Ethernet1
   ip address 192.168.0.2 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 1
   network 192.168.0.0 0.0.0.255 area 0
  !

Hub1 の設定での唯一の変更点は、OSPF を変更して 2 つのエリアを使用することです。 エリア 0 は 2 つのハブの背後にあるネットワークに使用され、エリア 1 は DMVPN ネットワークと、スポーク ルータの背後にあるネットワークに使用されます。 OSPF は 1 つのエリアを使用できますが、複数の OSPF エリアの設定を示すために、ここでは 2 つのエリアが使用されています。

Hub2 の設定は基本的には Hub1 の設定と同じで、適切な IP アドレスの変更が加えられています。 1 つの大きな違いとしては、Hub2 は Hub1 のスポーク(つまりクライアント)でもあるため、Hub1 はプライマリ ハブで Hub2 はセカンダリ ハブになっています。 Hub2 は mGRE トンネル経由で Hub1 が付属する OSPF 隣接ルータになるよう、このように設定されています。 Hub1 は OSPF DR であるため、Hub1 は mGRE インターフェイス(NBMA ネットワーク)経由で他のすべての OSPF ルータと直接接続されている必要があります。 Hub1 と Hub2 の間に直接リンクが存在しなければ、Hub1 がアップ状態である場合も、Hub2 は OSPF ルーティングに参加しません。 Hub1 がダウンした場合、Hub2 は DMVPN(NBMA ネットワーク)の OSPF DR になります。 Hub1 がアップ状態に戻った場合、DMVPN の OSPF DR の役割を引き継ぎます。

GRE トンネル インターフェイスの帯域幅は 1000 Kb/秒に設定されているのに対して、Hub2 では 900 Kb/秒に設定されているため、Hub1 と Hub2 の背後にあるルータはスポーク ネットワークへのパケットの送信に Hub1 を使用します。 対照的にスポーク ルータは、ハブ ルータの背後にあるネットワークに対するパケットを、Hub1 と Hub2 の両方に送信します。これは、各スポーク ルータには mGRE トンネル インターフェイスが 1 つだけ存在し、2 つの等コストのルートが存在するためです。 パケット単位のロード バランシングが使用されている場合、これは順序の正しくないパケットの原因になります。

BLUCIR.gif Spoke1 ルータ BLUCIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.11 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp map multicast 172.17.0.5
   ip nhrp map 10.0.0.2 172.17.0.5
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip nhrp nhs 10.0.0.2
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 1
   network 192.168.1.0 0.0.0.255 area 1
  !

スポーク ルータでの設定の違いは次のとおりです。

  • 新しい設定では、スポークは Hub2 に関するスタティック NHRP マッピングを使用して設定され、ネクスト ホップ サーバとして Hub2 が追加されています。

    元の設定:

     ip nhrp map multicast 172.17.0.1
     ip nhrp map 10.0.0.1 172.17.0.1
     ip nhrp nhs 10.0.0.1
     

    新しい設定:

     ip nhrp map multicast 172.17.0.1
     ip nhrp map 10.0.0.1 172.17.0.1
     ip nhrp map multicast 172.17.0.5
     ip nhrp map 10.0.0.2 172.17.0.5
     ip nhrp nhs 10.0.0.1
     ip nhrp nhs 10.0.0.2
     
  • スポーク ルータ上の OSPF エリアはエリア 1 に変更されています。

ハブのスポーク ルータ上でスタティック NHRP マッピングと NHS を定義することで、このトンネル上でダイナミック ルーティング プロトコルを実行することになる点に注意してください。 これにより、ハブ アンド スポーク ルーティングや隣接ネットワークが定義されます。 Hub2 はすべてのスポークのハブであり、また Hub1 のスポークでもあることに注意してください。 このことにより、DMVPN ソリューションを使用する場合、マルチレイヤ ハブ アンド スポーク ネットワークの設計、設定、および変更が容易になります。

BLUCIR.gif Spoke2 ルータ BLUCIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.12 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp map multicast 172.17.0.5
   ip nhrp map 10.0.0.2 172.17.0.5
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip nhrp nhs 10.0.0.2
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
  !
  interface Ethernet1
   ip address 192.168.2.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.2.0 0.0.0.255 area 0
  !

BLUCIR.gif スポーク <n> ルータ BLUCIR.gif

version 12.2
  !
  hostname Spoke<n>
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+10> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast 172.17.0.1
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp map multicast 172.17.0.5
   ip nhrp map 10.0.0.2 172.17.0.5
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   ip nhrp nhs 10.0.0.2
   ip ospf network broadcast
   ip ospf priority 0
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke<x>
  !
  interface Ethernet1
   ip address 192.168.<n>.1 255.255.255.0
  !
  router ospf 1
   network 10.0.0.0 0.0.0.255 area 0
   network 192.168.<n>.0 0.0.0.255 area 0
  !

この時点で、Hub1、Hub2、Spoke1、および Spoke2 ルータ上のルーティング テーブル、NHRP マッピング テーブルおよび IPsec 接続を調べると、初期状態(Spoke1 および Spoke2 ルータがアップ状態になった直後)を確認できます。

初期状態と変更

BLUCIR.gif Hub1 ルータの情報 BLUCIR.gif

Hub1#show ip route
       172.17.0.0/24 is subnetted, 1 subnets
  C       172.17.0.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  C    192.168.0.0/24 is directly connected, Ethernet1
  O    192.168.1.0/24 [110/2] via 10.0.0.11, 00:02:17, Tunnel0
  O    192.168.2.0/24 [110/2] via 10.0.0.12, 00:02:17, Tunnel0
  Hub1#show ip nhrp
  10.0.0.2/32 via 10.0.0.2, Tunnel0 created 1w3d, expire 00:03:15
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.17.0.5
  10.0.0.11/32 via 10.0.0.11, Tunnel0 created 1w3d, expire 00:03:49
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.1.24
  10.0.0.12/32 via 10.0.0.12, Tunnel0 created 1w3d, expire 00:04:06
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.2.75
  Hub1#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
     4 Ethernet0   172.17.0.1     set  HMAC_SHA+DES_56_CB     0       0
     5 Ethernet0   172.17.0.1     set  HMAC_SHA+DES_56_CB     0       0
     6 Ethernet0   172.17.0.1     set  HMAC_SHA+DES_56_CB     0       0
  3532 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB     0     232
  3533 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB   212       0
  3534 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB     0      18
  3535 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB    17       0
  3536 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB     0       7
  3537 Tunnel0     10.0.0.1       set  HMAC_MD5+DES_56_CB     7       0

BLUCIR.gif Hub2 ルータの情報 BLUCIR.gif

Hub2#show ip route
       172.17.0.0/24 is subnetted, 1 subnets
  C       172.17.0.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  C    192.168.0.0/24 is directly connected, Ethernet1
  O    192.168.1.0/24 [110/2] via 10.0.0.11, 00:29:15, Tunnel0
  O    192.168.2.0/24 [110/2] via 10.0.0.12, 00:29:15, Tunnel0
  Hub2#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 1w3d, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.0.11/32 via 10.0.0.11, Tunnel0 created 1w3d, expire 00:03:15
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.1.24
  10.0.0.12/32 via 10.0.0.12, Tunnel0 created 00:46:17, expire 00:03:51
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.2.75
  Hub2#show crypto engine connection active
    ID Interface   IP-Address    State Algorithm          Encrypt Decrypt
     4 Ethernet0   171.17.0.5     set  HMAC_SHA+DES_56_CB    0        0
     5 Ethernet0   171.17.0.5     set  HMAC_SHA+DES_56_CB    0        0
     6 Ethernet0   171.17.0.5     set  HMAC_SHA+DES_56_CB    0        0
  3520 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB    0      351
  3521 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB  326        0
  3522 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB    0      311
  3523 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB  339        0
  3524 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB    0       25
  3525 Tunnel0     10.0.0.2       set  HMAC_MD5+DES_56_CB   22        0

BLUCIR.gif Spoke1 ルータの情報 BLUCIR.gif

Spoke1#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.1.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  O IA 192.168.0.0/24 [110/11] via 10.0.0.1, 00:39:31, Tunnel0
                      [110/11] via 10.0.0.2, 00:39:31, Tunnel0
  C    192.168.1.0/24 is directly connected, Ethernet1
  O    192.168.2.0/24 [110/2] via 10.0.0.12, 00:37:58, Tunnel0
  Spoke1#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 00:56:40, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.0.2/32 via 10.0.0.2, Tunnel0 created 00:56:40, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.5
  Spoke1#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
     1 Ethernet0   172.16.1.24    set  HMAC_SHA+DES_56_CB     0       0
     2 Ethernet0   172.16.1.24    set  HMAC_SHA+DES_56_CB     0       0
  2010 Tunnel0     10.0.0.11      set  HMAC_MD5+DES_56_CB     0     171
  2011 Tunnel0     10.0.0.11      set  HMAC_MD5+DES_56_CB   185       0
  2012 Tunnel0     10.0.0.11      set  HMAC_MD5+DES_56_CB     0      12
  2013 Tunnel0     10.0.0.11      set  HMAC_MD5+DES_56_CB    13       0

BLUCIR.gif Spoke2 ルータの情報 BLUCIR.gif

Spoke2#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.2.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  O IA 192.168.0.0/24 [110/11] via 10.0.0.1, 00:57:56, Tunnel0
                      [110/11] via 10.0.0.2, 00:57:56, Tunnel0
  O    192.168.1.0/24 [110/2] via 10.0.0.11, 00:56:14, Tunnel0
  C    192.168.2.0/24 is directly connected, Ethernet1
  Spoke2#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 5w6d, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.0.2/32 via 10.0.0.2, Tunnel0 created 6w6d, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.5
  Spoke2#show crypto engine connection active
   ID  Interface   IP-Address    State Algorithm          Encrypt Decrypt
     2 Ethernet0   172.16.2.75    set  HMAC_SHA+DES_56_CB     0       0
     3 Ethernet0   172.16.2.75    set  HMAC_SHA+DES_56_CB     0       0
  3712 Tunnel0     10.0.0.12      set  HMAC_MD5+DES_56_CB     0     302
  3713 Tunnel0     10.0.0.12      set  HMAC_MD5+DES_56_CB   331       0
  3716 Tunnel0     10.0.0.12      set  HMAC_MD5+DES_56_CB     0     216
  3717 Tunnel0     10.0.0.12      set  HMAC_MD5+DES_56_CB   236       0

Hub1、Hub2、Spoke1、および Spoke2 上のルーティング テーブルに関しては、注目すべきいくつかの興味深い問題があります。

  • 両方のハブ ルータには、スポーク ルータの背後のネットワークへの等価コスト ルートがあります。

    Hub1:

    O     192.168.1.0/24 [110/2] via 10.0.0.11, 00:02:17, Tunnel0
     O     192.168.2.0/24 [110/2] via 10.0.0.12, 00:02:17, Tunnel0

    Hub2:

    O     192.168.1.0/24 [110/2] via 10.0.0.11, 00:29:15, Tunnel0
     O     192.168.2.0/24 [110/2] via 10.0.0.12, 00:29:15, Tunnel0

    このことは、Hub1 と Hub2 は、ハブ ルータの背後にあるネットワーク内のルータに対して、スポーク ルータの背後にあるネットワークの同じコストをアドバタイズすることを意味します。 たとえば、192.168.0.0/24 LAN に直接接続されているルータである R2 上のルーティング テーブルは次のようになります。

    R2:

    O     IA 192.168.1.0/24 [110/12] via 192.168.0.1, 00:00:26, Ethernet1/0/3
                                [110/12] via 192.168.0.2, 00:00:27, Ethernet1/0/3
     O     IA 192.168.2.0/24 [110/12] via 192.168.0.1, 00:00:27, Ethernet1/0/3
                       [110/12] via 192.168.0.2, 00:00:27, Ethernet1/0/3
  • スポーク ルータには、ハブ ルータの背後にあるネットワークへの、両方のハブ ルータを介した等価コスト ルートがあります。

    Spoke1:

    O     IA 192.168.0.0/24 [110/11] via 10.0.0.1, 00:39:31, Tunnel0
                                [110/11] via 10.0.0.2, 00:39:31, Tunnel0

    Spoke2:

    O     IA 192.168.0.0/24 [110/11] via 10.0.0.1, 00:57:56, Tunnel0
                                [110/11] via 10.0.0.2, 00:57:56, Tunnel0

    スポーク ルータがパケット単位のロード バランシングを行っている場合、順序の正しくないパケットが発生する可能性があります。

2 つのハブに対するリンクでの、非対称ルーティングやパケット単位のロード バランシングを回避するには、両方向で 1 つのスポーク ツー ハブ パスを優先させるようルーティング プロトコルを設定する必要があります。 Hub1 をプライマリ、Hub2 をバックアップにする必要がある場合は、ハブ トンネル インターフェイス上の OSPF コストが異なるものになるよう設定できます。

Hub1:

interface tunnel0
 ...
 ip ospf cost 10
 ...

Hub2:

interface tunnel0
 ...
 ip ospf cost 20
 ...

この時点でルートは次のようになります。

Hub1:

O     192.168.1.0/24 [110/11] via 10.0.0.11, 00:00:28, Tunnel0
 O     192.168.2.0/24 [110/11] via 10.0.0.12, 00:00:28, Tunnel0

Hub2:

O     192.168.1.0/24 [110/21] via 10.0.0.11, 00:00:52, Tunnel0
 O     192.168.2.0/24 [110/21] via 10.0.0.12, 00:00:52, Tunnel0

R2:

O     IA 192.168.1.0/24 [110/31] via 192.168.0.1, 00:01:06, Ethernet1/0/3
 O     IA 192.168.2.0/24 [110/31] via 192.168.0.1, 00:01:06, Ethernet1/0/3

2 つのハブ ルータでは、スポーク ルータの背後にあるネットワークのルートに関して、コストが異なります。 このことは、ルータ R2 上で確認できるように、Hub1 はスポーク ルータへのトラフィックの転送に関して優先されることを意味します。 これは、上記の最初の項目で説明されている非対称ルーティングの問題の対処になります。

上記の 2 つ目の項目で説明されている、もう一方の方向の非対称ルーティングは、依然として存在します。 ダイナミック ルーティング プロトコルとして OSPF を使用してる場合は、スポーク上の router ospf 1distance ... コマンドを使用し、Hub2 を介して学習されたルートよりも Hub1 を介して学習されたルートを優先させる回避策で、この問題を修正できます。

Spoke1:

router ospf 1
  distance 111 10.0.0.2 0.0.0.0 1
 access-list 1 permit any

Spoke2:

router ospf 1
  distance 111 10.0.0.2 0.0.0.0 1
 access-list 1 permit any

この時点でルートは次のようになります。

Spoke1:

O     192.168.0.0/24 [110/11] via 10.0.0.1, 00:00:06, Tunnel0

Spoke2:

O     192.168.1.0/24 [110/11] via 10.0.0.1, 00:00:10, Tunnel0

上記のルーティング設定は非対称ルーティングに対する保護となり、同時に Hub1 がダウンした場合の Hub2 へのフェールオーバーを実現します。 つまり、両方のハブがアップ状態である場合は、Hub1 だけが使用されることを意味します。 ハブにまたがってスポークをバランシングすることで両方のハブを使用し、フェールオーバー保護を行い、非対称ルーティングを使用しない場合、特に OSPF を使用する場合にルーティング設定は複雑になることがあります。 このため、次のデュアル DMVPN レイアウトを使用したデュアル ハブが、より優れた選択肢になる場合があります。

デュアル ハブ - デュアル DMVPN レイアウト

デュアル DMVPN レイアウトを使用したデュアル ハブは、やや設定が難しくなりますが、DMVPN でのルーティングをよりよく制御できます。 そのアイデアは、2 つの独立した DMVPN「クラウド」を用意するというものです。 各ハブ(このケースでは 2 つ)は 1 つの DMVPN サブネット(「クラウド」)に接続され、スポークは両方の DMVPN サブネット(「クラウド」)に接続されます。 スポーク ルータは 2 つの GRE トンネル インターフェイス経由で両方のハブ ルータを持つルーティング隣接ルータであるため、インターフェイス設定の違い(帯域幅、コスト、遅延など)を使用して、両方のハブがアップ状態である場合に、ダイナミック ルーティング プロトコルのメトリックを変更してもう一方のハブよりもあるハブを優先させることができます。

注: 通常、上記の問題はハブ ルータが同じ場所に配置されている場合にだけ関連します。 ハブ ルータが同じ場所に配置されていない場合、いずれかのハブ ルータを介して宛先ネットワークに到達できる場合であっても、通常のダイナミック ルーティングは最終的に正しいハブ ルータを優先させる可能性が高くなります。

スポーク ルータでは、p-pGRE または mGRE トンネル インターフェイスのいずれかを使用できます。 1 つのスポーク ルータ上の複数の p-pGRE インターフェイスは、同じ tunnel source ... の IP アドレスを使用できますが、1 つのスポーク ルータ上の複数の mGRE インターフェイスは、固有の tunnel source ... の IP アドレスを持っている必要があります。 これは、IPsec の始動時に、最初のパケットは、mGRE トンネルのいずれかと関連付けられている必要がある ISAKMP パケットであるためです。 ISAKMP パケットは、この関連付けに使用される宛先 IP アドレス(リモート IPsec ピア アドレス)だけを持っています。 このアドレスは tunnel source ... のアドレスと照合されますが、両方のトンネルが同じ tunnel source ... のアドレスを持っているため、最初の mGRE トンネル インターフェイスが常に一致します。 このことは、着信マルチキャスト データ パケットが正しくない mGRE インターフェイスと関連付けられ、ダイナミック ルーティング プロトコルが破壊される場合があることを意味します。

GRE パケット自体は、2 つの mGRE インターフェイスを区別する tunnel key ... 値を持っているため、GRE パケットにはこの問題は発生しません。 シスコは現在、同じルータで複数の mGRE トンネル インターフェイスを使用する際の、固有の tunnel source ... の IP アドレスの制限を削除する手法を検討しています。 それまでの間、デュアル DMVPN レイアウトを使用したこのデュアル ハブでは、p-pGRE トンネルが使用されます。 p-pGRE トンネルのケースでは、tunnel source ...tunnel destination ... の両方の IP アドレスがマッチングに使用できます。

デュアル ハブ - デュアル DMVPN レイアウト

dmvpn_05.gif

強調表示されている次の変更点は、この文書ですでに示したダイナミック マルチポイント ハブ アンド スポーク構成を基準としています。

MAGCIR.gif Hub1 ルータ MAGCIR.gif

version 12.2
  !
  hostname Hub1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100000
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.1 255.255.255.252
  !
  interface Ethernet1
   ip address 192.168.0.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 192.168.0.0 0.0.0.255
   no auto-summary
  !

MAGCIR.gif Hub2 ルータ MAGCIR.gif

version 12.2
  !
  hostname Hub2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.1.1 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map multicast dynamic
   ip nhrp network-id 100001
   ip nhrp holdtime 600
   no ip split-horizon eigrp 1
   delay 1000
   tunnel source Ethernet0
   tunnel mode gre multipoint
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address 172.17.0.5 255.255.255.252
  !
  interface Ethernet1
   ip address 192.168.0.2 255.255.255.0
  !
  router eigrp 1
   network 10.0.1.0 0.0.0.255
   network 192.168.0.0 0.0.0.255
   no auto-summary
  !

このケースでは、Hub1 と Hub2 の設定は類似しています。 主な相違点は、それぞれが異なる DMVPN のハブであるという点です。 各 DMVPN は、異なる次の要素を使用します。

  • IP サブネット(10.0.0.0/24、10.0.0.1/24)

  • NHRP ネットワーク ID(100000、100001)

  • トンネル キー(100000、100001)

後にこの文書で説明するように、EIGRP を使用した NBMA ネットワークの方が設定と管理が容易であるため、ダイナミック ルーティング プロトコルは OSPF から EIGRP へ交換されています。

MAGCIR.gif Spoke1 ルータ MAGCIR.gif

version 12.2
  !
  hostname Spoke1
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.11 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.1.11 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.1.1 172.17.0.5
   ip nhrp network-id 100001
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.1.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.5
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke1
  !
  interface Ethernet1
   ip address 192.168.1.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 10.0.1.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
   no auto-summary
  !

各スポーク ルータは、2 つの DMVPN のそれぞれに 1 つずつある、2 つの p-pGRE トンネル インターフェイスを使用して設定されています。 ip address ...ip nhrp network-id ...tunnel key ... および tunnel destination ... の値は、2 つのトンネルの区別に使用されます。 ダイナミック ルーティング プロトコルである EIGRP は、両方の p-pGRE トンネル サブネットで実行され、他のインターフェイスよりもある p-pGRE インターフェイス(DMVPN)を選択するために使用されます。

MAGCIR.gif Spoke2 ルータ MAGCIR.gif

version 12.2
  !
  hostname Spoke2
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.12 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.1.12 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.1.1 172.17.0.5
   ip nhrp network-id 100001
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.1.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.5
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke2
  !
  interface Ethernet1
   ip address 192.168.2.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 10.0.1.0 0.0.0.255
   network 192.168.2.0 0.0.0.255
   no auto-summary
  !

MAGCIR.gif スポーク <n> ルータ MAGCIR.gif

version 12.2
  !
  hostname Spoke<n>
  !
  crypto isakmp policy 1
   authentication pre-share
  crypto isakmp key cisco47 address 0.0.0.0 0.0.0.0
  !
  crypto IPsec transform-set trans2 esp-des esp-md5-hmac
   mode transport
  !
  crypto ipsec profile vpnprof
   set transform-set trans2
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.<n+10> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.1.<n+10> 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.1.1 172.17.0.5
   ip nhrp network-id 100001
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.1.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.5
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  interface Ethernet0
   ip address dhcp hostname Spoke<x>
  !
  interface Ethernet1
   ip address 192.168.<n>.1 255.255.255.0
  !
  router eigrp 1
   network 10.0.0.0 0.0.0.255
   network 10.0.1.0 0.0.0.255
   network 192.168.<n>.0 0.0.0.255
   no auto-summary
  !

この時点で、Hub1、Hub2、Spoke1、および Spoke2 ルータ上のルーティング テーブル、NHRP マッピング テーブルおよび IPsec 接続を調べ、初期状態(Spoke1 および Spoke2 ルータがアップになった直後)を確認します。

初期状態と変更

MAGCIR.gif Hub1 ルータの情報 MAGCIR.gif

Hub1#show ip route
       172.17.0.0/30 is subnetted, 1 subnets
  C       172.17.0.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 2 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  D       10.0.1.0 [90/2611200] via 192.168.0.2, 00:00:46, Ethernet1
  C    192.168.0.0/24 is directly connected, Ethernet1
  D    192.168.1.0/24 [90/2841600] via 10.0.0.11, 00:00:59, Tunnel0
  D    192.168.2.0/24 [90/2841600] via 10.0.0.12, 00:00:34, Tunnel0
  Hub1#show ip nhrp
  10.0.0.12/32 via 10.0.0.12, Tunnel0 created 23:48:32, expire 00:03:50
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.2.75
  10.0.0.11/32 via 10.0.0.11, Tunnel0 created 23:16:46, expire 00:04:45
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.1.24
  Hub1#show crypto engine connection active
    ID Interface   IP-Address    State  Algorithm           Encrypt  Decrypt
    15 Ethernet0   172.17.63.18   set    HMAC_SHA+DES_56_CB      0        0
    16 Ethernet0   10.0.0.1       set    HMAC_SHA+DES_56_CB      0        0
  2038 Tunnel0     10.0.0.1       set    HMAC_MD5+DES_56_CB      0      759
  2039 Tunnel0     10.0.0.1       set    HMAC_MD5+DES_56_CB    726        0
  2040 Tunnel0     10.0.0.1       set    HMAC_MD5+DES_56_CB      0       37
  2041 Tunnel0     10.0.0.1       set    HMAC_MD5+DES_56_CB     36        0

MAGCIR.gif Hub2 ルータの情報 MAGCIR.gif

Hub2#show ip route
       172.17.0.0/30 is subnetted, 1 subnets
  C       172.17.0.4 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 2 subnets
  D       10.0.0.0 [90/2611200] via 192.168.0.1, 00:12:22, Ethernet1
  C       10.0.1.0 is directly connected, Tunnel0
  C    192.168.0.0/24 is directly connected, Ethernet1
  D    192.168.1.0/24 [90/2841600] via 10.0.1.11, 00:13:24, Tunnel0
  D    192.168.2.0/24 [90/2841600] via 10.0.1.12, 00:12:11, Tunnel0
  Hub2#show ip nhrp
  10.0.1.12/32 via 10.0.1.12, Tunnel3 created 06:03:24, expire 00:04:39
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.2.75
  10.0.1.11/32 via 10.0.1.11, Tunnel3 created 23:06:47, expire 00:04:54
    Type: dynamic, Flags: authoritative unique registered
    NBMA address: 172.16.1.24
  Hub2#show crypto engine connection active
    ID Interface   IP-Address    State  Algorithm           Encrypt  Decrypt
     4 Ethernet0   171.17.0.5     set   HMAC_SHA+DES_56_CB      0        0
     6 Ethernet0   171.17.0.5     set   HMAC_SHA+DES_56_CB      0        0
  2098 Tunnel0     10.0.1.1       set   HMAC_MD5+DES_56_CB      0      722
  2099 Tunnel0     10.0.1.1       set   HMAC_MD5+DES_56_CB    690        0
  2100 Tunnel0     10.0.1.1       set   HMAC_MD5+DES_56_CB      0      268
  2101 Tunnel0     10.0.1.1       set   HMAC_MD5+DES_56_CB    254        0

MAGCIR.gif Spoke1 ルータの情報 MAGCIR.gif

Spoke1#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.1.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 1 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  C       10.0.1.0 is directly connected, Tunnel1
  D    192.168.0.0/24 [90/2841600] via 10.0.1.1, 00:26:30, Tunnel1
                      [90/2841600] via 10.0.0.1, 00:26:30, Tunnel0
  C    192.168.1.0/24 is directly connected, Ethernet1
  D    192.168.2.0/24 [90/3097600] via 10.0.1.1, 00:26:29, Tunnel1
                      [90/3097600] via 10.0.0.1, 00:26:29, Tunnel0
  Spoke1#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 23:25:46, never expire
    Type: static, Flags: authoritative
    NBMA address: 172.17.0.1
  10.0.1.1/32 via 10.0.1.1, Tunnel1 created 23:24:40, never expire
    Type: static, Flags: authoritative
    NBMA address: 172.17.0.5
  Spoke1#show crypto engine connection active
    ID Interface   IP-Address    State  Algorithm           Encrypt  Decrypt
    16 Ethernet0   172.16.1.24    set   HMAC_SHA+DES_56_CB      0        0
    18 Ethernet0   172.16.1.24    set   HMAC_SHA+DES_56_CB      0        0
  2118 Tunnel0     10.0.0.11      set   HMAC_MD5+DES_56_CB      0      181
  2119 Tunnel0     10.0.0.11      set   HMAC_MD5+DES_56_CB    186        0
  2120 Tunnel1     10.0.1.11      set   HMAC_MD5+DES_56_CB      0      105
  2121 Tunnel1     10.0.1.11      set   HMAC_MD5+DES_56_CB    110        0

MAGCIR.gif Spoke2 ルータの情報 MAGCIR.gif

Spoke2#show ip route
       172.16.0.0/24 is subnetted, 1 subnets
  C       172.16.2.0 is directly connected, Ethernet0
       10.0.0.0/24 is subnetted, 2 subnets
  C       10.0.0.0 is directly connected, Tunnel0
  C       10.0.1.0 is directly connected, Tunnel1
  D    192.168.0.0/24 [90/2841600] via 10.0.1.1, 00:38:04, Tunnel1
                      [90/2841600] via 10.0.0.1, 00:38:04, Tunnel0
  D    192.168.1.0/24 [90/3097600] via 10.0.1.1, 00:38:02, Tunnel1
                      [90/3097600] via 10.0.0.1, 00:38:02, Tunnel0
  C    192.168.2.0/24 is directly connected, Ethernet1
  Spoke2#show ip nhrp
  10.0.0.1/32 via 10.0.0.1, Tunnel0 created 1d02h, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.1
  10.0.1.1/32 via 10.0.1.1, Tunnel1 created 1d02h, never expire
    Type: static, Flags: authoritative used
    NBMA address: 172.17.0.5
  Spoke2#show crypto engine connection active
    ID Interface   IP-Address    State  Algorithm           Encrypt  Decrypt
     8 Ethernet0   172.16.2.75    set   HMAC_SHA+DES_56_CB      0        0
     9 Ethernet0   172.16.2.75    set   HMAC_SHA+DES_56_CB      0        0
  2036 Tunnel0     10.0.0.12      set   HMAC_MD5+DES_56_CB      0      585
  2037 Tunnel0     10.0.0.12      set   HMAC_MD5+DES_56_CB    614        0
  2038 Tunnel1     10.0.1.12      set   HMAC_MD5+DES_56_CB      0      408
  2039 Tunnel1     10.0.1.12      set   HMAC_MD5+DES_56_CB    424        0

この場合も、Hub1、Hub2、Spoke1、および Spoke2 上のルーティング テーブルに関しては、注目すべきいくつかの興味深い問題があります。

  • 両方のハブ ルータには、スポーク ルータの背後のネットワークへの等価コスト ルートがあります。

    Hub1:

    D    192.168.1.0/24 [90/2841600] via 10.0.0.11, 00:00:59, Tunnel0
     D    192.168.2.0/24 [90/2841600] via 10.0.0.12, 00:00:34, Tunnel0

    Hub2:

    D    192.168.1.0/24 [90/2841600] via 10.0.1.11, 00:13:24, Tunnel0
     D    192.168.2.0/24 [90/2841600] via 10.0.1.12, 00:12:11, Tunnel0

    このことは、Hub1 と Hub2 は、ハブ ルータの背後にあるネットワーク内のルータに対して、スポーク ルータの背後にあるネットワークの同じコストをアドバタイズすることを意味します。 たとえば、192.168.0.0/24 LAN に直接接続されているルータである R2 上のルーティング テーブルは次のようになります。

    R2:

    D    192.168.1.0/24 [90/2867200] via 192.168.0.1, 00:51:51, Ethernet1/0/3
                                 [90/2867200] via 192.168.0.2, 00:51:51, Ethernet1/0/3
     D    192.168.2.0/24 [90/2867200] via 192.168.0.2, 00:52:43, Ethernet1/0/3
                         [90/2867200] via 192.168.0.1, 00:52:43, Ethernet1/0/3
  • スポーク ルータには、ハブ ルータの背後にあるネットワークへの、両方のハブ ルータを介した等価コスト ルートがあります。

    Spoke1:

    D    192.168.0.0/24 [90/3097600] via 10.0.1.1, 00:26:30, Tunnel1
                                 [90/3097600] via 10.0.0.1, 00:26:30, Tunnel0

    Spoke2:

    D    192.168.0.0/24 [90/3097600] via 10.0.1.1, 00:38:04, Tunnel1
                                 [90/3097600] via 10.0.0.1, 00:38:04, Tunnel0

    スポーク ルータがパケット単位のロード バランシングを行っている場合、順序の正しくないパケットが発生する可能性があります。

2 つのハブに対するリンクでの、非対称ルーティングやパケット単位のロード バランシングを回避するには、両方向で 1 つのスポークツーハブ パスを優先させるようルーティング プロトコルを設定する必要があります。 Hub1 をプライマリ、Hub2 をパックアップにする必要がある場合は、ハブ トンネル インターフェイス上の遅延が異なるものになるよう設定できます。

Hub1:

interface tunnel0
 ...
 delay 1000
 ...

Hub2:

interface tunnel0
 ...
 delay 1050
 ...

注: この例では、Hub2 上のトンネル インターフェイスの遅延に 50 が追加されています。これは、2 つのハブ間の Ethernet1 インターフェースの遅延(100)よりも小さいためです。 このようにすることで、Hub2 は依然としてスポーク ルータに直接パケットを転送しますが、Hub1 と Hub2 の背後にあるルータに対して、Hub1 よりは妥当性の低いルートをアドバタイズします。 遅延が 100 よりも多く増えた場合、Hub2 は Ethernet1 インターフェイス経由で Hub1 を通過するスポーク ルータのパケットを転送しますが、Hub1 と Hub2 の背後にあるルータは、スポーク ルータへのパケットの送信に関して、依然として正しく Hub1 を優先させます。

この時点でルートは次のようになります。

Hub1:

D    192.168.1.0/24 [90/2841600] via 10.0.0.11, 00:01:11, Tunnel0
 D    192.168.2.0/24 [90/2841600] via 10.0.0.12, 00:01:11, Tunnel0

Hub2:

D    192.168.1.0/24 [90/2854400] via 10.0.1.11, 00:00:04, Tunnel0
 D    192.168.2.0/24 [90/2854400] via 10.0.1.12, 00:00:04, Tunnel0

R2:

D    192.168.1.0/24 [90/2867200] via 192.168.0.1, 00:02:18, Ethernet1/0/3
 D    192.168.2.0/24 [90/2867200] via 192.168.0.1, 00:02:18, Ethernet1/0/3

2 つのルータは、スポーク ルータの背後にあるネットワーク ルートのコストが異なるため、この場合 R2 で確認できるように、Hub1 はスポーク ルータへのトラフィックの転送に関して優先されます。 これは、上記の最初の項目で説明されている問題の対処になります。

上記の 2 つ目の項目で説明されている問題は依然として存在しますが、2 つの p-pGRE トンネル インターフェイスがあるため、トンネル インターフェース上で delay ... を独立して設定して、Hub1 と Hub2 との対比により学習されたルートの EIGRP メトリックを変更できます。

Spoke1:

interface tunnel0
   delay 1000
 interface tunnel1
   delay 1050

Spoke2:

interface tunnel0
   delay 1000
 interface tunnel1
   delay 1050

この時点でルートは次のようになります。

Spoke1:

D    192.168.0.0/24 [90/2841600] via 10.0.0.1, 00:15:44, Tunnel0
 D    192.168.2.0/24 [90/3097600] via 10.0.0.1, 00:15:44, Tunnel0

Spoke2:

D    192.168.0.0/24 [90/2841600] via 10.0.0.1, 00:13:54, Tunnel0
 D    192.168.1.0/24 [90/3097600] via 10.0.0.1, 00:13:54, Tunnel0

上記のルーティング設定は非対称ルーティングに対する保護となり、同時に Hub1 がダウンした場合の Hub2 へのフェールオーバーを実現します。 つまり、両方のハブがアップ状態である場合は、Hub1 だけが使用されることを意味します。

ハブにまたがってスポークをバランシングすることで両方のハブを使用し、フェールオーバー保護を行い、非対称ルーティングを使用しない場合、ルーティング設定はより複雑になりますが、EIGRP を使用する場合はこれが可能です。 これを実現するには、ハブ ルータのトンネル インターフェイス上の delay ... を等しい値に戻し、続いてスポーク ルータ上で offset-list <acl> out <offset> <interface> コマンドを使用して、GRE トンネル インターフェイスからバックアップ ハブへアドバタイジングで送出されるルートの EIGRP メトリックを大きくします。 スポーク上の Tunnel0 インターフェイスと Tunnel1 インターフェイスとの間にある等しくない delay ... が依然として使用されているため、スポーク ルータはそのプライマリ ハブ ルータを優先させます。 スポーク ルータでの変更は次のとおりです。

MAGCIR.gif Spoke1 ルータ MAGCIR.gif

version 12.2
  !
  hostname Spoke1
  !
  ...
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.11 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.1.11 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.1.1 172.17.0.5
   ip nhrp network-id 100001
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.1.1
   delay 1500
   tunnel source Ethernet0
   tunnel destination 172.17.0.5
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  ...
  !
  router eigrp 1
   offset-list 1 out 12800 Tunnel1
   network 10.0.0.0 0.0.0.255
   network 10.0.1.0 0.0.0.255
   network 192.168.1.0
   distribute-list 1 out
   no auto-summary
  !
  access-list 1 permit 192.168.1.0
  !

MAGCIR.gif Spoke2 ルータ MAGCIR.gif

version 12.2
  !
  hostname Spoke2
  !
  ...
  !
  interface Tunnel0
   bandwidth 1000
   ip address 10.0.0.12 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.0.1 172.17.0.1
   ip nhrp network-id 100000
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.0.1
   delay 1500
   tunnel source Ethernet0
   tunnel destination 172.17.0.1
   tunnel key 100000
   tunnel protection ipsec profile vpnprof
  !
  interface Tunnel1
   bandwidth 1000
   ip address 10.0.1.12 255.255.255.0
   ip mtu 1436
   ip nhrp authentication test
   ip nhrp map 10.0.1.1 172.17.0.5
   ip nhrp network-id 100001
   ip nhrp holdtime 300
   ip nhrp nhs 10.0.1.1
   delay 1000
   tunnel source Ethernet0
   tunnel destination 172.17.0.5
   tunnel key 100001
   tunnel protection ipsec profile vpnprof
  !
  ...
  !
  router eigrp 1
   offset-list 1 out 12800 Tunnel1
   network 10.0.0.0 0.0.0.255
   network 10.0.1.0 0.0.0.255
   network 192.168.2.0
   distribute-list 1 out
   no auto-summary
  !
  access-list 1 permit 192.168.2.0
  !

注: EIGRP メトリックにはオフセット値 12800(50*256)が追加されていますが、これは 25600(100*256)よりも小さいためです。 この値(25600)は、ハブ ルータ間で学習されたルートに関して EIGRP メトリックに追加されたものです。 offset-list コマンドで 12800 を使用することで、(イーサネット経由でこれらのパケットを転送し、それらのスポークのプライマリ ハブ ルータを通過させるのではなく)バックアップ ハブ ルータはスポーク ルータにパケットを直接転送します。 ハブ ルータによりアドバタイズされるルートのメトリックは、依然として、正しいプライマリ ハブ ルータが優先されるようなメトリックになります。 スポークの半分はプライマリ ルータとして Hub1 を使用し、残りの半分はプライマリ ルータとして Hub2 を使用します。

注: オフセット値が 25600(100*256)よりも多く増えた場合、ハブの背後にあるルータがスポーク ルータへのパケットの送信に関して依然として正しいハブを優先させている場合であっても、ハブは Ethernet1 インターフェイス経由でもう一方のハブを通過するスポーク ルータの半分に関するパケットを転送します。

注: distribute-list 1 out コマンドも追加されているのは、スポーク上の 1 つのトンネル インターフェイス経由であるハブ ルータから学習されたルートが、もう一方のトンネルを経由してもう一方のハブにアドバタイズして戻すことが可能であるためです。 distribute-list ... コマンドにより、スポーク ルータは独自のルートだけをアドバタイズできます。

注: スポーク ルータではなくハブ ルータでルーティング アドバタイズメントを制御する場合は、スポーク上ではなくハブ ルータ上で、offset-list <acl1> in <value> <interface> および distribute-list <acl2> in コマンドを設定できます。 <acl2> アクセスリストはすべてのスポークの背後からルートをリストし、<acl1> アクセスリストは(別のハブ ルータがプライマリ ハブになる)スポークの背後からのルートだけをリストします。

これらの変更を加えて、ルートは次のようになります。

Hub1:

D    192.168.1.0/24 [90/2841600] via 10.0.0.11, 00:12:11, Tunnel2
 D    192.168.2.0/24 [90/2854400] via 10.0.0.12, 00:13:24, Tunnel2

Hub2:

D    192.168.1.0/24 [90/2854400] via 10.0.1.11, 00:09:58, Tunnel0
 D    192.168.2.0/24 [90/2841600] via 10.10.1.12, 00:11:11, Tunnel0

R2:

D    192.168.1.0/24 [90/2867200] via 192.168.0.1, 00:13:13, Ethernet1/0/3
 D    192.168.2.0/24 [90/2867200] via 192.168.0.2, 00:14:25, Ethernet1/0/3

Spoke1:

D    192.168.0.0/24 [90/2841600] via 10.0.0.1, 00:16:12, Tunnel0

Spoke2:

D    192.168.0.0/24 [90/2841600] via 10.0.1.1, 00:18:54, Tunnel1

結論

DMVPN ソリューションは、大規模および小規模 IPsec VPN ネットワークをより適切にスケーリングする、次の機能を提供します。

  • DMVPN では、フルメッシュまたは部分メッシュ IPsec VPN におけるスケーリングの改善が可能です。

    DMVPN が特に有用であるのは、スポークツースポーク トラフィックが散発的である場合(たとえばあらゆるスポークが他のすべてのスポークに継続的にデータを送信しているわけではない場合)です。 スポーク間で直接的な IP 接続が存在する限り、すべてのスポークはその他すべてのスポークに直接データを送信できます。

  • DMVPN は、(ケーブル、ISDN、および DSL などの)ダイナミックに割り当てられたアドレスを使用する IPsec ノードをサポートしています。

    これは、ハブ アンド スポークだけでなくメッシュ ネットワークにも適用されます。 DMVPN は、ハブツースポーク リンクが継続的にアップ状態になるよう要求できます。

  • DMVPN は VPN ノードの追加を簡単にします。

    新しいスポーク ルータを追加する場合は、スポーク ルータを設定してネットワークに取り付けるだけで済みます(ただし、ハブ上の新しいスポークに関する ISAKMP 認証情報を追加する必要のある場合があります)。 ハブは新しいスポークをダイナミックに学習し、ダイナミック ルーティング プロトコルはハブとその他すべてのスポークにルーティングを伝搬します。

  • DMVPN は、VPN のすべてのルートに必要な設定のサイズを小さくします。

    これは、GRE+IPsec のハブ アンド スポーク専用 VPN ネットワークにも該当します。

  • DMVPN は GRE を使用するため、VPN での IP マルチキャストおよびダイナミック ルーティング トラフィックをサポートしています。

    このことは、ダイナミック ルーティング プロトコルが使用でき、プロトコルにより冗長「ハブ」をサポートできることを意味します。 また、マルチキャスト アプリケーションもサポートされています。

  • DMVPN は、スポークでのスプリット トンネリングをサポートしています。


関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 41940