UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Cisco - DMVPN ( Dnymic Multipoint VPN )の設定




■DMVPN ( Dynamic Multipoint VPN ) の設定


DMVPNはハブアンドスポーク型のVPNで、スポーク同士の通信が発生した際にオンデマンドでVPNトンネルを生成するものです。これはASAには真似できない芸当でルータならではの機能であり、CiscoルータのVPNで最大のメリットとなります。


ハブとスポークは常にVPNトンネルをはっておき、スポーク同士は必要時のみトンネルを生成するのでハブルータの負荷が少なくなり、スポークルータは固定のIPアドレスを必要としません。また、GREトンネルを利用するのでダイナミックルーティングの併用も可能です。


スポークルータ同士の通信の際に宛先スポークルータのIPアドレスはNHRP ( Next Hop Resolution Protocol ) を利用します。NHRPはサーバルータとクライアントルータでやりとりされるIPアドレス解決プロトコルの一種です。NHRPの場合、ハブルータをNHRPサーバとして動作させ、スポークルータはNHRPクライアントとして動作させることによりスポークルータのIPアドレスはサーバルータに通知されます。


以下の構成を元にルータを設定します。



このときのハブルータR1の設定は以下のようになります。ここではダイナミックルーティングプロトコルでEIGRPを使用しています。

※IKEポリシー作成。暗号化方式や認証方式、Diffie-Hellmanなどを設定。
crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 5

※対向ルータと認証に利用する事前共有キーおよびIPアドレスを指定する。
crypto isakmp key 6 cisco address 0.0.0.0 0.0.0.0
!
!
※トランスフォームセットの作成。VPNトンネル内の暗号化方式と認証方式を設定。
crypto ipsec transform-set TS esp-aes 256 esp-sha-hmac
 mode transport
!
※Tunnelインターフェイスに適用するIPSecプロファイルを作成。
crypto ipsec profile gre_tunnel
 set security-association lifetime seconds 28800
 set transform-set TS
!
!
!
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface Tunnel1
 ip address 172.16.0.1 255.255.255.0
 no ip redirects
 ip mtu 1368
 no ip next-hop-self eigrp 170
 ※NHRP認証用文字列の定義
 ip nhrp authentication DMVPN
 ※マルチキャストを動的に設定
 ip nhrp map multicast dynamic
 ※NHRPを有効にしID番号を1に設定
 ip nhrp network-id 1
 no ip split-horizon eigrp 170
 tunnel source FastEthernet0/0
 ※トンネルカプセル化方式をmGREに設定
 tunnel mode gre multipoint
 ※トンネルインターフェイスのIDキーを設定
 tunnel key 1
 tunnel protection ipsec profile gre_tunnel
!
interface FastEthernet0/0
 ip address 10.0.0.1 255.255.255.0
 duplex auto
 speed auto
!
router eigrp 170
 network 1.1.1.1 0.0.0.0
 network 172.16.0.0 0.0.0.255
 no auto-summary


スポークルータR2は以下のようになります。


※IKEポリシー作成。暗号化方式や認証方式、Diffie-Hellmanなどを設定。
crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 5

※対向ルータと認証に利用する事前共有キーおよびIPアドレスを指定する。
crypto isakmp key 6 cisco address 0.0.0.0 0.0.0.0
!
!
※トランスフォームセットの作成。VPNトンネル内の暗号化方式と認証方式を設定。
crypto ipsec transform-set TS esp-aes 256 esp-sha-hmac
 mode transport
!
※Tunnelインターフェイスに適用するIPSecプロファイルを作成。
crypto ipsec profile gre_tunnel
 set security-association lifetime seconds 28800
 set transform-set TS
