internet VPN 関連

Ciscoルータを使って、DMVPNを利用したネットワーク構築。
(参考)

実運用環境であれば、暗号化をかけセキュリティを高めるところだが、nhrpの基本動作を確認するべく、トンネルのipsec化は今回は実施せず。

  1. hub-spoke間のトンネルは事前設定したものを利用。
  2. (hub-spoke間のトンネルが確立された後)spoke-spoke間のトラフィックが発生した場合、nhrpを利用し、nhrpサーバとなっているhubから対向spokeのアドレスを取得。spoke-spoke間のトンネルを確立させる。

これにより、spoke側がDHCP環境下でもspoke-spoke間のトラフィックがhubを経由せず、直接のトンネルネットワーク上に流れる。
テスト環境設定は、

拠点 機種 トンネルのIPアドレス IOS
hubサイト Cisco2610 192.168.1.26/25 c2600-j1s3-mz.123-16a.bin
spokeサイト#1 Cisco7206 192.168.1.72/25 c7200-p-mz.120-28a.bin
spokeサイト#2 Cisco3620 192.168.1.36/25 c3620-i-mz.123-22.bin
spokeサイト#3 Cisco3640 192.168.1.99/25 c3640-ik9s-mz.123-20.bin
  • hub - 暗号化部分、トンネル、nhrpのサーバ機能
  • spoke - hub側のipアドレス、暗号化、トンネル、nhrpサーバipアドレス
  • それぞれ - ルーティング(今回はospf、eigrpの両方を試す。)

動作確認としてのコマンド

  • sh ip nhrp
hub側
c2610#sh ip nhrp
192.168.1.36/32 via 192.168.1.36, Tunnel100 created 2d09h, expire 00:03:20
  Type: dynamic, Flags: authoritative unique registered 
  NBMA address: グローバルアドレス
192.168.1.72/32 via 192.168.1.72, Tunnel100 created 2d09h, expire 00:04:23
  Type: dynamic, Flags: authoritative unique registered used 
  NBMA address: グローバルアドレス
192.168.1.99/32 via 192.168.1.99, Tunnel100 created 2d07h, expire 00:04:40
  Type: dynamic, Flags: authoritative unique registered used 
  NBMA address: グローバルアドレス
c2610#
spoke#2側
c3620#sh ip nhrp 
10.3.6.20/32 via 10.3.6.20, Tunnel100 created 00:03:56, expire 00:01:03
  Type: dynamic, Flags: router authoritative unique local 
  NBMA address: グローバルアドレス
    (no-socket) 
172.16.36.0/24 via 172.16.36.20, Tunnel100 created 00:00:14, expire 00:04:45
  Type: dynamic, Flags: router authoritative unique local 
  NBMA address: グローバルアドレス
    (no-socket) 
192.168.1.26/32 via 192.168.1.26, Tunnel100 created 2d09h, never expire 
  Type: static, Flags: authoritative used 
  NBMA address: グローバルアドレス(hub拠点)
192.168.1.72/32 via 192.168.1.72, Tunnel100 created 2d08h, expire 00:04:45
  Type: dynamic, Flags: router implicit used 
  NBMA address: グローバルアドレス

hub拠点はTypeがstatic、時間も"never expire"になる。
その他nhrpで学習、構築されたトンネルは、typeがdynamicとして載る。("(no-socket)"が表示される上記2つはc3620に直接つながっているネットワーク)
cf. http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080455c71.html#wp1050245
トンネルインターフェース上の"ip nhrp holdtime"で指定された時間を越える無通信状態が続いた時点でdynamicとして構築されたトンネルは無くなる。その後、トラフィックがあった場合、再構築される。
なので、オンデマンドでspoke-spokeのトンネルを構築するため、tracerouteだと、トンネル構築まではhubをホップしたように見える(例はspoke#2からspoke#3)が、

c3620#trace 192.168.1.99      

Type escape sequence to abort.
Tracing the route to 192.168.1.99

  1 192.168.1.26 4 msec
    192.168.1.99 8 msec 8 msec
c3620#

その後は、

c3620#trace 192.168.1.99

Type escape sequence to abort.
Tracing the route to 192.168.1.99

  1 192.168.1.99 8 msec 8 msec * 
c3620#

のように、直接行くようになる。
pingだと最初のパケットは落ちていることがある。それか落ちているように見えるだけか?

以下は新たなトンネルができた後の、spoke#2の"sh ip nhrp"の結果。

c3620#sh ip nhrp       
10.3.6.20/32 via 10.3.6.20, Tunnel100 created 00:02:28, expire 00:02:31
  Type: dynamic, Flags: router authoritative unique local 
  NBMA address: グローバルアドレス
    (no-socket) 
172.16.36.0/24 via 172.16.36.20, Tunnel100 created 00:03:46, expire 00:01:13
  Type: dynamic, Flags: router authoritative unique local 
  NBMA address: グローバルアドレス
    (no-socket) 
192.168.1.26/32 via 192.168.1.26, Tunnel100 created 2d09h, never expire 
  Type: static, Flags: authoritative used 
  NBMA address: グローバルアドレス
192.168.1.72/32 via 192.168.1.72, Tunnel100 created 2d08h, expire 00:02:31
  Type: dynamic, Flags: router implicit 
  NBMA address: グローバルアドレス
192.168.1.99/32 via 192.168.1.99, Tunnel100 created 00:00:10, expire 00:03:27
  Type: dynamic, Flags: router used 
  NBMA address: グローバルアドレス
c3620#  

ホントはhubにしたかった7206のspoke#1の設定がいまいち上手く行っていない。
やっぱりIOSのバージョンが違うせいか?