概要

DMVPN(Dynamic Multipoint VPN)のインターネットVPNにおいて、FVRFでアンダーレイネットワークとオーバーレイネットワークを分離するための設定について考えます。

DMVPN(Dynamic Multipoint VPN)の概要

デフォルトのGREトンネルまたはIPSec VTIは、ポイントツーポイント接続です。インターネットVPNで通信する拠点が複数あると、ポイントツーポイント接続では効率がよくありません。トンネルインタフェースの設定が煩雑になってしまいます。

そこで、DMVPNを利用します。DMVPNは、マルチポイントGRE(以下、mGRE)トンネルに基づいています。mGREトンネルによって、マルチアクセスのオーバーレイネットワークを構築できます。つまり、同一ネットワークに2台以上のルータを接続できるオーバーレイネットワークです。mGREトンネル上で、ルーティングプロトコルを動作させることができ、オーバーレイネットワーク経由のルート情報をダイナミックに学習できます。ただし、mGREトンネルは、イーサネットのようなブロードキャストマルチアクセスネットワークではありません。フレームリレーのようなノンブロードキャストマルチアクセスネットワークです。そのため、OSPF/EIGRPといったルーティングプロトコルを動作させるには、ちょっとした追加の設定が必要です。

そして、mGREトンネル経由で通信するデータは、IPSecで暗号化してアンダーレイネットワーク上を転送します。適切なルータ間で自動的にISAKMP/IPSec SAを確立した上で、データの暗号化を行い、適切なヘッダでカプセル化してインターネット(アンダーレイネットワーク)上に転送します。ポイントツーポイントGREトンネルのときには、カプセル化する新しいIPヘッダの宛先IPアドレスは事前設定しています。mGREトンネルでは、NHRPによって新しいIPヘッダの宛先IPアドレスをダイナミックに解決します。

図 DMVPNの概要
図 DMVPNの概要

ポイントツーポイントGREトンネルと同様に、DMVPNのmGREトンネル(オーバーレイネットワーク)とインターネット(アンダーレイネットワーク)をVRFで論理的に分離できます。

オーバーレイネットワークのVRF : FVRF
アンダーレイネットワークのVRF : IVRF

以下の図で、A社拠点1のルータのみVRFでオーバーレイネットワークとアンダーレイネットワークを分離している様子を表しています。

図 VRFで分離
図 VRFで分離

DMVPN(VRF-aware)の設定のポイント

mGREトンネルインタフェース

mGREトンネルインタフェースで大事なことは、NHRPについての設定です。NHRPでオーバーレイネットワークのIPアドレスとアンダーレイネットワークのIPアドレスの対応をダイナミックに解決できるようにします。NHRP自体はVRFとはあまり関係ありませんが、NHRPのコマンドについて振り返っておきましょう。なお、ここで解説しているのは、NHRP Phase2です。

NHS NHRPの設定

オーバーレイとアンダーレイのIPアドレスの対応を管理するNHS(Next Hop Server)のmGREの設定コマンドは、以下のようになります。

NHS NHRPの設定

(config)#interface tunnel <interface-number>
(config-if)#tunnel mode gre multipoint
(config-if)#tunnel source {<source-address>|<source-interface>}
(config-if)#ip nhrp network-id <network-id>
(config-if)#ip nhrp map multicast dynamic

<interface-number> : インタフェース番号
<source-address>|<source-interface> : 新しく付加するIPヘッダの送信元IPアドレス|インタフェース
<network-id> : ネットワークID

tunnel mode gre multipointコマンドで、mGREインタフェースとします。mGREでは、tunnel destinationの設定は行いません。アンダーレイネットワークの宛先IPアドレスはNHRPで解決します。

tunnel sourceコマンドで、アンダーレイで転送するときに新しく付加するIPヘッダの送信元IPアドレスを決めます。tunnel sourceはアンダーレイのIPアドレスです。

ip nhrp network-idコマンドで、任意のネットワークIDを指定します。ローカルで意味があるので他の機器と合わせなくてもいいのですが、通常はmGREトンネル上の機器で共通したネットワークIDを指定します。

そして、ip nhrp map multicast dynamicコマンドで、マルチキャスト(ブロードキャスト)パケットをダイナミックに学習したNHC宛てのユニキャスト(アンダーレイ)で転送できるようにします。mGREはノンブロードキャストマルチアクセスネットワークなので、疑似ブロードキャストできるようにするための設定です。

NHC NHRPの設定

NHCは、自身のオーバーレイアドレスとアンダーレイアドレスの情報をNHSへ登録します。そして、mGRE上でパケットを転送するときにアンダーレイネットワークのアドレスが必要です。そのために、NHSへ必要なアンダーレイアドレスを問い合わせます。

NHC(Next Hop Client)のmGRE設定コマンドは以下のようになります。

NHC NHRPの設定

(config)#interface tunnel <interface-number>
(config-if)#tunnel mode gre multipoint
(config-if)#tunnel source {<source-address>|<source-interface>}
(config-if)#ip nhrp network-id <network-id>
(config-if)#ip nhrp map <nhs-overlay-address> <nhs-underlay-address>
(config-if)#ip nhrp nhs <nhs-overlay-address>
(config-if)#ip nhrp map multicast <nhs-underlay-address>

