系统管理指南:IP 服务

第 27 章 移动 IP(概述)

移动 Internet 协议 (Internet Protocol, IP) 用来实现移动计算机之间的信息传输。移动计算机包括膝上型计算机和无线通信设备。移动计算机可以将其位置更改到外地网络。在外地网络中,移动计算机仍然可通过移动计算机的家乡网络进行通信。Solaris 移动 IP 实现仅支持 IPv4。

本章包含以下信息:

有关与移动 IP 相关的任务,请参阅第 28 章。有关移动 IP 的参考资料,请参阅第 29 章

移动 IP 的新增功能

在 Solaris 10 8/07 之后的 Solaris 10 更新中已删除移动 IP 功能。

移动 IP 简介

当前版本的 Internet 协议 (Internet Protocol, IP) 假定计算机在固定位置连接到 Internet 或网络。还假定计算机的 IP 地址可标识与其相连接的网络。向计算机发送的数据报基于 IP 地址中包含的位置信息。许多 Internet 协议都要求节点的 IP 地址保持不变。如果其中的任一协议在移动 IP 计算设备上处于活动状态,则应用该协议将失败。如果不是因为 TCP 连接具有暂时性,即便是 HTTP 也将失败。更新 IP 地址和刷新 Web 页面不会造成负担。

如果移动计算机(即移动节点)移到新网络后其 IP 地址保持不变,则移动节点的地址不会反映新连接点。因此,所存在的路由协议无法将数据报正确路由到该移动节点。必须使用表示新位置的其他 IP 地址来重新配置移动节点。指定其他 IP 地址会比较麻烦。因此,在当前 Internet 协议下,如果移动节点在移动后其地址不变,则会失去路由。如果移动节点确实对其地址进行更改,则会失去连接。

移动 IP 通过允许移动节点使用两个 IP 地址,可以解决上述问题。第一个地址是家乡地址,它是固定的。第二个地址是转交地址,它在每个新连接点都会发生变化。移动 IP 允许计算机在 Internet 上自由漫游。另外,它还允许计算机在组织的网络上自由漫游,同时仍保持其家乡地址不变。因此,当用户更改计算机的连接点时,通信活动不会中断。相反,会使用移动节点的新位置对网络进行更新。有关与移动 IP 相关联的术语的定义,请参见词汇表

下图显示了一般的移动 IP 拓扑。

图 27–1 移动 IP 拓扑

显示移动节点家乡代理的家乡网络与外地代理的外地网络之间的关系。

通过使用该图中的移动 IP 拓扑,以下情形说明了数据报是如何在移动 IP 框架的不同点之间移动的。

  1. Internet 主机使用移动节点的家乡地址向移动节点发送数据报(此为标准的 IP 路由过程)。

  2. 如果移动节点位于家乡网络,则数据报会通过常规 IP 进程传送到移动节点。否则,数据报将传送到家乡代理。

  3. 如果移动节点位于外地网络,则家乡代理将数据报转发到外地代理。家乡代理必须将数据报封装到外部数据报中,以便外地代理的 IP 地址出现在外部 IP 数据包头。

  4. 外地代理将数据报传送到移动节点。

  5. 数据报通过使用标准的 IP 路由过程从移动节点发送到 Internet 主机。如果移动节点位于外地网络上,则包会传送到外地代理。外地代理随后会将数据报转发到 Internet 主机。

  6. 如果存在入口过滤 (ingress filtering),则发送数据报的子网的源地址在拓扑结构上必须正确,否则路由器无法转发数据报。如果移动节点和通信节点之间的链路上存在这种情况,则外地代理需要提供反向隧道连接支持。然后,外地代理即可将移动节点所发送的每个数据报传送到其家乡代理。家乡代理随后将转发数据报,所使用的路径即是移动节点驻留在家乡网络的情况下数据报应采用的路径。此过程保证数据报必须遍历的所有链路的源地址均正确。

有关无线通信的信息,请参阅图 27–1,它描述了如何使用无线收发器将数据报传送到移动节点。此外,Internet 主机和移动节点之间的所有数据报也都使用移动节点的家乡地址。即使移动节点位于外地网络上,仍会使用家乡地址。转交地址仅用于与移动代理进行通信。转交地址对于 Internet 主机不可见。

移动 IP 功能实体

移动 IP 引入了下列新的功能实体:

移动 IP 的工作原理

使用移动 IP 可将 IP 数据报路由到移动节点。无论移动节点连接到何处,移动节点的家乡地址可始终标识该移动节点。如果移动节点不在家乡网络上,则转交地址将与移动节点的家乡地址相关联。转交地址可提供有关移动节点当前连接点的信息。移动 IP 使用注册机制向家乡代理注册转交地址。

