こんにちは!ネットワークセキュリティの世界へようこそ。技術メディア主筆の「ネットワークの番人」です。
普段、私たちが何気なく「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は、「生きてる?」という確認や「さよなら」の挨拶をするプロセス。
難しく見える英単語の羅列も、その目的が「安全を保ち続けるため」「相手を思いやるため」だと分かれば、ぐっと身近に感じられませんか?
ゼロトラストの時代、境界防御は形を変えていきますが、こうした「通信の誠実なやり取り」の基礎は変わりません。一つ一つのパケットが持つ意味を理解することで、あなたはより頼もしいエンジニアへと成長していけるはずです。
「一歩ずつ理解していきましょう!」
また次回の解説でお会いしましょう。
コメント