2.19. Requesting an Internal Address on a Remote Network (リモートネットワーク上の内部アドレス要求)
2.19. Requesting an Internal Address on a Remote Network (リモートネットワーク上の内部アドレス要求)
エンドポイントとセキュリティゲートウェイのシナリオでよくあるが, エンドポイントはセキュリティゲートウェイが保護するネットワーク内の IP アドレスが必要で動的割当が必要な場合がある. CP ペイロードを含めることで Child SA 作成要求 (メッセージ 3 の暗黙的要求を含む) のいずれでもそのような一時アドレスを要求できる. ただし通常 IKE_AUTH で 1 つだけ割り当てる. そのアドレスは少なくとも IKE SA 削除まで維持される.
本機能は IPsec リモートアクセスサーバ (IRAS) が保護するネットワークへトンネルしようとする IPsec リモートアクセスクライアント (IRAC) にアドレス割当を提供する. IKE_AUTH は IKE SA と Child SA を作るため, IRAC は IKE_AUTH で IRAS 管理アドレス (および保護ネットワークに関する任意の追加情報) を要求しなければならない. IRAS は DHCP/BOOTP サーバや自前プールなど任意のソースからアドレスを取得できる.
Initiator Responder
-------------------------------------------------------------------
HDR, SK {IDi, [CERT,]
[CERTREQ,] [IDr,] AUTH,
CP(CFG_REQUEST), SAi2,
TSi, TSr} -->
<-- HDR, SK {IDr, [CERT,] AUTH,
CP(CFG_REPLY), SAr2,
TSi, TSr}
常に CP は SA ペイロードの前に挿入する. 複数 IKE_AUTH がある変種では, SA を含むメッセージに CP を挿入しなければならない.
CP(CFG_REQUEST) は少なくとも 1 つの INTERNAL_ADDRESS 属性 (IPv4 または IPv6) を含めなければならず, イニシエータが応答で返してほしい追加属性を任意個含めてよい.
例 (イニシエータからレスポンダ):
CP(CFG_REQUEST)=
INTERNAL_ADDRESS()
TSi = (0, 0-65535, 0.0.0.0-255.255.255.255)
TSr = (0, 0-65535, 0.0.0.0-255.255.255.255)
注: トラフィックセレクタは (プロトコル, ポート範囲, アドレス範囲).
レスポンダから:
CP(CFG_REPLY)=
INTERNAL_ADDRESS(192.0.2.202)
INTERNAL_NETMASK(255.255.255.0)
INTERNAL_SUBNET(192.0.2.0/255.255.255.0)
TSi = (0, 0-65535, 192.0.2.202-192.0.2.202)
TSr = (0, 0-65535, 192.0.2.0-192.0.2.255)
返却値は実装依存である. 上例のとおり IRAS は要求に無かった属性も送ってよく, サポートしない任意属性は無視してよい.
レスポンダはイニシエータから CP(CFG_REQUEST) を受け取る前に CFG_REPLY を送ってはならない. IRAC が REPLY を処理できないのに IRAS が設定参照を行わないようにするためである.
IRAS の設定が IDi に CP を必須とするが IRAC が CP(CFG_REQUEST) を送らなかった場合, IRAS は要求を失敗させ FAILED_CP_REQUIRED で Child SA 作成を終了しなければならない. FAILED_CP_REQUIRED は IKE SA には致命的でなく Child SA 作成のみ失敗する. イニシエータは後で新しい Configuration 要求で修正できる. 関連データはない.