家乡代理可将数据报从家乡网络重定向到转交地址。家乡代理会构造一个新的包含移动节点转交地址的 IP 数据包头,将其用作目标 IP 地址。这个新的 IP 数据包头用于封装初始 IP 数据报。因此,移动节点的家乡地址不会影响已封装数据报的路由,直到数据报到达转交地址为止。这种类型的封装被称为隧道连接。数据报到达转交地址之后,将对数据报解除封装。然后,将数据报传送到移动节点。

下图显示了驻留在家乡网络(网络 A)上的移动节点在移动到外地网络(网络 B)之前的情形。这两个网络都支持移动 IP。移动节点始终与其家乡地址 128.226.3.30 相关联。

图 27–2 驻留在家乡网络上的移动节点

说明一个驻留在其家乡网络上的移动节点及其与家乡代理的连接,以及与外地代理的关系。

下图显示了已经移到外地网络(网络 B)的移动节点。家乡网络(网络 A)上的家乡代理会拦截发往移动节点的数据报,并对数据报进行封装。然后,数据报会发送到网络 B 上的外地代理。外地代理会去除外部头,然后将数据报传送到位于网络 B 上的移动节点。

图 27–3 移到外地网络的移动节点

说明一个当前驻留在外地网络上的移动节点及其与外地代理的连接,以及与家乡代理的关系。

转交地址可能属于外地代理。它可能由移动节点通过动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 或点对点协议 (Point-to-Point Protocol, PPP) 获取。对于后一种情况,移动节点具有协同定位的转交地址。

移动代理(家乡代理和外地代理)通过使用代理通告消息来通告其是否存在。移动节点也可以选择请求代理通告消息。移动节点可使用通过代理请求消息在本地连接的任何移动代理。移动节点使用代理通告确定移动节点是在家乡网络上还是在外地网络上。

移动节点使用特殊注册过程通知家乡代理有关移动节点的当前位置。移动节点会始终“侦听”移动代理通告以确定移动代理是否存在。移动节点使用这些通告帮助确定移动节点何时移到另一个子网。如果移动节点确定其已移到新位置,则会使用新的外地代理将注册消息转发到家乡代理。移动节点从一个外地网络移到另一个外地网络时,会使用同一过程。

如果移动节点检测到其位于家乡网络上,则移动节点将不使用移动服务。移动节点返回到家乡网络时,会向家乡代理取消注册

代理搜索

移动节点使用一种称为代理搜索的方法来确定以下信息:

移动代理将代理通告传送到网络上的通告服务。如果没有代理通告,则移动节点可以请求通告。此功能称为代理请求。如果某个移动节点可支持自己的协同定位转交地址,则该移动节点可以使用常规路由器通告来实现相同功能。

代理通告

移动节点使用代理通告确定可连接到 Internet 或组织网络的当前连接点。代理通告是一种扩展的 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 路由器通告,扩展的功能是可以执行移动代理通告扩展。

外地代理 (foreign agent, FA) 可能太忙,无法为其他移动节点提供服务。但是,外地代理必须继续发送代理通告。这样,已经向外地代理注册的移动节点就会知道自己尚未移至外地代理的范围外。该移动节点还知道外地代理仍在正常运行。若一个移动节点向外地代理注册后,不再从该代理收到代理通告,则会知道自己不能再与该外地代理进行通信。

通过动态接口发送代理通告

可以配置外地代理的实现,使其通过动态创建的接口发送通告。还可以选择是否限制通过通告接口发送的未经请求的通告数量。动态创建的接口定义为仅限于在 mipagent 守护进程启动后配置的那些接口。对于支持瞬间移动接口的应用程序,通过动态接口发送通告非常有用。此外,通过限制未经请求的通告,可能还可以节省网络带宽。

代理请求

每个移动节点都应实现代理请求。对于为 ICMP 路由器的请求消息指定的代理请求,移动节点使用相同的过程、缺省值和常数。

移动节点可限制其发送请求的速率。移动节点在搜索代理时,可以发送三个初始请求,其最大速率为每秒一个请求。移动节点向某个代理注册之后,发送请求的速率会降低,从而限制本地网络上的开销。

转交地址

移动 IP 提供了以下两种获取转交地址的模式:

协同定位转交地址可使移动节点在没有外地代理的情况下正常工作。因此,移动节点可以在尚未部署外地代理的网络中使用协同定位的转交地址。

