IPsecの基本
・ルーター間でIPsec通信をする
・IPsecによって暗号通信ができているか確認する
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterA
!
crypto isakmp policy 1             ←ISAKMPポリシーを設定
authentication pre-share
crypto isakmp key ciscovpn address 1.1.1.2

!
crypto ipsec transform-set TS-Basic esp-des esp-sha-hmac
!               ↑IPsecポリシー(トランスフォームセット)を「TS-Basic」に定義
crypto map MAP-Basic 1 ipsec-isakmp ←crypt map「MAP-Basic」を定義
set peer 1.1.1.2
set transform-set
TS-Basic
match address
150

!
interface Loopback0
ip address 10.1.1.1 255.255.255.0
!
interface Serial0
ip address 1.1.1.1 255.255.255.0
serial restart-delay 0
clockrate 64000
crypto map MAP-Basic ←インタフェースにcrypt mapを適用
!
ip route 0.0.0.0 0.0.0.0 1.1.1.2 RouterBあてのデフォルト・ルートを設定
!
access-list 150 permit ip 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255 ←IPsec対象トラフィックを定義
!
!
line con 0
transport input none
stopbits 1
line aux 0
line vty 0 4
login
!
end
RouterBのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterB
!
crypto isakmp policy 1             ←ISAKMPポリシーの設定
authentication pre-share
crypto isakmp key ciscovpn address 1.1.1.1

!
crypto ipsec transform-set TS-Basic esp-des esp-sha-hmac
!                   ↑IPsecポリシー(トランスフォームセット)を「TS-Basic」に定義
crypto map MAP-Basic 1 ipsec-isakmp ←crypt map「MAP-Basic」を定義
set peer 1.1.1.1
set transform-set
TS-Basic
match address
150

!
!
interface Loopback0
ip address 10.1.2.1 255.255.255.0
!
interface Serial0
ip address 1.1.1.2 255.255.255.0
crypto map MAP-Basic  ←インタフェースにcrypt mapを適用
!
ip route 0.0.0.0 0.0.0.0 1.1.1.1 ←RouterAあてのデフォルト・ルートを設定
!
access-list 150 permit ip 10.1.2.0 0.0.0.255 10.1.1.0 0.0.0.255 ←IPsec対象トラフィックを定義
!
line con 0
transport input none
stopbits 1
line aux 0
line vty 0 4
login
!
end
確認
IPsecは,IPパケットを暗号化して通信する技術です。
インターネットVPNを構築する際によく使われています。
ここでは,2台のルーター同士のトラフィックを暗号化してみます。

●IPsecの動作
IPsecを使ってIPパケットを安全にやりとりするには,以下の3ステップが必要です。

1.ISAKMPフェーズ1…ISAKMP SAを確立する
2.ISAKMPフェーズ2…フェーズ1で作ったISAKMP SA内で,IPsec SAを確立する
3.IPsecの暗号通信…フェーズ2で作ったIPsec SA内で,IPパケットをやりとりする

出てきた用語を確認しておきましょう。
【IPsecの用語】
ISAKMP…鍵交換(両ルーターで同じ鍵を作るため)のプロトコル
ISAKMP SA…鍵交換をするためのトンネル
IPsec SA…IPsecによる暗号通信をするためのトンネル

つまり,最初に安全に鍵交換をするためのトンネルを作り(ISAKMPフェーズ1),そのトンネルを使ってIPsecで通信するためのトンネルを作り(ISAKMPフェーズ2),そのトンネルを使ってIPパケットを安全にやりとりする(IPsecの暗号通信)という流れになります。
「SA」というのは「トンネル」のことです。
トンネルの実体は,暗号鍵,ハッシュ鍵,暗号アルゴリズム,ハッシュアルゴリズムといった,暗号通信に必要な要素です。
「トンネルを作る」や「SAを確立する」というのは,これらの鍵やアルゴリズムを決める作業というわけです。

●設定の確認
上のコンフィグ設定は,2台のルーターでIPsecによる暗号通信をするための設定です。
RouterAの設定を確認してみます。

ISAKMP SAの設定を見るには,show crypt isakmp policyと入力します。

