■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 |