如果某个移动节点正在使用协同定位的转交地址,则该移动节点必须位于由该转交地址的网络前缀标识的链路上。否则,发往该转交地址的数据报将无法传送。

具有反向隧道连接的移动 IP

移动 IP 的工作原理一节假定在 Internet 内进行路由与数据报的源地址无关。但是,中间路由器可能会检查源地址的拓扑是否正确。如果中间路由器确实进行了检查,则移动节点需要设置反向隧道。通过设置从转交地址到家乡代理的反向隧道,可确保 IP 数据包源地址的拓扑正确无误。反向隧道支持由外地代理和家乡代理进行通告。移动节点在注册时,可以请求在外地代理和家乡代理之间建立反向隧道。反向隧道始于移动节点的转交地址,止于家乡代理。下图显示了使用反向隧道的移动 IP 拓扑。

图 27–4 具有反向隧道的移动 IP

说明移动节点如何通过反向隧道与通信节点通信。

有限的专用地址支持

其专用地址无法通过 Internet 进行全局路由的移动节点需要使用反向隧道。Solaris 移动 IP 支持设置了专用地址的移动节点。有关 Solaris 移动 IP 不支持的功能,请参见Solaris 移动 IP 实现的概述

无需外部连接时,企业可以使用专用地址。专用地址无法通过 Internet 路由。如果某个移动节点具有专用地址,则该移动节点只能通过将其数据报经由反向隧道传送到其家乡代理来与通信节点通信。然后,家乡代理会将数据报传送到通信节点,其传送方式即是移动节点位于家乡网络上时通常传送数据报的方式。下图显示了一个由两个具有专用地址的移动节点组成的网络拓扑。在向同一个外地代理注册时,这两个移动节点使用相同的转交地址。

图 27–5 驻留在同一外地网络上的具有专用地址的移动节点

说明由两个具有专用地址的移动节点组成的一个网络拓扑,在向同一个外地代理注册时,这两个移动节点使用相同的转交地址。

如果转交地址和家乡代理地址属于通过公共 Internet 连接的不同域,则这些地址必须是可以进行全局路由的地址。

同一个外地网络可以包括两个将同一 IP 地址作为专用地址的移动节点。但是,每个移动节点必须具有不同的家乡代理。另外,每个移动节点还必须位于单个外地代理的不同通告子网上。下图显示了描述此情况的网络拓扑。

图 27–6 驻留在不同外地网络上的具有专用地址的移动节点

说明由两个具有专用地址的移动节点组成的网络拓扑,这两个移动节点驻留在不同的外地网络上。

移动 IP 注册

移动节点通过使用代理通告检测它们何时从一个子网移动到另一个子网。当移动节点收到一个代理通告,指示其位置已更改时,它会通过外地代理进行注册。即使移动节点可能已获取了自己的协同定位的转交地址,仍会提供此功能,以便允许在站点上限制对移动服务的访问。

移动 IP 注册提供了一种灵活的机制,允许移动节点向家乡代理传送关于当前可访问性的信息。在注册过程中,移动节点可执行下列任务:

注册消息在移动节点、外地代理和家乡代理之间交换信息。在注册过程中,可在家乡代理上创建或修改移动绑定,并使移动节点的家乡地址与移动节点的转交地址在指定的生命周期内相关联。

在注册过程中,移动节点还可执行下列功能:

移动 IP 可以为移动节点定义下列注册过程:

这些注册过程包括交换注册请求和注册回复消息。移动节点使用外地代理进行注册时,注册过程会采用以下步骤,如下图所示:

  1. 移动节点向将来的外地代理发送注册请求,从而开始执行注册过程。

  2. 外地代理处理注册请求,然后将该请求中继到家乡代理。

  3. 家乡代理向外地代理发送注册回复以准许或拒绝该请求。

  4. 外地代理处理注册回复,然后将回复中继到移动节点,以向其通告该请求的处理情况。

图 27–7 移动 IP 注册过程

说明一个通过外地代理向家乡代理注册的移动节点。

当移动节点直接向家乡代理注册时,注册过程仅需执行以下步骤:

另外,外地代理或者家乡代理可能需要反向隧道。如果外地代理支持反向隧道连接,则移动节点可以使用注册过程来请求反向隧道。移动节点可在要求反向隧道的注册请求中设置反向隧道标志。

网络访问标识符 (Network Access Identifier, NAI)

