2.19. 请求远程网络上的内部地址
2.19. 请求远程网络上的内部地址
在端点到安全网关的场景中最常出现, 一个端点可能需要在由安全网关保护的网络中拥有一个 IP 地址, 并且可能需要动态分配该地址。这种临时地址的请求可以通过包含 CP 载荷, 包含在创建 Child SA 的任何请求中 (包括第 3 条消息中的隐式请求)。但请注意, 通常只在 IKE_AUTH 交换期间分配一个 IP 地址。该地址至少持续到 IKE SA 被删除。
此功能为试图隧道传输到由 IPsec 远程访问服务器 (IRAS) 保护的网络中的 IPsec 远程访问客户端 (IRAC) 提供地址分配。由于 IKE_AUTH 交换创建一个 IKE SA 和一个 Child SA, IRAC 必须 (MUST) 在 IKE_AUTH 交换中请求 IRAS 控制的地址 (以及关于受保护网络的任选其他信息)。IRAS 可以从任意数量的来源 (如 DHCP/BOOTP (Bootstrap Protocol) 服务器或其自身的地址池) 为 IRAC 获取一个地址。
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 载荷必须 (MUST) 插入在 SA 载荷之前。在存在多个 IKE_AUTH 交换的协议变体中, CP 载荷必须 (MUST) 插入在包含 SA 载荷的消息中。
CP(CFG_REQUEST) 必须 (MUST) 至少包含一个 INTERNAL_ADDRESS 属性 (IPv4 或 IPv6), 但可以 (MAY) 包含发起方希望在响应中返回的任何数量的附加属性。
例如, 从发起方到响应方的消息:
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 也可以 (MAY) 发送未在 CP(CFG_REQUEST) 中包括的其他属性, 并且可以 (MAY) 忽略它不支持的非强制属性。
响应方必须 (MUST NOT) 在未先从发起方收到 CP(CFG_REQUEST) 的情况下发送 CFG_REPLY, 因为我们不希望 IRAS 在 IRAC 无法处理该 REPLY 的情况下执行不必要的配置查找。
在 IRAS 的配置要求对给定身份 IDi 使用 CP, 但 IRAC 未能发送 CP(CFG_REQUEST) 的情况下, IRAS 必须 (MUST) 使请求失败, 并以 FAILED_CP_REQUIRED 错误终止 Child SA 的创建。FAILED_CP_REQUIRED 对于 IKE SA 不是致命的; 它只是导致 Child SA 创建失败。发起方可以通过稍后启动一个新的配置 (Configuration) 载荷请求来修复此问题。FAILED_CP_REQUIRED 错误中没有关联数据。