<interface-name> : インタフェース番号
<source-address>|<source-interface> : 新しく付加するIPヘッダの送信元IPアドレス|インタフェース
<network-id> : ネットワークID
<nhs-overlay-address> : NHSのオーバーレイアドレス
<nhs-underlay-address> : NHSのアンダーレイアドレス

NHCは、自身のオーバーレイアドレスとアンダーレイアドレスの対応をNHSに登録します。登録先のNHSのオーバーレイアドレスをip nhrp nhsコマンドで設定してください。そして、NHSのオーバーレイアドレスに対応するアンダーレイアドレスをip nhrp mapコマンドで設定します。

ip nhrp map multicastコマンドでmGREトンネル上のマルチキャスト(ブロードキャスト)を転送するときにカプセル化するアンダーレイアドレスを設定してください。たいていは、NHSのアンダーレイアドレスを指定します。つまり、マルチキャスト(ブロードキャスト)はNHSだけに転送するように設定していることがほとんどです。

CiscoオフィシャルのNHRPのコマンド構文から、このページではオプション名について少し表現を変えています。

トンネルアドレス → オーバーレイアドレス
NBMAアドレス → アンダーレイアドレス

「オーバーレイ」「アンダーレイ」という言葉の方がわかりやすいと考えているからです。

IOSバージョンによっては、3つのコマンドをまとめて設定できます。

(config-if)#ip nhrp map <nhs-overlay-address> <nhs-underlay-address>
(config-if)#ip nhrp nhs <nhs-overlay-address>
(config-if)#ip nhrp map multicast <nhs-underlay-address>

(config)#ip nhrp nhs <nhs-overlay-address> nbma <nhs-underlay-address> multicast

以下の図は、ここまでのNHS/NHSのコマンドの簡単な例です。シンプルにするためにNHCを1つだけにしています。NHCを追加するときにも同様に考えてください。

NHS/NHSのコマンドの簡単な例
図 NHS/NHSのコマンドの簡単な例

この例では、アンダーレイアドレスとして、FVRFのLo0のIPアドレスを利用しています。アンダーレイアドレスは、必ずしも物理インタフェースのIPアドレスである必要はありません。アンダーレイネットワークを通じて接続性があればOKです。

NHS/NHC VRFおよびIPSec関連の設定

NHS/NHC共通して、mGREトンネルの設定を以下のように行います。mGREトンネルとアンダーレイをVRFで分割して、mGREトンネルのデータをIPSecで暗号化するための設定です。

NHS/NHC VRFおよびIPSec関連の設定

(config)#interface tunnel <interface-number>
(config-if)#ip vrf forwarding <IVRF>
(config-if)#ip address <address> <subnetmask>
(config-if)#tunnel vrf <FVRF>
(config-if)#tunnel protection ipsec profile <IPSec-profile>

<IVRF> : IVRF名
<address> <subnetmask> : オーバーレイネットワークのIPアドレス
<FVRF> : FVRF名
<IPSec-profile> : IPSecプロファイル名

VRF自体の定義やIPSecプロファイルなどの設定コマンドは省略しています。

mGREトンネル自体は、ポイントツーポイントGREトンネルと同様にオーバーレイネットワークのインタフェースです。そのため、ip vrf forwardingでオーバーレイネットワークのIVRFに割り当ててください。適切なオーバーレイネットワークのIPアドレスの設定も必要です。

mGRE経由のパケットは、実際には、アンダーレイネットワークのFVRFで転送することになるので、tunnel vrfコマンドでFVRFに対応づけます。そして、Tunnel上のパケットをすべてIPSecで暗号化するためにtunnel protectionコマンドでIPSecプロファイルを関連付けます。

NHS/NHC VRFおよびIPSec関連の設定
図 NHS/NHC VRFおよびIPSec関連の設定

crypto keyring

IPSec VTIと同様に、DMVPNのIPSecの通信はアンダーレイネットワークを通じて行います。そのため、FVRFのルーティングテーブルに基づいて設定します。crypto keyringでVRFを指定します。

crypto keyring

(config)#crypto keyring <name> vrf <vrf-name>
(config-keyring)#pre-shared-key address 0.0.0.0 0.0.0.0 key <key>

<name> : キーリング名
<vrf-name> : VRF名
<ip-address> [<mask>] : 対向のIPSecピア
<key> : 事前共有鍵

DMVPNのときは、IPSecのピアはダイナミックに確立するので、ピアのIPアドレスを明示的に指定しません。ピアのアドレスとマスクとしてともに「0.0.0.0」を指定します。

まとめ

ポイント

  • DMVPNは、マルチポイントGRE(mGRE)トンネルに基づいています。
  • mGREインタフェースは、2台以上のルータを接続できるノンブロードキャストマルチアクセスネットワークを構築できます。
  • VRFでmGREトンネルのオーバーレイネットワークとアンダーレイネットワークを分離できます。

IPルーティング応用