Internet 中使用的验证、授权和记帐 (authentication, authorization, and accounting, AAA) 服务器可为拨号计算机提供验证和授权服务。这些服务对于尝试使用移动 IP 连接到包含 AAA 服务器的外部域的移动节点可能同样重要。AAA 服务器使用网络访问标识符 (Network Access Identifier, NAI) 来标识客户机。移动节点可以通过在移动 IP 注册请求中包括 NAI 来自行标识。

因为 NAI 通常用于唯一标识移动节点,所以移动节点的家乡地址不必总是提供该功能。因此,移动节点可以对其自身进行验证。所以,可以授权移动节点连接到外部域,甚至不必具有家乡地址。要请求指定家乡地址,可使用包含移动节点 NAI 扩展的消息将注册请求中的家乡地址字段设置为零。

移动 IP 消息验证

每个移动节点、外地代理和家乡代理都支持各种移动 IP 组件之间的移动安全关联。安全关联通过安全参数索引 (security parameter index, SPI) 和 IP 地址建立索引。如果是移动节点,则此地址为移动节点的家乡地址。移动节点和家乡代理之间的注册消息是通过移动节点-家乡代理验证扩展进行验证的。除了必需的移动节点-家乡代理验证,还可以使用可选的移动节点-外地代理和家乡代理-外地代理验证。

移动节点注册请求

移动节点使用注册请求消息向家乡代理进行注册。因此,家乡代理可以为该移动节点创建或修改移动绑定(例如,使用新生命周期)。外地代理可以将注册请求中继到家乡代理。但是,如果移动节点要注册协同定位的转交地址,则它可以向家乡代理直接发送注册请求。如果外地代理通告必须将注册消息发送到外地代理,则移动节点必须向外地代理发送注册请求。

注册回复消息

移动代理会向发送了注册请求消息的移动节点返回一条注册回复消息。如果移动节点通过外地代理请求服务,该外地代理将接收来自家乡代理的回复。然后,该外地代理会将回复中继到移动节点。回复消息中包含向移动节点和外地代理通告注册请求状态所必需的代码,还包含由家乡代理授予的生命周期。该生命周期可能比初始请求的生命周期短。注册回复中还可以包含动态家乡地址分配。

外地代理注意事项

外地代理在移动 IP 注册中主要充当被动角色。外地代理会将所有已注册的移动节点添加到访问者列表中。外地代理可以在移动节点和家乡代理之间中继注册请求。另外,当外地代理提供转交地址时,外地代理还会对数据报解除封装,以便将其传送到移动节点。外地代理还会定期发送代理通告消息,以通告其是否存在。

如果家乡代理和外地代理支持反向隧道,并且移动节点请求建立反向隧道,则外地代理随后会将所有包从移动节点经由隧道发送到家乡代理。然后,家乡代理会将包发送到通信节点。与此过程相反,家乡代理会将移动节点的所有包通过隧道发送到外地代理,从而传送到移动节点。支持反向隧道的外地代理将通告一条消息,表明支持在注册过程中使用反向隧道。由于存在本地策略,如果未设置反向隧道标志,外地代理可能会拒绝注册请求。当移动节点访问外地代理上的不同接口时,外地代理只能对多个具有相同(专用)IP 地址的移动节点进行区分。对于正向隧道,外地代理可以通过查找传入隧道接口来区分共享相同专用地址的多个移动节点。传入隧道接口映射到一个唯一的家乡代理地址。

家乡代理注意事项

家乡代理在注册过程中充当主动角色。家乡代理从移动节点接收注册请求。注册请求可能由外地代理进行中继。家乡代理可针对该移动节点更新其移动绑定的记录。家乡代理会发出适当的注册回复以响应每个注册请求。当移动节点不在家乡网络上时,家乡代理也会将包转发到该移动节点。

家乡代理可能不必为移动节点配置物理子网。但是,家乡代理在准许注册时,必须能够通过 mipagent.conf 文件或某种其他机制来识别移动节点的家乡地址。有关 mipagent.conf 的更多信息,请参阅创建移动 IP 配置文件

家乡代理可以通过在 mipagent.conf 文件中配置具有专用地址的移动节点来支持这些节点。家乡代理使用的家乡地址必须唯一。

动态家乡代理搜索

在某些情况下,当移动节点尝试注册时,它可能不知道家乡代理的地址。如果移动节点不知道家乡代理的地址,则它可以使用动态的家乡代理地址解析来获知该地址。在这种情况下,移动节点可将注册请求的家乡代理字段设置为其家乡网络的子网定向的广播地址。每个家乡代理在收到包含广播目标地址的注册请求后,都会通过返回一个拒绝注册回复来拒绝移动节点的注册。这样,当移动节点下次尝试注册时,它可使用拒绝回复中指明的家乡代理的单点传送 IP 地址。

