VPN / マルチポイントVPN
マルチポイントVPNは、ポイントツーマルチポイント(一対多)型のトンネルインターフェースを利用することにより、1つのインターフェース設定で複数拠点とのVPN接続を実現する仕組みです。概要
従来、VPN接続にはおもにポイントツーポイント(一対一)型のトンネルインターフェースが用いられてきましたが、この方式では接続先の数だけトンネルインターフェースの設定が必要になるため、ハブ&スポーク構成のハブ(センター)側ではスポーク(拠点)の追加にともなう設定変更量が多く、ネットワークの構成変更に手間がかかりました。これに対して、ポイントツーマルチポイント型のトンネルインターフェースでは、1つのインターフェースで複数拠点との接続が可能なため、拠点追加にともなうセンター側の設定変更量がポイントツーポイント型よりも少なく、さらにRADIUSサーバー等を利用すればセンター側の設定変更なしで拠点を追加することも可能になります。

また、複数拠点でポイントツーマルチポイント型のトンネルインターフェースを使用すれば、メッシュ構成のVPNも従来よりシンプルな設定で実現可能です。

ポイントツーマルチポイント型トンネルインターフェース
次に、ポイントツーポイント型トンネルとポイントツーマルチポイント型トンネルのおもな違いをまとめます。| 接続先 | ||
| ブロードキャスト | ||
| リンク層アドレス(ARP)解決 | ||
| 経路設定時のネクストホップ指定方法 |
ポイントツーポイント型トンネルインターフェースに転送されたパケットは、該当トンネルで使用しているトンネリングプロトコルによってカプセル化され、唯一の接続先である対向ルーターに転送されます。この場合、接続先が1つしかないためARP解決の必要はありません。
一方、ポイントツーマルチポイント型トンネルインターフェースは、同インターフェース上に複数の対向ルーターが存在しうるという点でEthernetに似た性質を持っています。そのため、ポイントツーマルチポイント型トンネルインターフェースにパケットを転送するにあたっては、同インターフェース上のどの対向ルーターに送信すればよいかの判断が必要になります。これはEthernetと同じようにネクストホップIPアドレスをARP解決することによって行いますが、得られるアドレスがMACアドレスではなく対向ルーターのトンネル終端IPアドレス(エンドポイントIPアドレス)になる点がEthernetと異なります。したがって、ポイントツーマルチポイント型トンネルインターフェース上のARPエントリーはリンク層アドレスがIPアドレスになります。
また、ポイントツーマルチポイント型トンネルインターフェースではブロードキャストもサポートしています。ポイントツーマルチポイント型トンネルインターフェースはその時点で把握している接続先(エンドポイント)の1つ1つに対してブロードキャストパケットを複製し、それぞれを適切にカプセル化してから各接続先に送信します。
基本仕様
マルチポイントVPNの基本的な仕様は次のとおりです。- トンネリングプロトコルにはマルチポイントGREを使用する。
- セキュリティープロトコルとしてトランスポートモードIPsec/ISAKMPを併用可能。
- デリバリー(外側)プロトコル、ペイロード(内側)プロトコルともにIPv4のみサポート。
- デリバリー(外側)ヘッダーのDF(フラグメント不可)ビットはつねにセットされる。
- マルチポイントGREトンネルインターフェースは1装置あたり1つだけ作成可能。
- マルチポイントGREトンネルインターフェースでは、スタティックルーティングとOSPFをサポート。
- ip routeコマンドでスタティック経路を設定するときは、GATEWAYパラメーターでネクストホップアドレス(エンドポイント)を明示的に指定すること。
- OSPFを使用する場合、マルチポイントGREトンネルインターフェースではip ospf networkコマンドでネットワーク種別をpoint-to-multipointに設定すること。
- ip routeコマンドでスタティック経路を設定するときは、GATEWAYパラメーターでネクストホップアドレス(エンドポイント)を明示的に指定すること。
- マルチポイントGREトンネルインターフェースのIPv4アドレスをDHCP、ISAKMPなどによって動的に設定することはできない。
基本設定
ここではいくつかの構成を例に、各ルーターにおけるマルチポイントVPN固有の設定だけを取り出して紹介します。全体的な設定については、下記の設定例集をご覧ください。
- マルチポイントVPN ハブ&スポーク構成(支社間通信は本社経由。事前共通鍵は共通)
- マルチポイントVPN ハブ&スポーク構成(支社間通信なし。事前共通鍵は個別)
- マルチポイントVPN フルメッシュ構成(事前共通鍵は共通)
なお、以下の各例では次のことを仮定しています。
- IPv4インターネットへの接続にはPPPoEを使用(ppp0インターフェース)
- ppp0インターフェースにはグローバルIPアドレスが1個固定で設定されている
- IPsecによる保護を使用する
ハブ&スポーク構成(共通の事前共有鍵を使用)
- ハブ(センター)がスポーク(拠点)を集約する構成
- ハブではマルチポイントGREトンネルインターフェースを使用
- スポークでは通常のGREトンネルインターフェースを使用
- ハブではマルチポイントGREトンネルインターフェースを使用
- センターと各拠点間では共通の事前共有鍵を使用

