DMVPN(Dynamic Multipoint VPN)は、多くの拠点をつなぐ VPN を、接続先のルータをすべて静的に設定しなくても作れるようにする技術です。構成は「ハブアンドスポーク」ですが、スポークどうしの通信が必要になると、スポーク間に直接トンネルを張れます。あらかじめフルメッシュのトンネルを設定しておく必要はありません。
この記事では、DMVPN を支える2つの仕組み、マルチポイント GRE(mGRE)と NHRP(Next Hop Resolution Protocol)の役割と、スポーク間に直接トンネルができるまでの流れを、図で順に説明します。
- mGRE:1つのトンネルインターフェースで複数の宛先とつながる仕組み
- NHRP:トンネルのアドレスから相手の NBMA アドレスを調べる仕組み
- スポークの登録から、スポーク間に直接トンネルができるまでの流れ
- オーバーレイとアンダーレイのアドレスの関係
DMVPN を構成する2つの仕組み
| 仕組み | 役割 |
|---|---|
| マルチポイント GRE(mGRE) | 1つのトンネルインターフェースで、複数の相手とトンネルを張る |
| NHRP | トンネルの相手のアドレス(トンネルアドレス)から、インターネット側のアドレス(NBMA アドレス)を調べる |
実際の DMVPN では、これに IPsec を組み合わせてトンネルの通信を暗号化するのが一般的です。この記事では、トンネルを作る仕組みである mGRE と NHRP に絞って説明します。
マルチポイント GRE(mGRE)
GRE トンネルは、1つのトンネルインターフェースに1つの宛先を設定するポイントツーポイントが基本です。拠点が増えるたびに、トンネルインターフェースも増やす必要があります。マルチポイント GRE では、1つのトンネルインターフェースで複数の宛先とトンネルを張れます。
ただし、mGRE のトンネルインターフェースには宛先を固定で書かないので、パケットを送るときに「このトンネルの相手のインターネット側のアドレスはどれか」を別の方法で知る必要があります。そこで使うのが NHRP です。
NHRP(Next Hop Resolution Protocol)
NHRP は、ネクストホップサーバ(NHS)と NHRP クライアント(NHC)で動くプロトコルです。DMVPN では、ハブが NHS、スポークが NHRP クライアントになります。
トンネルの下にある、インターネットなどの公衆網で使うアドレスを、パブリックアドレスまたは NBMA(Non-Broadcast Multi-Access)アドレスと呼びます。トンネルインターフェースに付けるアドレスは、トンネルアドレス(プライベートアドレス)です。
スポークには、ハブのトンネルアドレスと NBMA アドレスの対応を静的に設定しておきます。スポークは起動するとハブに自分の対応を登録(NHRP 登録)し、ハブはその登録からスポークの情報を動的に学習します。ハブ側に、スポークのアドレスを1台ずつ設定する必要はありません。
| 機器 | NHRP での役割 | あらかじめ知っていること |
|---|---|---|
| ハブ | NHS(ネクストホップサーバ) | 自分のアドレスだけ。スポークの情報は登録で学習する |
| スポーク | NHRP クライアント | ハブのトンネルアドレスと NBMA アドレスの対応(静的に設定) |
基本動作
スポークがハブに登録する
まず、NHRP クライアントであるスポークは、自分のトンネルアドレスと NBMA アドレスの対応を、NHRP Registration Request で NHS(ハブ)に登録します。ハブは、スポークのトンネルアドレスと NBMA アドレスの対応表(NHRP キャッシュ)を作ります。
スポーク2の NBMA アドレスを問い合わせる
スポーク1からスポーク2(トンネルアドレス 192.168.0.3)へ通信したいとします。スポーク1は、スポーク2の NBMA アドレスを知らないので、ハブに NHRP Resolution Request を送って問い合わせます。
ハブは NHRP キャッシュを参照し、NHRP Resolution Reply でスポーク2の NBMA アドレス(169.254.0.3)を返します。
スポーク間に直接トンネルを張る
これでスポーク1は、スポーク2の NBMA アドレスがわかりました。スポーク1は、169.254.0.3 宛てに直接トンネルを張り、ハブを経由せずにスポーク2と通信します。
ハブとスポークの間のトンネルは常に張られていますが、スポーク間のトンネルは、スポーク間で通信が発生したときに必要に応じて作られます。拠点が多くても、使わないスポーク間のトンネルは作られないので、設定や機器の負荷を抑えられます。
オーバーレイとアンダーレイ
この構成のアドレスを、オーバーレイ(トンネル)とアンダーレイ(トンネルの下の公衆網)に分けて整理します。どの機器も、両方の層にアドレスを持っています。
| 機器 | トンネルアドレス(オーバーレイ) | NBMA アドレス(アンダーレイ) |
|---|---|---|
| HUB | 192.168.0.1 | 169.254.0.1 |
| Spoke1 | 192.168.0.2 | 169.254.0.2 |
| Spoke2 | 192.168.0.3 | 169.254.0.3 |
NHRP が調べているのは、この表の「トンネルアドレスに対応する NBMA アドレス」です。
まとめ
| 項目 | 内容 |
|---|---|
| mGRE | 1つのトンネルインターフェースで複数の相手とトンネルを張る |
| NHRP | トンネルアドレスから NBMA アドレスを調べる。ハブが NHS、スポークがクライアント |
| Registration Request | スポークが自分のトンネルアドレスと NBMA アドレスの対応をハブに登録する |
| Resolution Request/Reply | スポークがハブに相手の NBMA アドレスを問い合わせ、ハブが答える |
| スポーク間トンネル | 通信が発生したときに、相手の NBMA アドレス宛てに直接張る |
コメント