IPsec/IKEv2(事前共有鍵)

IKEv2とは

IKEv2(Internet Key Exchange Version 2)は、IPsec(Internet Protocol Security)で使用される鍵交換および認証のためのプロトコルです。
IPsecトンネルの暗号化に必要な鍵を安全に生成・交換し、通信相手を認証します。
IKEv2はIKEv1の改良版であり、再接続の高速化、モビリティ(MOBIKE)対応、メッセージ交換の効率化などが行われています。
現在では、VPN構築時の標準的な鍵交換プロトコルとして広く採用されています。

IKEv2の設定

下記の構成図でIPSecのIKEv2を構成します。

IPSecに関する設定以外は、以下のページで紹介しているので興味がある方はご確認ください。

IKEv2ポリシーの設定

IKEv2で使用する暗号化およびハッシュアルゴリズムを設定して、IKEv2のポリシーに関連付けます。

💡 IKEv2では、暗号アルゴリズム・ハッシュ・Diffie-Hellmanグループをproposalで定義し、
それをpolicyで紐づける構造になっています。IKEv1のcrypto isakmp policyとは異なります。

コマンド解説目的
crypto ikev2 proposal <名前>IKEv2で使用する暗号・認証アルゴリズムの組み合わせを定義IKEv2フェーズ1で暗号化方式・ハッシュ方式・DHグループを指定
encryption aes-cbc-256AES 256ビットによるCBCモード暗号化を使用強力な暗号化でセキュアなトンネルを確立
integrity sha256ハッシュ関数にSHA-256を使用メッセージ完全性(改ざん防止)を保証
group 14Diffie-Hellmanグループ14(2048bit)を使用鍵交換の強度を指定
crypto ikev2 policy <名前>どのProposalを採用するかを定義複数Proposalの中から一致するものを選択
proposal <名前>IKEv2 PolicyにProposalを関連付け暗号スイートを明示的に指定

事前共有鍵(Pre-Shared Key:PSK)の設定

IKEv2で使用する事前共有鍵(Pre-Shared Key:PSK)を設定します。

💡 DMVPN環境では、Hubが複数のSpokeから接続を受け入れるため、peer ANY を使用して全アドレスを許可します。
1対1のVPN構成では、特定の相手アドレスを指定しても構いません。

コマンド解説目的
crypto ikev2 keyring <名前>IKEv2用の鍵リングを作成事前共有鍵を格納するための論理的な入れ物
peer <名前>鍵を定義する相手ピア名を指定Hubの場合はANYで複数Spokeを許可
address 0.0.0.0 0.0.0.0接続元IPをすべて許可複数のSpokeを受け入れるHub向け設定
pre-shared-key <文字列>事前共有鍵(Pre-Shared Key: PSK)を設定IKEv2の認証に使用する共通キー

IKEv2プロファイルの設定

IKEv2プロファイルを設定し、事前共有鍵(Pre-Shared Key:PSK)を使用して認証します。

IKEv1では「crypto isakmp key」コマンドで事前共有鍵を設定していましたが、IKEv2ではキーリングを作成してそれを基にIKEv2のプロファイルを作成します。

コマンド解説目的
crypto ikev2 profile <名前>IKEv2プロファイルを作成IKEv2セッションに使用する認証方式や識別子を定義
match identity remote anyすべての相手を受け入れるDMVPNなど複数Spoke構成に必須
identity local address <IP>ローカル識別子をインターフェースIPで指定相手が自分を認識するためのID
authentication local pre-share自身の認証方式に事前共有鍵を使用対称鍵方式による簡易認証
authentication remote pre-share相手の認証方式を指定双方向で一致する必要あり
keyring local <名前>関連付けるKeyringを指定プリシェアードキー情報を参照

IPsecトランスフォームセットの設定

IPsecトンネルを暗号化するためのトランスフォームセットを設定します。

内容はIKEv1と同様です。

コマンド解説目的
crypto ipsec transform-set <名前>IPsecで使用する暗号化・ハッシュ方式を指定IKEv2フェーズ2(データトンネル暗号化)の設定
esp-aes 256ESPでAES256による暗号化を使用データプレーンの暗号化を実施
esp-sha-hmacHMAC-SHAを使用した認証を設定改ざん検出・完全性保証
mode transportトランスポートモードを指定GREトンネルと併用し、ヘッダを暗号化しない

IPsecプロファイルの設定

IKEv2プロファイルとトランスフォームセットを関連付けたIPsecプロファイルを作成し、これをトンネルインターフェースに適用します。

コマンド解説目的
crypto ipsec profile <名前>IPsecプロファイルを作成Transform-SetとIKEv2 Profileを統合する設定単位
set ikev2-profile <名前>使用するIKEv2プロファイルを指定事前共有鍵や認証設定を関連付け
set transform-set <名前>使用するTransform-Setを指定データ暗号化方式を関連付け

GREトンネルへのIPsecプロファイルの適用

最後に、トンネルインターフェースにIPsecプロファイルを適用して、トンネルを暗号化します。

コマンド解説目的
interface Tunnel0トンネルインターフェースを開くGREトンネル設定対象
tunnel protection ipsec profile <名前>IPsecプロファイルを適用GREパケットをIPsecで暗号化し、安全な通信を実現

設定後の動作確認

IKEv2はisakmpによる暗号化が行われないため、確認をしても表示されません。

代わりに、IKEv2のステータスを確認することが出来ます。

IPSec SAのステータスについてはIKEv1と同様に確認することが出来ます。

コマンド解説目的
show crypto ikev2 saIKEv2セッションの状態を確認SAが確立しているか確認(Ready状態)
show crypto ipsec saIPsecトンネルの暗号化状況を確認暗号化・復号パケット数を確認
show crypto ikev2 statsIKEv2の統計情報を確認再送・失敗回数などを解析