【入門編】 IKEv2のCREATE_CHILD_SAとINFORMATIONAL交換の役割 – ゼロトラスト&エンタープライズセキュリティ実践ガイド

こんにちは!ネットワークセキュリティの世界へようこそ。技術メディア主筆の「ネットワークの番人」です。

普段、私たちが何気なく「VPNに繋がった!」と喜んでいるその裏側では、実はパケットたちが健気に、そして緻密な段取りで「安全な通り道」を守り続けています。

前回までの記事で、IKEv2(Internet Key Exchange version 2)がどうやって最初の「安全な会議室(IKE SA)」を作るかをお話ししました。しかし、会議室を作って終わりではありません。実際にデータを運ぶ「専用のトンネル(Child SA)」を作ったり、相手がまだ生きているか確認したり、あるいは「もう帰るね」と挨拶したり……。

今日は、そんなIKEv2の「運用の要」であるCREATE_CHILD_SAとINFORMATIONALという2つの交換プロセスについて、郵便配達の仕組みに例えて、世界一分かりやすく紐解いていきましょう!

—

1. CREATE_CHILD_SA:新しい荷物の通り道と「合鍵」の更新

まず最初に紹介するのは、CREATE_CHILD_SA(クリエイト・チャイルド・エスエー)です。

名前は少し難しそうですが、役割はシンプル。
「すでに安全な会議室(IKE SA)がある状態で、新しいデータの通り道(Child SA)を作ったり、古くなった鍵を新しく作り直したりする」ための手続きです。

郵便配達で例えると?

想像してみてください。あなたはすでに、郵便局の担当者と「秘密の暗号」を決めて、安全な連絡ルートを確保しています(これが最初のIKE SAです)。

  • 追加のトンネル作成: 「基本の荷物以外に、壊れ物専用の特別なレーンも作りたいな」とお願いする場面。
  • 鍵の更新(Rekey): 「今の暗号をずっと使っていると泥棒にバレるかもしれないから、新しい暗号に変えよう」と提案する場面。

これがCREATE_CHILD_SAの役割です。

なぜ「Child(子供)」なの?

IPsecの世界では、制御用の親玉(IKE SA)がまず立ち上がり、その管理下で実際にデータを運ぶための子供たち(Child SA)が生まれます。一つの親に対して、複数の子供(例えば、拠点A宛のトンネル、拠点B宛のトンネルなど)を効率よく作れるのがIKEv2の賢いところなんです。

—

2. INFORMATIONAL:ネットワークの「生存確認」と「お別れの挨拶」

次に、INFORMATIONAL(インフォメーショナル)交換です。これは、いわゆる「事務連絡」や「メンテナンス通知」のようなものです。

ネットワークは生き物です。急にケーブルが抜けたり、相手のルーターが再起動したりすることもありますよね。そんな時に「あれ、相手はまだいるのかな?」と確認するのがこのプロセスの仕事です。

主な3つの役割

1. 生存確認(Liveness Check / DPD):
「ねえ、生きてる?」と話しかけて「うん、生きてるよ」と返してもらう作業です。専門用語では Dead Peer Detection (DPD) と呼びます。
2. エラーの通知:
「送られてきたパケットの形式が変だよ!」といったトラブルを報告します。
3. 削除通知(Delete):
「もう用が済んだから、この通り道を閉じるね」という最後のお別れの挨拶です。

郵便配達で例えると?

  • 生存確認: 毎日決まった時間にインターホンを押して「いらっしゃいますかー?」と確認するようなもの。返事がなければ「あ、引っ越した(回線が切れた)んだな」と判断して、無駄な荷物を送るのをやめます。
  • 削除通知: 「これにて契約終了です、ハンコをお願いします」と手続きをして、綺麗さっぱり片付けるイメージですね。

—

3. 実務での設定例を見てみよう(StrongSwanの場合)

では、これらが実際のインフラ設定でどう表現されるのか、Linuxでよく使われるVPNソフト strongSwan の設定ファイル(swanctl.conf)を例に見てみましょう。

「どこが CREATE_CHILD_SA や INFORMATIONAL に関わっているのか」に注目して読んでみてください。

# strongSwan (swanctl.conf) の設定例
connections {
    my-vpn-connection {
        local_addrs  = 192.168.1.1
        remote_addrs = 203.0.113.1

        local {
            auth = pubkey
            certs = myCert.pem
        }
        
        # --- ここからが CREATE_CHILD_SA に関わる部分 ---
        children {
            net-to-net {
                local_ts  = 10.1.0.0/24
                remote_ts = 10.2.0.0/24
                # rekey_time: 鍵の有効期限。これが来ると CREATE_CHILD_SA が走ります!
                rekey_time = 1h
                esp_proposals = aes256-sha256-modp2048
            }
        }

        # --- ここからが INFORMATIONAL (DPD) に関わる部分 ---
        # dpd_delay: 30秒おきに「生きてる?」と確認メッセージを送ります
        dpd_delay = 30s
        # dpd_timeout: 120秒間返事がなければ、相手が死んだとみなして切断します
        dpd_timeout = 120s
    }
}

パラメータの解説

  • rekey_time = 1h:

1時間経つと、今の鍵を捨てて新しく作り直します。この時、通信を途切れさせないように裏側で CREATE_CHILD_SA が「新しい鍵で道を作ったよ!次からこっちを使ってね」と調整してくれます。

  • dpd_delay = 30s:

これが INFORMATIONAL のトリガーです。30秒ごとにパケットを飛ばして、相手の生存を確認します。

—

4. トラブルシューティングの現場知恵

もし、VPNが「最初は繋がるのに、数時間経つと切れる」とか「相手が再起動した後に自動で復帰しない」という問題が起きたら、今日学んだ2つの交換を疑ってみてください。

  • 鍵更新の失敗: CREATE_CHILD_SA のタイミングで設定(暗号化アルゴリズムなど)が食い違っていると、更新に失敗して通信が止まってしまいます。
  • DPDのミスマッチ: 片方のルーターは「頻繁に確認したい」のに、もう片方が「そんなに頻繁に話しかけないで(無視)」という設定になっていると、勝手に切断されてしまうことがあります。

ログの中に sent CREATE_CHILD_SA request や received INFORMATIONAL request という文字を見つけたら、「お、頑張って維持しようとしてるな!」と応援してあげてくださいね。

—

まとめ:一歩ずつ、パケットの気持ちになろう

いかがでしたでしょうか。

  • CREATE_CHILD_SA は、安全な会議室を使って「追加の道」を作ったり「合鍵」を新しくしたりするプロセス。
  • INFORMATIONAL は、「生きてる?」という確認や「さよなら」の挨拶をするプロセス。

難しく見える英単語の羅列も、その目的が「安全を保ち続けるため」「相手を思いやるため」だと分かれば、ぐっと身近に感じられませんか?

ゼロトラストの時代、境界防御は形を変えていきますが、こうした「通信の誠実なやり取り」の基礎は変わりません。一つ一つのパケットが持つ意味を理解することで、あなたはより頼もしいエンジニアへと成長していけるはずです。

「一歩ずつ理解していきましょう!」
また次回の解説でお会いしましょう。

コメント

タイトルとURLをコピーしました