!
!
!
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface Tunnel1
 ip address 172.16.0.2 255.255.255.0
 no ip redirects
 ip mtu 1368
 ※NHRP認証用文字列の定義
 ip nhrp authentication DMVPN
 ※ハブに対してマルチキャストを送信するよう設定
 ip nhrp map multicast 10.0.0.1
 ※トンネルと物理のIPアドレスのマッピングを定義
 ip nhrp map 172.16.0.1 10.0.0.1
 ※NHRPを有効にしID番号を1に設定
 ip nhrp network-id 1
 ※ハブルータのトンネルIPをNHRPのネクストホップに設定
 ip nhrp nhs 172.16.0.1
 tunnel source FastEthernet0/0
 ※トンネルカプセル化方式をmGREに設定
 tunnel mode gre multipoint
 ※トンネルインターフェイスのIDキーを設定
 tunnel key 1
 tunnel protection ipsec profile gre_tunnel
!
interface FastEthernet0/0
 ip address 10.0.0.2 255.255.255.0
 duplex auto
 speed auto
!
router eigrp 170
 network 2.2.2.2 0.0.0.0
 network 172.16.0.0 0.0.0.255
 no auto-summary


R3に関してはR2と同様な設定になります。

DMVPNはTunnelインターフェイスにprotection profileを適用するタイプなので設定を投入した時点でVPNトンネルが生成されます。VPN確認コマンドで正常にトンネルがはられているかR1から確認を行います。

R1# sh crypto isa sa
dst             src             state          conn-id slot status
10.0.0.1        10.0.0.2        QM_IDLE              2    0 ACTIVE
10.0.0.1        10.0.0.3        QM_IDLE              1    0 ACTIVE



R1# sh crypto ipsec sa

interface: Tunnel1
    Crypto map tag: Tunnel1-head-0, local addr 10.0.0.1

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (10.0.0.1/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (10.0.0.2/255.255.255.255/47/0)
   current_peer 10.0.0.2 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 1431, #pkts encrypt: 1431, #pkts digest: 1431
    #pkts decaps: 1430, #pkts decrypt: 1430, #pkts verify: 1430
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0


前者のコマンドでQM_IDLEであるか、後者のコマンドでpkts encapsやdecapsがカウントアップしているか確認を行います。正常であればトンネルインターフェイスのIPアドレスでEIGRPのネイバーがはれていることを確認します。


R1# show ip eigrp neighbors
IP-EIGRP neighbors for process 170
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   172.16.0.2              Tu1               13 01:39:49  116  5000  0  3
0   172.16.0.3              Tu1               13 01:39:59   80  5000  0  3

上記のような出力であれば正常にネイバーもはれています。続いてNHRPに関しても確認を行なっておきます。


R1# show ip nhrp summary
IP NHRP cache 2 entries, 496 bytes
    0 static  2 dynamic  0 incomplete


R1# show ip nhrp detail
172.16.0.2/32 via 172.16.0.2, Tunnel1 created 01:41:33, expire 01:38:15
  Type: dynamic, Flags: authoritative unique registered
  NBMA address: 10.0.0.2
172.16.0.3/32 via 172.16.0.3, Tunnel1 created 01:41:43, expire 01:38:15
  Type: dynamic, Flags: authoritative unique registered
  NBMA address: 10.0.0.3

上記のようになっていれば大丈夫です。

今回の構成ではスポークルータは2台のみという構成ですが、スポークのルータが多くなればなるほどDMVPNのメリットは大きくなります。実案件では規模の大きいもので数百拠点のVPN接続案件というのもありますが、例えばこれをDMVPNではなく通常のIPSecVPNで設定しようと思うとハブルータには拠点の数だけ設定を追記する必要があり、拠点側も固定IPが必要で手間とコストがかかります。対してDMVPNであればハブルータの設定は一旦設定してしまえば後はスポークの設定のみであり、スポークは固定IPの必要はなく自動的に接続可能となるのでこれだけでもメリットを感じることができます。

また、拠点間の通信は必ずTunnel経由で行うということであれば物理インターフェイスはGREおよびVPNトンネルをはるためだけのアクセスリストを適用しておくのがセキュリティ上は好ましくなりますが、そもそもルーティングテーブル上にはトンネル経由の経路のみなので必須でもありません。


access-list 100 permit gre any any
access-list 100 permit esp any any
access-list 100 permit udp any any eq isakmp

interface FastEthernet0/0
 ip access-group 100 in




 

 関連記事
 GRE over IPSecの設定
 IPSec VPNの設定
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.