コンテンツにスキップ

Cisco IOSのIPsec設定要素

Cisco IOS / IOS XE の IPsec 設定では、IKE 用の部品、IPsec 用の部品、インターフェースへ適用する部品を分けて定義する。

IPsec の概念では、IKE と SA、ESP / AH、トンネルモードを理解する必要がある。Cisco IOS / IOS XE の設定では、それらが proposal、policy、keyring、profile、transform-set などのコマンド要素として現れる。


IKEv2 では、通信開始前に相手認証、暗号方式の合意、鍵交換、SA の作成を行う。Cisco IOS / IOS XE では、主に次の要素に分けて設定する。

要素 役割
IKEv2 proposal IKEv2 SA を守る暗号方式、完全性確認方式、PRF、DH グループの候補
IKEv2 policy どの proposal を IKEv2 ネゴシエーションで使うかをまとめる設定
IKEv2 keyring 対向 peer と事前共有鍵を対応づける設定
IKEv2 profile 対向の識別条件、認証方式、keyring をまとめる設定

IKEv2 proposal は、IPsec の実データ用の暗号方式ではない。IKEv2 の制御通信を守るための方式である。

PRF(Pseudo-Random Function)は、IKEv2 の鍵素材や認証処理に使う値を生成するための変換である。暗号化方式、完全性確認方式、DH グループとは別の proposal 要素として区別する。

AES-CBC と SHA-256 を組み合わせる場合、Cisco IOS / IOS XE では PRF を省略すると、指定した integrity algorithm と同じ SHA-256 が PRF に使われる。明示する場合は proposal 内で prf sha256 を指定する。

AES-GCM は、暗号化と完全性確認を一つの方式で行う AEAD である。AES-GCM を使う proposal では独立した integrity を指定せず、PRF は別に指定する。IPsec 側で ESP AES-GCM を使う場合も、別の ESP HMAC を組み合わせない。

方針 IKEv2 proposal IPsecデータ保護
IOSv・互換性重視の例 AES-CBC-256、SHA-256、group 14。PRF を明示するなら SHA-256 ESP AES-CBC-256 と HMAC-SHA-256
対応機器での通常推奨例 AES-GCM、PRF SHA-256、group 19 / 20 などの ECDH ESP AES-GCM

どの方式を使う場合も、対向機器との共通アルゴリズム、組織の暗号ポリシー、IOS / IOS XE の対応状況を確認する。利用可能な候補は ?、設定された proposal は show crypto ikev2 proposal で確認する。


flowchart TD
    subgraph ike["IKEv2 control plane"]
        proposal["IKEv2 proposal: encryption, integrity, PRF, DH"]
        policy["IKEv2 policy: selects proposal"]
        keyring["IKEv2 keyring: peer and pre-shared key"]
        ikeprofile["IKEv2 profile: identity and authentication"]
        ikesa["IKEv2 SA"]
    end

    subgraph ipsec["IPsec data plane"]
        transform["transform set: ESP or AH algorithms"]
        ipsecprofile["IPsec profile: binds transform set and IKEv2 profile"]
        ipsecsa["IPsec SA"]
    end

    proposal --> policy --> ikesa
    keyring --> ikeprofile --> ikesa
    ikeprofile --> ipsecprofile
    transform --> ipsecprofile --> ipsecsa

IKEv2 profile は「この相手には、どの認証方式と鍵情報を使うか」を決める。IPsec profile から参照されることで、実際の IPsec トンネル設定と結びつく。


IKE が鍵や SA を準備したあと、実際のデータパケットは ESP で保護される。Cisco IOS / IOS XE では、IPsec 側の設定を次の要素で表す。

要素 役割
transform set ESP / AH で実データを保護する方式を定義する
IPsec profile transform set、PFS、IKEv2 profile などをまとめる
tunnel protection Tunnel インターフェースへ IPsec profile を適用する

transform set は、実際に流れるデータパケットをどう保護するかを決める。IKEv2 proposal が IKEv2 の制御通信用であるのに対し、transform set は IPsec のデータ通信用である。

esp-aes 256 は、ESP の暗号化に 256 bit 鍵の AES-CBC を使う指定である。esp-sha256-hmac は暗号化方式ではなく、HMAC-SHA-256 で ESP パケットの改ざんを検出し、データ送信元を認証する指定である。両方を組み合わせると、AES-CBC が機密性、HMAC-SHA-256 が完全性とデータ送信元認証を担当する。


Cisco の手順では、IPsec をどのインターフェースへ適用するかも重要になる。

構成 役割
VTI tunnel mode ipsec ipv4 の Tunnel インターフェース。IPsec 自体を仮想インターフェースとして扱う
GRE over IPsec GRE Tunnel インターフェースを作り、その GRE パケットを IPsec で保護する
crypto map インターフェースに crypto map を適用し、ACL で暗号化対象通信を指定する方式

crypto map で使う ACL は、パケットフィルタとしての ACL と同じ構文を使うが、役割は interesting traffic の指定である。ACL の基本は 標準ACLと拡張ACL を参照する。

このノートでは、基本は VTI を使う。GRE over IPsec は、GRE で仮想的な経路を作り、その GRE パケットを IPsec で守る構成として扱う。

flowchart TB
    subgraph vti["VTI: IPsec acts as the tunnel interface"]
        vroute["Route to remote LAN"] --> vtunnel["Tunnel0 with mode ipsec ipv4"]
        vtunnel --> vprofile["Apply IPsec profile"]
        vprofile --> vesp["ESP protects the inner IP packet"]
    end

    subgraph gre["GRE over IPsec: GRE creates the tunnel"]
        groute["Route to remote LAN"] --> gtunnel["Tunnel0 with mode gre ip"]
        gtunnel --> grepacket["GRE packet"]
        grepacket --> gprofile["Apply IPsec profile"]
        gprofile --> gesp["ESP protects the GRE packet"]
    end

    vesp --> wan["WAN or Internet"]
    gesp --> wan

VTI では、IPsec 用の Tunnel インターフェースへ経路を向ける。GRE over IPsec では、GRE がトンネルを作り、IPsec は GRE パケットの保護を担当する。


IKEv1 では、IKEv2 proposal / policy / keyring / profile とは名前や分け方が違う。

IKEv2の要素 IKEv1で近い要素
IKEv2 proposal ISAKMP policy
IKEv2 policy ISAKMP policy の優先順位
IKEv2 keyring crypto isakmp key
IKEv2 profile ISAKMP profile、または peer address による事前共有鍵設定
IPsec transform set IPsec transform set
IPsec profile IPsec profile

IKEv1 では crypto isakmp policy が Phase 1 の暗号方式、ハッシュ、認証方式、DH グループをまとめて定義する。IPsec transform set は Phase 2、つまり実データを守る IPsec SA 側の方式を定義する。


混乱 考え方
proposal と transform set の違いが分からない proposal は IKE 制御通信側、transform set は IPsec データ通信側
profile が多すぎる IKEv2 profile は相手認証まわり、IPsec profile は Tunnel へ適用する保護設定
VTI と GRE over IPsec が混ざる VTI は IPsec 自体を Tunnel にする。GRE over IPsec は GRE Tunnel を IPsec で保護する
SA を通信路だと思ってしまう SA は通信をどう保護するかの条件であり、通信路そのものではない