crypto isakmp key friend hostname hub interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel endpoint dynamic tunnel local name hub tunnel protection ipsec ip address 172.16.0.1/28 ! ip route 192.168.20.0/24 172.16.0.2 ip route 192.168.30.0/24 172.16.0.3
スポーク1(拠点1)
crypto isakmp key friend hostname hub interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke1 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.2/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.30.0/24 172.16.0.1
スポーク2(拠点2)
crypto isakmp key friend hostname hub interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke2 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.3/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.20.0/24 172.16.0.1
ハブ&スポーク構成(個別の事前共有鍵を使用)
- ハブ(センター)がスポーク(拠点)を集約する構成
- ハブではマルチポイントGREトンネルインターフェースを使用
- スポークでは通常のGREトンネルインターフェースを使用
- ハブではマルチポイントGREトンネルインターフェースを使用
- センターと各拠点間では個別の事前共有鍵を使用

crypto isakmp key friend1 hostname spoke1 crypto isakmp key friend2 hostname spoke2 interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel endpoint dynamic tunnel local name hub tunnel protection ipsec ip address 172.16.0.1/28 ! ip route 192.168.20.0/24 172.16.0.2 ip route 192.168.30.0/24 172.16.0.3
スポーク1(拠点1)
crypto isakmp key friend1 hostname hub interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke1 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.2/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.30.0/24 172.16.0.1
スポーク2(拠点2)
crypto isakmp key friend2 hostname hub interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke2 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.3/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.20.0/24 172.16.0.1
ハブ&スポーク構成(センター側では各拠点をRADIUS認証)
- ハブ(センター)がスポーク(拠点)を集約する構成
- ハブではマルチポイントGREトンネルインターフェースを使用
- スポークでは通常のGREトンネルインターフェースを使用
- ハブではマルチポイントGREトンネルインターフェースを使用
- センターと各拠点間では共通の事前共有鍵を使用
- さらにセンターは各拠点を個別にRADIUSでも認証

radius-server host 192.168.10.5 key RadiusPasswordHere aaa authentication isakmp default group radius crypto isakmp profile spoke remote authentication eap-radius transform 1 integrity SHA1 encryption AES128 group 14 crypto isakmp peer dynamic profile spoke crypto isakmp key friend hostname hub interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel endpoint dynamic tunnel local name hub tunnel protection ipsec ip address 172.16.0.1/28 ! ip route 192.168.20.0/24 172.16.0.2 ip route 192.168.30.0/24 172.16.0.3
スポーク1(拠点1)
crypto isakmp profile hub local authentication eap-radius transform 1 integrity SHA1 encryption AES128 group 14 crypto isakmp peer hostname hub profile hub crypto isakmp key friend hostname hub crypto isakmp key friend1 hostname hub type eap interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke1 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.2/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.30.0/24 172.16.0.1
スポーク2(拠点2)
crypto isakmp profile hub local authentication eap-radius transform 1 integrity SHA1 encryption AES128 group 14 crypto isakmp peer hostname hub profile hub crypto isakmp key friend hostname hub crypto isakmp key friend2 hostname hub type eap interface tunnel0 tunnel mode gre tunnel source ppp0 tunnel destination 10.1.1.1 tunnel local name spoke2 tunnel remote name hub tunnel protection ipsec ip address 172.16.0.3/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.20.0/24 172.16.0.1
フルメッシュ構成
- 各サイトが他のすべてのサイトと接続するフルメッシュ構成
- すべてのサイトでマルチポイントGREトンネルインターフェースを使用
- すべてのサイト間で共通の事前共有鍵を使用

