$Date: 2025/07/18 15:32:42 $
ヤマハルーターに搭載されているIKEv2の機能について説明します。
本機能は以下のRFCを基にして実装されています。
| ・RFC4306 : | Internet Key Exchange (IKEv2) Protocol |
| ・RFC4718 : | IKEv2 Clarifications and Implementation Guidelines |
| ・RFC5996 : | Internet Key Exchange Protocol Version 2 (IKEv2) |
| ・RFC3748 : | Extensible Authentication Protocol (EAP) |
| ・RFC3280 : | Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile |
なお、IKEv2では鍵交換時の認証方式として、新たにデジタル署名方式とEAP-MD5認証方式が追加されます。これらの詳細については以下のドキュメントをご覧ください。
| 機種 | 拠点間接続対応ファームウェア | リモートアクセスVPN対応ファームウェア |
|---|---|---|
| vRX Amazon EC2版 | すべてのリビジョン | - |
| vRX VMware ESXi版 | ||
| vRX さくらのクラウド版 | すべてのリビジョン | |
| RTX840 | すべてのリビジョン | すべてのリビジョン |
| RTX3510 | ||
| RTX1300 | Rev.23.00.05以降 | |
| RTX1220 | Rev.15.04.05以降 | |
| RTX830 | Rev.15.02.27以降 | |
| NVR510 | - | Rev.15.01.25 以降 |
| NVR700W | すべてのリビジョン | Rev.15.00.24 以降 |
| RTX1210 | Rev.14.01.42 以降 | |
| RTX5000 | Rev.14.00.34 以降 | |
| RTX3500 | Rev.14.00.34 以降 | |
| FWX120 | - | |
| RTX810 | - | |
| RTX1200 | Rev.10.01.22以降 | - |
| RTX3000 | Rev.9.00.50以降 | - |
IKEv2の設定には従来のIKEv1と同様にipsec ike 〜コマンド群を使用します。IKEv1とIKEv2に直接的な互換性はありませんが、設定すべき項目そのものはほぼ共通している為です。しかしながら細かな仕様の違いなどから、IKEv2として動作する場合には、一部の既存コマンドで設定内容が反映されない、もしくは設定内容の解釈の仕方が若干異なる場合があります。これらの詳細についてはコマンド仕様を参照してください。
IKEv2ではSA (Security Association) を構築するために必要な各折衝パラメーターの複数同時提案が容易になっています。
RTのIKEv2実装ではこれを利用し、イニシエーターである場合はサポート範囲内でできるだけ多くの折衝パラメーターを同時に提案します。
ただし、ipsec ike proposal-limitationコマンドに対応する機種では、ipsec ike proposal-limitationコマンドをonに設定することで特定の折衝パラメーターのみを提案することができます。
また、レスポンダーの場合は提案内容からできるだけ安全な組み合わせを選択する方式をとります。
なお、折衝されるパラメーターは以下となります。
なお、イニシエーターとして動作する場合にIKE_SA_INIT交換で送信するKEペイロードは、ipsec ike groupコマンドで設定したグループを使用します。
これまでIPsec(IKEv1)を運用されてきた場合は、既存の設定を流用しながらIKEv2へ移行することができます。主な違いは、ipsec ike remote nameコマンドとipsec ike local nameコマンドの設定が共に必須になっている点と、ipsec ike versionコマンドで明示的にIKEv2の使用を宣言する必要があるという点です。
以下に示すコマンドは、IKEv2で動作する場合に設定内容が考慮されません。
また以下のコマンドについても、ipsec ike proposal-limitationコマンドをonに設定してイニシエーターとして動作する場合を除いて、設定内容が考慮されません。
IKEv2に関する主な機能のうち、対応するものを以下に挙げます。
※以下は最新リビジョンに基いています。古いリビジョンでは一部対応していない場合があるのでご注意ください。
以下の機能には対応していません。
Notifyメッセージタイプの対応状況について以下にまとめます。
※以下は最新リビジョンに基いています。古いリビジョンでは一部対応していない場合があるのでご注意ください。
エラータイプ
| 種類 | 対応状況 |
|---|---|
| UNSUPPORTED_CRITICAL_PAYLOAD | 送信に対応。受信した場合はそのメッセージを破棄する |
| INVALID_IKE_SPI |
送信に対応。受信した場合はそのメッセージを破棄する ※RTX1200 Rev.10.01.59以降、RTX810 Rev.11.01.21以降、FWX120 Rev.11.03.13以降、RTX3500/RTX5000 Rev.14.00.18以降、 RTX1210 Rev.14.01.09以降、および、Rev.15系以降は送受信に対応。受信した場合は対応するIKE SAを削除する |
| INVALID_MAJOR_VERSION | 送信しない。受信した場合はそのメッセージを破棄する |
| INVALID_SYNTAX | 送信に対応。受信した場合はそのメッセージを破棄する |
| INVALID_MESSAGE_ID | 送信しない。受信した場合はそのメッセージを破棄する |
| INVALID_SPI | 送信しない。受信した場合はそのメッセージを破棄する |
| NO_PROPOSAL_CHOSEN | 送信に対応。受信した場合はそのメッセージを破棄する |
| INVALID_KE_PAYLOAD | 送信に対応。受信した場合はリトライ時のKEペイロードを指定のグループに切り替える |
| AUTHENTICATION_FAILED | 送信に対応。受信した場合はそのメッセージを破棄する |
| SINGLE_PAIR_REQUIRED | 送信しない。受信した場合はそのメッセージを破棄する |
| NO_ADDITIONAL_SAS | 送信しない。受信した場合はそのメッセージを破棄する |
| INTERNAL_ADDRESS_FAILURE | 送信しない。受信した場合はそのメッセージを破棄する |
| FAILED_CP_REQUIRED | 送信しない。受信した場合はそのメッセージを破棄する |
| TS_UNACCEPTABLE | 送信しない。受信した場合はそのメッセージを破棄する |
| INVALID_SELECTORS | 送信しない。受信した場合はそのメッセージを破棄する |
| TEMPORARY_FAILURE | 送信しない。受信した場合はそのメッセージを破棄する |
| CHILD_SA_NOT_FOUND | 送信に対応。受信した場合はそのメッセージを破棄する |
ステータスタイプ
| 種類 | 対応状況 |
|---|---|
| INITIAL_CONTACT | 送信しない。受信した場合は無視する |
| SET_WINDOW_SIZE | 送信しない。受信した場合は無視する |
| ADDITIONAL_TS_POSSIBLE | 送信しない。受信した場合は無視する |
| IPCOMP_SUPPORTED | 送信しない。受信した場合は無視する |
| NAT_DETECTION_SOURCE_IP | 送受信共に対応 |
| NAT_DETECTION_DESTINATION_IP | 送受信共に対応 |
| COOKIE | レスポンダとして送信はしない。イニシエータとして受信した場合はリトライ時のリクエストにCOOKIEを追加して送信する |
| USE_TRANSPORT_MODE | 送信しない。受信した場合は無視する |
| HTTP_CERT_LOOKUP_SUPPORTED | 送信しない。受信した場合は無視する |
| REKEY_SA | 送受信共に対応 |
| ESP_TFC_PADDING_NOT_SUPPORTED | 送信に対応。受信の有無に関わらず、TFCパディングには対応しない |
| NON_FIRST_FRAGMENTS_ALSO | 送信に対応。受信の有無に関わらず、第2フラグメント以降も送信する |
RTX1200 Rev.10.01.59以降、RTX810 Rev.11.01.21以降、FWX120 Rev.11.03.13以降、RTX3500/RTX5000 Rev.14.00.18以降、RTX1210 Rev.14.01.09以降、および、Rev.15系以降のファームウェアでは、IKEv2でipsec ike keepaliveコマンドをonに設定しているとき、対象のゲートウェイを使用するトンネルに対してshow status tunnelコマンドを実行することで、自機から送信するIKEキープアライブの状態を取得することができます。
取得できる情報は以下の通りです。
# show status tunnel 1 TUNNEL[1]: 説明: インタフェースの種類: IPsec トンネルインタフェースは接続されています 開始: 2014/04/16 15:28:05 通信時間: 11分4秒 受信: (IPv4) 112 パケット [10304 オクテット] (IPv6) 0 パケット [0 オクテット] 送信: (IPv4) 115 パケット [10580 オクテット] (IPv6) 0 パケット [0 オクテット] IKEキープアライブ: [タイプ]: icmp-echo [アドレス]: 192.168.200.1 [状態]: OK [次の送信]: 13 秒後
IPアドレス不定 IPアドレス固定
PC---+ 10.0.0.1 +-----PC
| +------------+ +------------+ |
PC---+------- | RTX1200(1) | ----(VPN)--- | RTX1200(2) |-----------+-----PC
| +------------+ +------------+ |
. 192.168.100.1 192.168.0.1 .
. .
192.168.100.0/24 192.168.0.0/24
暗号アルゴリズム:AES256-CBC
認証アルゴリズム:HMAC-SHA1
IKE認証方式:事前共有鍵
|
・RTX1200(1) ... Initiator ip route default gateway tunnel 1 ip lan1 address 192.168.100.1/24 ip lan2 address dhcp tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp ipsec ike version 1 2 ipsec ike pre-shared-key 1 text himitsu ipsec ike local name 1 kyoten-xxx key-id ipsec ike remote name 1 10.0.0.1 ipv4-addr tunnel enable 1 ipsec auto refresh on ・RTX1200(2) ... Responder ip route 192.168.100.0/24 gateway tunnel 1 ip lan1 address 192.168.0.1/24 ip lan2 address 10.0.0.1/24 tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp ipsec ike version 1 2 ipsec ike pre-shared-key 1 text himitsu ipsec ike local name 1 10.0.0.1 ipv4-addr ipsec ike remote name 1 kyoten-xxx key-id tunnel enable 1 ipsec auto refresh on
# show ipsec sa Total: isakmp:1 send:1 recv:1 sa sgw isakmp connection dir life[s] remote-id ----------------------------------------------------------------------------- 1 1 - ike - 28780 10.0.0.1 2 1 1 tun[001]esp send 28781 10.0.0.1 3 1 1 tun[001]esp recv 28781 10.0.0.1 # # show ipsec sa gateway 1 detail SA[1] 状態: 確立済 寿命: 28762秒 プロトコル: IKEv2 ローカルホスト: 10.0.0.11:500 ※LAN2(WAN側)に割り当てられたIPアドレス リモートホスト: 10.0.0.1:500 ※アドレス解決後の相手側IPアドレス 暗号アルゴリズム: AES_CBC(256) PRF : HMAC_SHA1 認証アルゴリズム: HMAC_SHA1_96 DHグループ: MODP_1024 SPI: 6e 7f 6d a2 8a 37 d3 a8 a0 15 63 61 de 1e 8b 2b 鍵 : 63 29 da f4 7d 5b 84 ef d0 f1 39 0e 0e 14 aa 32 ※IKE SAのKEYMAT ---------------------------------------------------- SA[2] 状態: 確立済 寿命: 28763秒 送受信方向: 送信 プロトコル: ESP (モード: tunnel) ローカルID: 85 15 ff 8e 13 dc 2c 62 (KEY_ID) ※自分側のIDペイロードで使用したID リモートID: 10.0.0.1 (IPv4_ADDR) ※相手側のIDペイロードで使用したID 暗号アルゴリズム: AES_CBC(256) 認証アルゴリズム: HMAC_SHA1_96 ESN: DISABLE 始点トラフィック セレクタ (タイプ / プロトコル / ポート / アドレス) IPv4-range / any / 0-65535 / 0.0.0.0-255.255.255.255 IPv6-range / any / 0-65535 / ::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 終点トラフィック セレクタ (タイプ / プロトコル / ポート / アドレス) IPv4-range / any / 0-65535 / 0.0.0.0-255.255.255.255 IPv6-range / any / 0-65535 / ::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff SPI: ad 53 8f 7e 鍵 : d2 89 7c 70 49 e2 04 20 8b 0b 14 ff 8b 9f 5c 67 ---------------------------------------------------- SA[3] 状態: 確立済 寿命: 28763秒 送受信方向: 受信 プロトコル: ESP (モード: tunnel) ローカルID: 85 15 ff 8e 13 dc 2c 62 (KEY_ID) リモートID: 10.0.0.1 (IPv4_ADDR) 暗号アルゴリズム: AES_CBC(256) 認証アルゴリズム: HMAC_SHA1_96 ESN: DISABLE SPI: 85 bc 7c 25 鍵 : c6 cc ea 63 1a 06 80 b7 42 e1 2e e8 84 84 b8 e3 ---------------------------------------------------- #
本機能において出力されるSYSLOGメッセージを以下に示します。なお、実際に出力される各メッセージの先頭には"[IKE2]"というプレフィックスが付与されます。また、ログの内容に応じて更に以下のサブプレフィックスのいずれかが付与されることがあります。
| サブプレフィックス | 説明 |
|---|---|
| SA:xx/IKE | IKE SAに関するログ |
| SA:xx/CHLD_SEND | CHILD SA(送信側)に関するログ |
| SA:xx/CHLD_RECV | CHILD SA(受信側)に関するログ |
| GW:xx/SA:xx/INIT | IKE_SA_INIT交換に関するログ。 同時に、このメッセージ交換に関連付けられているゲートウェイ設定、SA番号も示される。 なお、関連付けるべきゲートウェイIDがまだ未定の場合は「GW:*/SA:xx/INIT」のように表示される |
| GW:xx/SA:xx/AUTH | IKE_AUTH交換に関するログ |
| GW:xx/SA:xx/CHLD | CREATE_CHILD_SA交換に関するログ |
| GW:xx/SA:xx/INFO | INFORMATIONAL交換に関するログ |
| GW:xx | ゲートウェイ設定に関するログ |
| TN:xx/PY:xx | ポリシー設定(トンネルモード)に関するログ |
主に出力されるSYSLOGメッセージについては以下の通りです。
| レベル | SYSLOG | 説明 |
|---|---|---|
| [INFO] | temporarily assigned | SAが新しく生成(仮登録)された |
| established | SAが確立された | |
| dead peer detection | IKEキープアライブにより、相手側ゲートウェイのダウンを検出した | |
| deleted | SAが削除された | |
| [DEBUG] | not configured COMMAND | COMMANDの設定が不足している、もしくは不適切なため、鍵交換の準備に失敗した |
| invalid xxxxx | ipsec ike local/remote nameコマンドで設定した文字列がTYPEパラメータに対して不適切である | |
| bound on SA:xx/IKE bound on SA:xx/IKE (changed) |
CHILD SAがIKE SA(SA番号xx)に関連付けられた | |
| assigned gateway GW:xx | IKE SAとゲートウェイ設定が関連付けられた | |
| assigned policy TN:xx/PY:xx | CHILD SAとポリシー設定が関連付けられた | |
| exchange started | メッセージ交換を開始した | |
| exchange terminated | メッセージ交換を終了した | |
| inhibited rekey (newer SA exists) | より新しいSAがすでに存在するので、このSAによるリキーを抑制した | |
| [no] NAT box detected at local side [no] NAT box detected at remote side |
ローカル側ゲートウェイでNAT処理を検出した(しなかった) リモート側ゲートウェイでNAT処理を検出した(しなかった) |
|
| iWindow retransmit request[msgID:xx cnt:xx] rWindow retransmit request[msgID:xx cnt:xx] |
リクエストメッセージを再送した | |
| iWindow retransmission timed out[msgID:xx] rWindow retransmission timed out[msgID:xx] |
リクエストメッセージの再送を終了した | |
| iWindow retransmit response[msgID:xx] rWindow retransmit response[msgID:xx] |
同じメッセージIDのリクエストを受信したのでレスポンスを再送した | |
| iWindow dropped message[msgID:xx] rWindow dropped message[msgID:xx] |
レスポンスを受信/受理していない古いメッセージを破棄した | |
| cannot find or create IKE SA | 受信したIKEメッセージに対応するIKE SAが見つからなかった、もしくは新たに作成できなかった | |
| not exists SKEYs | IKE SAの共通鍵がまだ作成されていないため、受信した暗号ペイロードの認証チェック、復号化ができない | |
| authentication is wrong | 受信した暗号ペイロードに付与された認証データが正しくない | |
| cannot find or create exchange | 受信したメッセージに対応する交換セッションが見つからなかった、もしくは新たに作成できなかった | |
| cannot process xxxxx payload | 受信メッセージのペイロードデータフィールドのフォーマットが不正 | |
| xxxxx payload is not contained | 受信メッセージに必須のペイロードが含まれていない | |
| cannot accept xxxxx payload | 受信メッセージの折衝内容が受理できなかった | |
| too few payload length | 共通ペイロードヘッダが示すペイロード長より実際のデータ長が短い | |
| too match payload length, ignores extra data | 共通ペイロードヘッダが示すペイロード長より実際のデータ長が長い | |
| encrypted payload already exists | 暗号ペイロードが複数存在している | |
| IKE header size is not enough xx/xx | 解析中の実データ長がヘッダ/ペイロード/フィールドの固定ヘッダ長より短い | |
| payload header size is not enough xx/xx | ||
| field header size is not enough xx/xx | ||
| message size is not enough xx/xx | 解析中の実データ長がヘッダ/ペイロード/フィールド長より短い | |
| payload size is not enough xx/xx | ||
| field size is not enough xx/xx | ||
| message size unmatched xx/xx | 解析中の実データ長がヘッダ/ペイロード/フィールド長と一致していない | |
| payload size unmatched xx/xx | ||
| field size unmatched xx/xx | ||
| not contained xxx payload | 解析したIKEメッセージ内に必須のペイロードが含まれていない | |
| unmatched auth method | Authペイロードの認証方式が一致しなかった | |
| unmatched auth data | Authペイロードの認証データが再計算した結果と一致しなかった | |
| not found CHILD SA, ignored(SPI:xxxxxxxx) | 受信したDeleteペイロードで指定されたSPIと合致するCHILD SAが見つからなかった | |
| [DEBUG] × message-info |
send message: ・・・ |
送信するIKEメッセージ |
| receive message: ・・・ |
受信したIKEメッセージ | |
| encrypting message: (pad size:xx): ・・・ |
暗号ペイロードとして暗号化する平文データ(パディング領域含む) | |
| decrypted message: (pad size:xx): ・・・ |
暗号ペイロードから復号化した平文データ(パディング領域含む) | |
| [DEBUG] × payload-info |
initiator x responder x |
現在処理している交換セッションがイニシエータ/レスポンダであることを示す |
| generate IKE header[msgID:xx] generate xxx payload |
IKEヘッダ、および各種ペイロードを生成していることを示す。種類に応じてペイロードデータの内容も出力される。 | |
| process IKE header[msgID:xx] process xxx payload |
IKEヘッダ、および各種ペイロードを解析していることを示す。種類に応じてペイロードデータの内容も出力される。 | |
| [DEBUG] × key-info |
Diffie-Hellman value: ・・・ |
Diffie-Hellman共有値 |
| Ni: ・・・ Nr: ・・・ SKEYSEED: ・・・ |
イニシエータ/レスポンダのNonceデータ、およびSKEYSEEDの計算結果 | |
| SPIi: ・・・ SPIr: ・・・ |
IKE SAのKey Material生成に使用するイニシエータ/レスポンダのSPI | |
| SK_d: ・・・ SK_ai: ・・・ SK_ar: ・・・ SK_ei: ・・・ SK_er: ・・・ SK_pi: ・・・ SK_pr: ・・・ |
IKE SAの共有鍵 | |
| calculate xAuth data msg-octets: ・・・ prf(secret, key-pad): ・・・ prf(prf(secret, key-pad), msg-octets): ・・・ |
Authペイロードのデータフィールドの計算結果 | |
| calculate KEYMAT SPI(send): ・・・ encryption key(send): ・・・ authentication key(send): ・・・ SPI(recv): ・・・ encryption key(recv): ・・・ authentication key(recv): ・・・ |
CHILD SAのKEYMATの計算結果 | |
| [DEBUG] × keepalive log |
send keepalive | IKEキープアライブの要求メッセージを送信 |
| received keepalive | IKEキープアライブの応答メッセージを受信した |
その他、鍵交換に失敗した場合等に、そのエラー内容に応じたSYSLOGが出力されることがあります。