在移动节点和其他代理之间相互路由数据报

本节介绍移动节点、家乡代理和外地代理如何协作,以针对连接到外地网络的移动节点路由数据报。有关 Solaris OS 中支持的移动 IP 功能,请参见Solaris 移动 IP 实现的概述

封装方法

家乡代理和外地代理使用可用的封装方法之一来支持使用隧道的数据报。所定义的封装方法包括 IP-in-IP 封装、最小封装和通用路由封装。包含外地代理和家乡代理的方案或包含间接协同定位的移动节点和家乡代理的方案必须支持相同的封装方法。所有的移动 IP 实体都是支持 IP-in-IP 封装所必需的。

单点传送数据报路由

在外地网络上注册后,移动节点将使用下列规则来选择缺省路由器:

广播数据报

家乡代理收到广播数据报或多点传送数据报后,仅会将这些数据报转发到已专门请求接收它们的移动节点。家乡代理如何将广播数据报和多点传送数据报转发到移动节点主要取决于两个因素。移动节点或者使用外地代理提供的转交地址,或者使用自己的协同定位转交地址。前者意味着数据报必须进行双重封装。第一个 IP 数据包头用来标识要传送其数据报的移动节点。第一个 IP 数据包头在广播数据报或多点传送数据报中不存在。第二个 IP 数据包头即是通常的隧道头,用来标识转交地址。如果是后者,则移动节点对自己的数据报解除封装,从而只需通过常规隧道发送数据报。

多点传送数据报路由

要在移动节点访问外部子网时开始接收多点传送流量,可以通过下列任一方法将移动节点加入到多点传送组中:

多点传送路由取决于源 IP 地址。正在发送多点传送数据报的移动节点必须从该链路上的有效源地址发送数据报。因此,正在所访问的网络上直接发送多点传送数据报的移动节点必须使用协同定位的转交地址作为源 IP 地址。另外,移动节点还必须已经加入了与该地址相关联的多点传送组。同样,如果移动节点在漫游之前已经在其内部子网上加入了多点传送组,或者在漫游时通过指向其家乡代理的反向隧道加入了多点传送组,则必须使用移动节点的家乡地址作为多点传送数据报的源 IP 地址。因此,移动节点还必须通过使用其协同定位的转交地址或者通过外地代理的反向隧道,将这些数据报以反向隧道方式发送到其内部子网。

虽然看起来移动节点始终从它访问的子网加入效率会更高,但它仍然是移动节点。因此,移动节点每切换一次子网,都必须重复执行加入操作。对它来说,一种更高效的方法就是通过其家乡代理加入,这样就不必负担因重复加入而产生的开销。另外,还可能存在只能从内部子网加入的多点传送会话。其他注意事项也可能会强制移动节点以特定方式参与。

移动 IP 的安全注意事项

在许多情况下,移动计算机使用无线链接来连接到网络。无线链路特别容易受到被动窃听、主动重放攻击和其他主动攻击。

因为移动 IP 意识到它无法减少或消除此漏洞,所以移动 IP 会使用验证的形式来保护移动 IP 注册消息免受这些类型的攻击。所使用的缺省算法是 MD5,密钥的大小为 128 位。缺省的操作模式要求在要散列的数据前后都使用这个 128 位密钥。外地代理使用 MD5 来支持验证,还会使用 128 位或更多位的密钥以及手动密钥分发方法。移动 IP 可以支持多种验证算法、算法模式、密钥分发方法和密钥大小。

这些方法确实可防止移动 IP 注册消息被修改。不过,当移动 IP 实体收到与以前的移动 IP 注册消息重复的消息时,移动 IP 还会使用重放保护的形式来警告这些实体。如果未使用此保护方法,那么,当移动节点或其家乡代理接收注册消息时,两者可能会变得不同步。因此,移动 IP 需要对其状态进行更新。例如,通过外地代理注册移动节点时,家乡代理会收到一条重复的取消注册消息。

可通过称为 nonce时间标记的方法来确保实现重放保护。当前值和时间标记由家乡代理和移动节点在移动 IP 注册消息内进行交换。验证机制可保护当前值和时间标记不会更改。因此,如果家乡代理或移动节点收到重复的消息,则可将该消息丢弃。

使用隧道可能会产生重大漏洞,尤其是在注册未经过验证时。另外,地址解析协议 (Address Resolution Protocol, ARP) 也未经过验证,可能会用于窃取另一台主机的流量。