crypto isakmp key friend hostname node1 interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel local name node1 tunnel endpoint 10.2.2.2 tunnel endpoint 10.3.3.3 tunnel protection ipsec ip address 172.16.0.1/28 ! ip route 192.168.20.0/24 172.16.0.2 ip route 192.168.30.0/24 172.16.0.3
ノード2(サイト2)
crypto isakmp key friend hostname node2 interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel local name node2 tunnel endpoint 10.1.1.1 tunnel endpoint 10.3.3.3 tunnel protection ipsec ip address 172.16.0.2/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.30.0/24 172.16.0.3
ノード3(サイト3)
crypto isakmp key friend hostname node3 interface tunnel0 tunnel mode gre multipoint tunnel source ppp0 tunnel local name node3 tunnel endpoint 10.1.1.1 tunnel endpoint 10.2.2.2 tunnel protection ipsec ip address 172.16.0.3/28 ! ip route 192.168.10.0/24 172.16.0.1 ip route 192.168.20.0/24 172.16.0.2
設定と状態の確認
マルチポイントGREトンネルインターフェースの情報はshow interfaceコマンドで確認できます。awplus# show interface tunnel0
Interface tunnel0
Link is UP, administrative state is UP
Hardware is Tunnel
IPv4 address 172.16.0.1/28 broadcast 172.16.0.15
index 15 metric 1 mtu 1434
<UP,BROADCAST,RUNNING,MULTICAST>
VRF Binding: Not bound
SNMP link-status traps: Disabled
Bandwidth 1g
Tunnel source 10.1.1.1
Tunnel name local hub
Tunnel protocol/transport gre multipoint, key disabled, sequencing disabled
Tunnel endpoint 10.2.2.2
Tunnel endpoint 10.3.3.3
Tunnel TTL 64
Checksumming of packets disabled, path MTU discovery disabled
Tunnel protection via IPsec (profile "default")
Router Advertisement is disabled
Router Advertisement default routes are accepted
Router Advertisement prefix info is accepted
input packets 56, bytes 3804, dropped 0, multicast packets 0
output packets 121, bytes 5364, multicast packets 0, broadcast packets 0
input average rate : 30 seconds 0 bps, 5 minutes 0 bps
output average rate: 30 seconds 0 bps, 5 minutes 0 bps
input peak rate 972 bps at 2019/03/14 00:30:13
output peak rate 1.53 Kbps at 2019/03/14 00:30:13
Time since last state change: 0 days 02:18:50
マルチポイントGREトンネルインターフェース上のARPエントリーは、リンク層アドレス(LL Address)が対向ルーターのトンネル終端IPアドレス(エンドポイントIPアドレス)になっています。これはshow arpコマンドで確認できます。
awplus# show arp
IP Address LL Address Interface Port Type
172.16.0.2 10.2.2.2 tunnel0 - dynamic
IPsecの接続相手はshow ipsec peerコマンドで確認できます。
awplus# show ipsec peer
IPsec
Selectors (local:remote)
Address: 10.1.1.1 : any
Protocol: gre:gre
Port: any:any
Mark: any:any
Profile: default
SPI (In:Out): c11b381d:cdfcfc96
Selectors: 10.1.1.1/32[gre] 10.2.2.2/32[gre]
Proto: ESP
Mode: transport
Encryption: AES256
Integrity: SHA256
Expires: 28794s
ISAKMP
LocalID: hub
RemoteID: spoke1
Cookies (Initiator:Responder) d67d8e23b5626547:cadf02b393a4047c
Ver: 2 Lifetime: 84450s State: Established
Authentication: PSK Group: 14
Encryption: AES256 NATT: no
Integrity: SHA256 DPD: yes