RouterA#show crypto isakmp policy
Protection suite of priority 1
    encryption algorithm:  DES - Data Encryption Standard (56 bit keys).
    hash algorithm:     Secure Hash Standard
    authentication method: Pre-Shared Key
    Diffie-Hellman group:  #1 (768 bit)
    lifetime:        86400 seconds, no volume limit
Default protection suite
    encryption algorithm:  DES - Data Encryption Standard (56 bit keys).
    hash algorithm:     Secure Hash Standard
    authentication method: Rivest-Shamir-Adleman Signature
    Diffie-Hellman group:  #1 (768 bit)
    lifetime:        86400 seconds, no volume limit


上側が現在の設定で,下側がデフォルトの設定です。
デフォルト設定と変えたところは,お互いのルーターの認証方法にプレシェアードキー方式を使っているところです(上の青字の部分)。
プレシェアードキーは,お互いのルーターに設定するパスワードです。
今回はプレシェアード・キーとして「ciscovpn」という文字列を設定しています。
そのほかの項目はデフォルトと同じで,暗号アルゴリズムがDES,ハッシュアルゴリズムがSHA-1,Diffie-Hellmanグループが1番,ライフタイム(ISAKMP SAの寿命)が36400秒となっています。
Diffie-Hellmanグループは,ISAKMPフェーズ1で鍵を作るためのパラメータです。
これらの項目はすべて,両ルーターで一致させる必要があります。

次に,IPsec SAの設定の様子を見てみましょう。
IPsec SAに関する設定は,「トランスフォームセット」と呼ばれます。

RouterA#show crypto ipsec transform-set
Transform set TS-Basic: { esp-des esp-sha-hmac }
  will negotiate = { Tunnel, },


「TS-Basic」という名前のトランスフォームセットです。
「esp-des esp-sha-hmac」という表示で,暗号アルゴリズムにDESを使い,ハッシュアルゴリズムににSHA-1を使うことがわかります。
ESPというのは,暗号通信をするときに使うプロトコルの種類です(このほかにAHがあります)。
HMACというのは,単なるハッシュではなく,鍵を組み合わせてハッシュする「鍵付ハッシュ関数」を使うという意味です。
これも,両ルーターで同じ設定にする必要があります。

●IPsec通信前の状態
IPsec通信前のRouterAのISAKMP SAとIPsec SAの様子を見てみましょう。
ISAKMP SAは確立していないことがわかります。

RouterA#show crypto isakmp sa
  dst      src     state    conn-id  slot


IPsec SAの様子も見てみましょう。
IPsec SAが確立していれば,inbound esp sasとinbound esp sasの部分にトンネルに関する情報が表示されます(下の青字)。
その部分に情報がないので,まだIPsec SAも確立していないことがわかります。

RouterA#show crypto ipsec sa

interface: Serial0
  Crypto map tag: MAP-Basic, local addr. 1.1.1.1

  local ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
  remote ident (addr/mask/prot/port): (10.1.2.0/255.255.255.0/0/0)
  current_peer: 1.1.1.2
   PERMIT, flags={origin_is_acl,}
  #pkts encaps: 0, #pkts encrypt: 0, #pkts digest 0
  #pkts decaps: 0, #pkts decrypt: 0, #pkts verify 0
  #pkts compressed: 0, #pkts decompressed: 0
  #pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0
  #send errors 0, #recv errors 0

   local crypto endpt.: 1.1.1.1, remote crypto endpt.: 1.1.1.2
   path mtu 1500, media mtu 1500
   current outbound spi: 0

   inbound esp sas:

   inbound ah sas:

   inbound pcp sas:

   outbound esp sas:

   outbound ah sas:

   outbound pcp sas:


●IPsecの通信をスタート
それでは,設定に基づいてIPsecの暗号通信をさせてみましょう。
RouterAの設定では,10.1.1.0/24から10.1.2.0/24のトラフィックをIPsecのトラフィックに定義しています。
拡張pingを使って,送信元アドレスを10.1.1.1に,あて先アドレスを10.1.2.1にしたpingパケットを送ります。

RouterA#ping
Protocol [ip]:
Target IP address: 10.1.2.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 10.1.1.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.2.1, timeout is 2 seconds:
....!
Success rate is 20 percent (1/5), round-trip min/avg/max = 84/84/84 ms


