IPsec・IKE・ESP・AHとVPNのモード
拠点Aの10.10.1.41から拠点Bの10.20.1.7へ通信を通すため、GW-AとGW-BでIPsecトンネルを張ります。IKEは何を交渉し、ESPは何を守り、AH・トランスポートモード・SSL-VPNとはどう違うのでしょうか。IKE_SAとCHILD_SAのログを一連の失敗例で読みます。
読む順序は、用語と配置→正常な処理→異常ログ→調査と対策→復旧→演習です。接続・検知・遮断・被害を別々の事実として扱います。以下の構成、時刻、アドレス、ログ、設定値は教材用の架空例です。
1. 用語と役割を構成に結び付ける
用語 | この事例での意味と限界 |
|---|---|
IPsec | IP層の通信保護の枠組み。ポリシー、Security Association(SA)、鍵管理、ESP/AHを組み合わせる。IPsecという名称だけで利用者認証やアプリ権限を保証しない。 |
IKEv2 | 相手認証と鍵交換を行いIKE SAとCHILD SAを構築・更新する。UDP500、NATを挟むと通常UDP4500を使う。 |
ESP | IPプロトコル番号50。設定した暗号・完全性・再送防止で通信を守る。現代の構成では認証付き暗号を使うことが多い。 |
AH | IPプロトコル番号51。改ざん検出・送信元認証を提供するが本文の秘匿はしない。NATがIPヘッダを書き換える構成と相性が悪い。 |
トンネルモード | 元のIPパケット全体を内側に置き、新しい外側IPヘッダでGW-A→GW-Bへ送る。拠点間VPNの典型。 |
トランスポートモード | 元のIPヘッダを基本的に維持し、上位層のペイロードを保護する。端末間などに使う。外側宛先は隠れない。 |
SSL-VPN | TLS等を使う遠隔アクセス方式の総称。製品によりブラウザ型・トンネル型があり、IPsecのESP/AHとはプロトコルと適用層が違う。 |
2. 構成と信頼境界
GW-Aの公開IPは198.51.100.10、GW-Bは203.0.113.20です。内側の保護対象はA側10.10.1.0/24、B側10.20.1.0/24。IKEv2で証明書認証し、ESPトンネルモードのCHILD_SAを作ります。途中にNAT装置があればNAT-Tを使います。
IKEで認証とSA交渉を行い、ESPで内側IPパケットを運ぶ。
図ではIKEの詳細メッセージを省略し、制御プレーンとデータプレーンを分けています。IKE SAが確立しても、対象のCHILD SAがなければ10.10.1.41→10.20.1.7をESPで運べません。
3. 正常な処理を順に追う
GW-AとGW-BがIKE_SA_INITで暗号提案、nonce、DH公開値を交換し鍵材料を作る。
IKE_AUTHで相手の証明書等を検証し、保護対象のtraffic selectorを交渉してCHILD_SAを作る。
10.10.1.41→10.20.1.7の内側IPパケットがSPDの保護ポリシーに一致し、外側198.51.100.10→203.0.113.20のESPとして送られる。
GW-BはSPIでSAを選び、整合性とanti-replayを検査し、復号後に内側宛先へ転送する。
ESPが成立してもGW-Bの内部FWやサーバが通信を拒否する場合があります。VPNの疎通、TCP接続、アプリ認証の成否を別々に調べます。トンネルモードでも外側のGW IPと通信量は観測できます。
4. 設定値・ログの読み方
項目 | 値の意味と判断の限界 |
|---|---|
IKE SA/CHILD SA | IKE制御のSAと実データ用SA。前者だけupでも通信できない。 |
SPI/direction | 受信側がSAを識別する番号。往復は別SA・別SPIなので片方向だけupもある。 |
traffic selectors | 保護する内側の送信元・宛先範囲。片側が10.20.1.0/24、他側が別範囲なら一致しない。 |
ESP sequence | 再送防止の番号。replay dropは攻撃の可能性もあるが経路・再起動・SA不一致も調べる。 |
NAT-T | NAT検出後のUDP4500カプセル化。UDP500到達だけでESP実データが通るとは限らない。 |
以下の架空ログはIKE認証が成功し、対象selectorが不一致のためCHILD_SAが失敗する例です。
14:00:00 GW-A peer=203.0.113.20 ike_sa=up auth=ok
14:00:01 GW-A child=CH-41 local=10.10.1.0/24
remote=10.20.1.0/24 result=TS_UNACCEPTABLE
14:00:02 GW-A flow=10.10.1.41->10.20.1.7
ipsec_policy=protect child_sa=none action=drop`auth=ok`は相手認証とIKE SAを示し、IPsecデータ経路が完成した意味ではありません。`TS_UNACCEPTABLE`なら両端の保護対象範囲を比較します。もし`child_sa=up`で通信不可なら、SPI、FW、経路、MTU、サーバ側ログへ進みます。
5. 攻撃・障害時の差分
異常・攻撃条件 | 観測、成立条件、対策の位置 |
|---|---|
相手IDの検証不足 | 攻撃者のGWや偽証明書を受け入れる。IKE_AUTHの証明書、名前、信頼先を検証する。 |
古い暗号提案 | 弱い方式へ合意する設定が残る。両端の許可方式と実際の選択結果を監査する。 |
NAT-T遮断 | IKE UDP500は通るがUDP4500が通らない。制御成功とESPデータ失敗を分ける。 |
selector過大 | `0.0.0.0/0`などを意図せず通し、不要な内部資源へ届く。対象を最小化しFWでも制限。 |
SA期限・rekey失敗 | 一定時間後だけ通信断。旧新SPI、双方の時刻、rekeyログを確認する。 |
AHはIPヘッダの一部も完全性保護するため通常のNATとの併用が難しく、ESPはNAT-Tで運べます。ESPとAHの役割を『ESPは暗号、AHは認証だけ』と単純化せず、ESPにも完全性・送信元認証の構成があることを押さえます。
6. 切り分けに必要な証拠
両GWのIKE SA、CHILD SA、相手ID、証明書検証を同じ時刻で確認する。
traffic selector、経路表、SPD、FW、NAT-TのUDP4500を確認する。
往復のSPI、ESP送受パケット数、replay drop、MTU・断片化を調べる。
拠点Bのサーバ認証・アプリログでVPN後の処理を確認する。
パケットキャプチャにESPが見えても、正しい内側宛先へ復号・転送されたかはGW-B側ログが要ります。外側送信元はGW-Aであり、内側の利用者IDをそのまま示しません。
6.1 判断を誤りやすい境界と詳しい確認
確認点 | 具体的な判断 |
|---|---|
IKE SA | IKEv2はまずIKE_SA_INITでアルゴリズムや鍵交換の材料を交換し、IKE_AUTHで相手を認証する。IKE SAは制御用で、業務データを運ぶCHILD SAとは別。 |
CHILD SA | ESP等の通信を保護する単方向のSAを両方向に作る。SPI、鍵、アルゴリズム、有効期限、traffic selectorを見て、片方向だけの不一致を探す。 |
ESP | 機密性と完全性などを提供する。トンネルモードでは内側IPパケットを包み、新しい外側IPヘッダを付ける。通信先網はtraffic selectorで制約する。 |
AH | 認証・完全性を提供するが機密性は提供しない。IPヘッダの一部も保護対象となるためNATとの相性が悪い。実務の拠点間VPNは一般にESPを選ぶ。 |
モード差 | トンネルモードは元のIPパケット全体を内側に収め、ゲートウェイ間VPNでよく使う。トランスポートモードは主に元のIPペイロードを保護し、元のIPヘッダを利用する。 |
NAT-T | NATがESPのIPプロトコル50を扱いにくい場合、ESPをUDP 4500へ包む。UDP 500のIKEから4500へ切り替わる経路と中間FWを確認する。 |
MTU | 外側ヘッダ、ESP、NAT-Tでパケットが大きくなる。大きな通信だけ失敗するなら、PMTUD、ICMP遮断、MSS調整、断片化を確認する。 |
VPNがupでも、拠点Aの10.20.10.0/24から拠点Bの10.30.20.0/24へ届くとは限りません。IKE SA成立、該当selectorのCHILD SA成立、送受信ESPカウンタ増加、復号後のFW許可、戻り経路の順に調べます。IKEの認証成功だけでアプリ到達まで結論しません。
rekey失敗では更新直前まで成功し、有効期限で一斉に途切れることがあります。両端の時刻、提案アルゴリズム、PFS設定、証明書期限、鍵交換グループ、selector、旧SAの削除時刻を保存します。緊急に旧方式へ戻す場合は、弱い暗号の例外期間と責任者を明示します。
SSL-VPNは通常TLSを使うリモートアクセスVPNの総称として扱われますが、製品によってトンネル方式や認証・対象アプリが異なります。IPsecのESPパケットと同じログやポートを期待せず、製品の方式、認証ログ、割当アドレス、接続先ACLを確認します。
7. 設定変更と例外運用
変更・例外 | 失敗しやすい点と確認 |
|---|---|
証明書更新 | 新旧鍵の切替と相手ID、チェーン、期限を両端で確認する。片側だけ更新すると認証失敗。 |
サブネット追加 | selector、経路、FW、監視をセットで変更する。SA upでも新サブネットが通らない場合がある。 |
NAT導入 | UDP4500とNAT-T検出、外側IPの変化を確認。AHを使う構成では別設計を要する。 |
拠点障害 | フェイルオーバー後のpeer IP、SA再確立、古いSPI残存を確認する。 |
IKEv2の詳細な提案、再鍵交換とanti-replay窓は製品・設定で変わります。設定を写す前に両端の互換性と鍵管理方針を確認します。SSL-VPNへ切り替えるなら、TLSの終端・認証・端末への到達範囲を新たに設計します。
8. 封じ込めと復旧条件
双方のSA・SPI・selector・認証ログと通信失敗時刻を保全する。
証明書や鍵の漏えいなら失効・交換し、侵害期間のトンネル利用を調べる。
正しいselector、経路、FW、NAT-Tを反映し、両方向のCHILD_SAとESPカウンタを確認する。
10.10.1.41→10.20.1.7のTCP接続と業務アプリ認証を試験する。
意図しないサブネットへ通らないこと、rekey後も通信が続くことを確認する。
IKE SAのupだけで復旧完了にしません。CHILD SA、内側通信、アプリの正常動作と不要経路の拒否まで見る必要があります。
9. 科目B(午後)での解答手順
制御のIKEとデータのESP/AH、内側IPと外側IP、SAの方向を分けます。トンネルかトランスポートかで守られるヘッダ範囲を図に書き、ログの`up`がどの段階か明示します。
IKE SAとCHILD SAを区別する。
ESP/AHとトンネル/トランスポートを混同しない。
NAT-T、selector、SPIを失敗箇所に対応付ける。
10. 短答演習
演習1:IKE up
条件:ike_sa=up、child_sa=none。 質問:通信できるか。
解答:保護対象のESP通信はできない。 誤答の理由:制御SAとデータSAを混同している。
演習2:AH
条件:本文を秘匿したい。 質問:AHだけでよいか。
解答:よくない。AHは秘匿しない。 誤答の理由:完全性と暗号化を混同している。
演習3:トンネル
条件:GW-AとGW-Bの拠点間。 質問:外側IPは見えるか。
解答:見える。内側IPパケットを包む。 誤答の理由:全IPヘッダが不可視と考えている。
演習4:NAT-T
条件:UDP500成功、4500遮断。 質問:何が起こるか。
解答:NAT-Tのデータ通信が失敗し得る。 誤答の理由:IKE初期通信だけを見ている。
演習5:SPI
条件:送信SPIだけ一致。 質問:往復も成功か。
解答:不明。逆方向のSAを確認する。 誤答の理由:SAの方向性を無視している。
演習6:SSL-VPN
条件:TLS型遠隔接続へ変更。 質問:ESP設定を流用できるか。
解答:できない。終端・認証・到達範囲を再設計する。 誤答の理由:名称のVPNだけで同一プロトコルと考えている。
11. 一次資料
この記事についてAIに深掘り質問する
ChatGPT、Claude、Perplexityにこの記事を参照させ、要点の確認や疑問点を自由に質問できます。
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る