下から2行目の「....!」という表示に注目して下さい。
5回pingを打って,5回目に応答が返って来たことを示しています。
4回目まで応答が返って来ないのは,暗号通信が実施されるまでに少し時間がかかるためです。

●IPsec通信後の状態
IPsecによる通信後のISAKMP SAとIPsec SAの状態を確認しましょう。
ISAKMP SAを見てみると,通信前にはなかったエントリが表示され,ISAKMP SAが確立したことがわかります。

RouterA#show crypto isakmp sa
  dst      src     state    conn-id  slot
1.1.1.2    1.1.1.1    QM_IDLE      1    0


IPsec SAも見てみましょう。
inbound esp sasとinbound esp sasの部分に,トンネルに関する情報が表示されました(下の青字)。
トランスフォームセットの設定が反映されていることがわかります。

RouterA#show crypto ipsec sa

interface: Serial0
  Crypto map tag: MAP-Basic, local addr. 1.1.1.1

  local ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
  remote ident (addr/mask/prot/port): (10.1.2.0/255.255.255.0/0/0)
  current_peer: 1.1.1.2
   PERMIT, flags={origin_is_acl,}
  #pkts encaps: 1, #pkts encrypt: 1, #pkts digest 1
  #pkts decaps: 1, #pkts decrypt: 1, #pkts verify 1
  #pkts compressed: 0, #pkts decompressed: 0
  #pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0
  #send errors 4, #recv errors 0

   local crypto endpt.: 1.1.1.1, remote crypto endpt.: 1.1.1.2
   path mtu 1500, media mtu 1500
   current outbound spi: B2B0B540

   inbound esp sas:
   spi: 0x5B0559BF(1527077311)
    transform: esp-des esp-sha-hmac ,
    in use settings ={Tunnel, }
    slot: 0, conn id: 2000, flow_id: 1, crypto map: MAP-Basic
    sa timing: remaining key lifetime (k/sec): (4607999/3486)
    IV size: 8 bytes
    replay detection support: Y


   inbound ah sas:

   inbound pcp sas:

   outbound esp sas:
   spi: 0xB2B0B540(2997925184)
    transform: esp-des esp-sha-hmac ,
    in use settings ={Tunnel, }
    slot: 0, conn id: 2001, flow_id: 2, crypto map: MAP-Basic
    sa timing: remaining key lifetime (k/sec): (4607999/3486)
    IV size: 8 bytes
    replay detection support: Y


   outbound ah sas:

   outbound pcp sas:


show crypt engine connection activeコマンドを使うと,ISAKMP SAとIPsec SAの概要が表示されます。
一番上(ID 1)がISAKMP SAの情報で,真ん中(ID 2000)がIPパケット受信用のIPsec SAで,一番下(ID 2001)がIPsec送信用のIPsec SAです。
IPsecではこのように,送信用と受信用の二つのトンネルを使って通信をします。

RouterA#show crypto engine connections active

 ID Interface    IP-Address   State Algorithm          Encrypt Decrypt
  1 <none>     <none>     set  HMAC_SHA+DES_56_CB    0    0
2000 Serial0     1.1.1.1      set  HMAC_SHA+DES_56_CB    0    1
2001 Serial0     1.1.1.1      set  HMAC_SHA+DES_56_CB    1    0


RouterBの様子も見ておきましょう。
同様に,一つのISAKMP SAと二つのIPsec SAが出来ているのがわかります。

RouterB#show crypto engine connections active

 ID Interface    IP-Address   State Algorithm         Encrypt Decrypt
   1 Serial0     1.1.1.2     set  HMAC_SHA+DES_56_CB    0    0
2000 Serial0     1.1.1.2     set  HMAC_SHA+DES_56_CB    0    1
2001 Serial0     1.1.1.2     set  HMAC_SHA+DES_56_CB    1    0



● IP Security(IPSec)暗号化の概要
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/105/IPSECpart1-j.shtml
●IPSec VPN を用いた LAN-to-LAN 接続設定例
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/original/router_guide/ipsec_lantolan.shtml

IPsecラボ
IPsecの基本
NATを使ったIPsec
GREトンネルを使ってOSPFをIPsec内に流す
トンネル・エンドポイント・ディスカバリ(TED)