本章介绍移动 IP 的 Solaris 实现所提供的组件。要使用移动 IP,必须首先使用本章中介绍的参数和命令来配置移动 IP 配置文件。
本章包含以下信息:
在 Solaris 10 8/07 之后的 Solaris 10 更新中已删除移动 IP 功能。
移动代理软件将家乡代理与外地代理功能合并在一起。Solaris 移动 IP 软件不提供客户机移动节点,而仅提供代理功能。每个可支持移动的网络至少应有一台运行该软件的静态(非移动)主机。
Solaris 移动 IP 实现中可支持下列 RFC 中所述的功能:
基本移动 IP 协议 (RFC 2002) 无法解决可伸缩密钥分发的问题,它将密钥分发视为正交问题。Solaris 移动 IP 软件仅使用在配置文件中指定的手动配置的密钥。
Solaris 移动 IP 实现中不支持以下 RFC 功能:
家乡代理将多点传送流量或广播流量转发到正在访问外地网络的移动节点的外地代理
通过反向隧道路由广播数据报和多点传送数据报
专用转交地址或专用家乡代理地址
有关其他信息,请参见 mipagent(1M) 手册页。
mipagent 命令可在系统启动时从 /etc/inet/mipagent.conf 配置文件中读取配置信息。移动 IP 使用 /etc/inet/mipagent.conf 配置文件来初始化移动 IP 移动代理。配置和部署移动代理之后,移动代理会定期发出路由器通告,并响应路由器搜索请求消息以及移动 IP 注册消息。
有关文件属性的说明,请参见 mipagent.conf(4) 手册页。有关此文件的用法说明,请参见 mipagent(1M) 手册页。
移动 IP 配置文件由多个部分组成。每一部分都有一个唯一的名称并且用方括号括起来。每一部分包含一个或多个标签。可以使用以下格式为标签赋值:
[Section_name] Label-name = value-assigned |
配置文件的部分和标签介绍了各部分的名称、标签和可能值。
缺省的 Solaris 安装在 /etc/inet 目录中提供了下列样例配置文件:
mipagent.conf-sample-包含同时提供外地代理功能和家乡代理功能的移动 IP 代理的样例配置
mipagent.conf.fa-sample-包含仅提供外地代理功能的移动 IP 代理的样例配置
mipagent.conf.ha-sample-包含仅提供家乡代理功能的移动 IP 代理的样例配置
这些样例配置文件包含移动节点的地址和安全设置。必须先创建一个名为 mipagent.conf 的配置文件并将其放在 /etc/inet 目录中,然后才能实现移动 IP。此文件包含可满足移动 IP 实现要求的配置设置。此外,还可以选择其中一个样例配置文件,使用您的地址和安全设置对其进行修改,然后将其复制到 /etc/inet/mipagent.conf 中。
有关更多信息,请参见如何创建移动 IP 配置文件。
下面列出了 mipagent.conf-sample 文件中的各个部分、标签和值。配置文件的部分和标签介绍了语法以及各个部分、标签和值。
[General] Version = 1.0 # version number for the configuration file. (required) [Advertisements hme0] HomeAgent = yes ForeignAgent = yes PrefixFlags = yes AdvertiseOnBcast = yes RegLifetime = 200 AdvLifetime = 200 AdvFrequency = 5 ReverseTunnel = no ReverseTunnelRequired = no [GlobalSecurityParameters] MaxClockSkew = 300 HA-FAauth = yes MN-FAauth = yes Challenge = no KeyDistribution = files [Pool 1] BaseAddress = 10.68.30.7 Size = 4 [SPI 257] ReplayMethod = none Key = 11111111111111111111111111111111 [SPI 258] ReplayMethod = none Key = 15111111111111111111111111111111 [Address 10.1.1.1] Type = node SPI = 258 [Address mobilenode@sun.com] Type = node SPI = 257 Pool = 1 [Address Node-Default] Type = node SPI = 258 Pool = 1 [Address 10.68.30.36] Type = agent SPI = 257 |
下面列出了 mipagent.conf.fa-sample 文件中的各个部分、标签和值。配置文件的部分和标签介绍了语法以及各个部分、标签和值。
mipagent.conf.fa-sample 文件中显示的配置仅提供外地代理功能。此样例文件不包含 Pool 部分,因为仅有家乡代理才使用池。除此之外,此文件与 mipagent.conf-sample 文件完全相同。
[General] Version = 1.0 # version number for the configuration file. (required) [Advertisements hme0] HomeAgent = no ForeignAgent = yes PrefixFlags = yes AdvertiseOnBcast = yes RegLifetime = 200 AdvLifetime = 200 AdvFrequency = 5 ReverseTunnel = yes ReverseTunnelRequired = no [GlobalSecurityParameters] MaxClockSkew = 300 HA-FAauth = yes MN-FAauth = yes Challenge = no KeyDistribution = files [SPI 257] ReplayMethod = none Key = 11111111111111111111111111111111 [SPI 258] ReplayMethod = none Key = 15111111111111111111111111111111 [Address 10.1.1.1] Type = node SPI = 258 [Address 10.68.30.36] Type = agent SPI = 257 |
下面列出了 mipagent.conf.ha-sample 文件中的各个部分、标签和值。配置文件的部分和标签介绍了语法以及各个部分、标签和值。
mipagent.conf.ha-sample 文件中显示的配置仅提供家乡代理功能。除此之外,此文件与 mipagent.conf-sample 文件完全相同。
[General] Version = 1.0 # version number for the configuration file. (required) [Advertisements hme0] HomeAgent = yes ForeignAgent = no PrefixFlags = yes AdvertiseOnBcast = yes RegLifetime = 200 AdvLifetime = 200 AdvFrequency = 5 ReverseTunnel = yes ReverseTunnelRequired = no [GlobalSecurityParameters] MaxClockSkew = 300 HA-FAauth = yes MN-FAauth = yes Challenge = no KeyDistribution = files [Pool 1] BaseAddress = 10.68.30.7 Size = 4 [SPI 257] ReplayMethod = none Key = 11111111111111111111111111111111 [SPI 258] ReplayMethod = none Key = 15111111111111111111111111111111 [Address 10.1.1.1] Type = node SPI = 258 [Address mobilenode@sun.com] Type = node SPI = 257 Pool = 1 [Address Node-Default] Type = node SPI = 258 Pool = 1 |
General(必需)
Advertisements(必需)
GlobalSecurityParameters(可选)
Pool(可选)
SPI(可选)
Address(可选)
General 和 GlobalSecurityParameters 部分包含与移动 IP 代理的操作相关的信息。这些部分在配置文件中只能出现一次。
General 部分仅包含一个标签: 配置文件的版本号。General 部分的语法如下:
[General] Version = 1.0 |
Advertisements 部分包含 HomeAgent 和 ForeignAgent 标签以及其他标签。提供移动 IP 服务的本地主机上的每个接口必须包括一个不同的 Advertisements 部分。Advertisements 部分的语法如下:
[Advertisements interface] HomeAgent = <yes/no> ForeignAgent = <yes/no> . . |
通常,系统有一个接口,如 eri0 或 hme0,并且同时支持家乡代理操作和外地代理操作。如果示例 hme0 存在这种情况,则可按如下所示向 HomeAgent 和 ForeignAgent 标签指定 yes 值:
[Advertisements hme0] HomeAgent = yes ForeignAgent = yes . . |
对于通过动态接口的通告,可针对设备 ID 部分使用“*”。例如,Interface-name ppp* 实际上是指启动 mipagent 守护进程之后配置的所有 PPP 接口。动态接口类型的通告部分中的所有属性保持不变。
下表介绍了可在 Advertisements 部分中使用的标签和值。
表 29–1 Advertisements 部分的标签和值
GlobalSecurityParameters 部分包含标签 maxClockSkew、HA-FAauth、MN-FAauth、Challenge 和 KeyDistribution。该部分的语法如下:
[GlobalSecurityParameters] MaxClockSkew = n HA-FAauth = <yes/no> MN-FAauth = <yes/no> Challenge = <yes/no> KeyDistribution = files |
移动 IP 协议通过允许在消息中设置时间戳来提供消息重放保护。如果时钟不同,则家乡代理会向移动节点返回一个有关当前时间的错误,移动节点可以使用当前时间再次注册。可以使用 MaxClockSkew 标签配置家乡代理的时钟与移动节点的时钟之间相差的最大秒数。缺省值为 300 秒。
HA-FAauth 标签可启用或禁用家乡代理-外地代理验证的要求,MN-FAauth 标签可启用或禁用移动节点-外地代理验证的要求。缺省值为禁用。可以使用 challenge 标签,以便外地代理在其通告中向移动节点发出质询。该标签用于实现重放保护,其缺省值也为禁用。
下表介绍了可在 GlobalSecurityParameters 部分中使用的标签和值。
表 29–2 GlobalSecurityParameters 部分的标签和值
标签 |
值 |
说明 |
---|---|---|
MaxClockSkew |
n | |
HA-FAauth |
yes 或 no | |
MN-FAauth |
yes 或 no | |
Challenge |
yes 或 no | |
KeyDistribution |
files |
家乡代理可以为移动节点分配动态地址。动态地址分配是独立于 DHCP 在 mipagent 守护进程中完成的。可以通过请求家乡地址来创建可供移动节点使用的地址池。地址池是通过配置文件中的 Pool 部分配置的。
Pool 部分包含 BaseAddress 和 Size 标签。Pool 部分的语法如下:
[Pool pool-identifier] BaseAddress = IP-address Size = size |
如果您使用 Pool 标识符,则该标识符还必须存在于移动节点的 Address 部分中。
您可以使用 Pool 部分来定义可分配给移动节点的地址池。BaseAddress 标签用于设置池中的第一个 IP 地址。可以使用 Size 标签指定池中可用地址的数量。
例如,如果在池 10 中保留了从 192.168.1.1 至 192.168.1.100 的 IP 地址,则 Pool 部分中具有以下项:
[Pool 10] BaseAddress = 192.168.1.1 Size = 100 |
地址范围中不应包含广播地址。例如,不应指定 BaseAddress = 192.168.1.200 和 Size = 60,因为此范围包含广播地址 192.168.1.255。
标签 |
值 |
说明 |
---|---|---|
BaseAddress |
n.n.n.n | |
Size |
n |
由于移动 IP 协议需要消息验证,因此必须使用安全参数索引 (security parameter index, SPI) 标识安全上下文。安全上下文可在 SPI 部分中定义。所定义的每个安全上下文必须包括一个不同的 SPI 部分。数字 ID 用于标识安全上下文。移动 IP 协议可保留前 256 个 SPI。因此,应仅使用大于 256 的 SPI 值。SPI 部分包含与安全相关的信息,如共享密钥和重放保护。
SPI 部分还包含 ReplayMethod 和 Key 标签。SPI 部分的语法如下:
[SPI SPI-identifier] ReplayMethod = <none/timestamps> Key = key |
进行通信的对等双方必须共享相同的 SPI 标识符,并且必须使用相同的密钥和重放方法对双方进行配置。可以将密钥指定为由十六进制数字组成的字符串。最大长度为 16 个字节。例如,如果密钥的长度为 16 个字节,其中包含 0 至 f 之间的十六进制值,那么,密钥字符串可能与以下内容类似:
Key = 0102030405060708090a0b0c0d0e0f10 |
由于每个字节用两位数表示,因此密钥的位数一定为偶数。
表 29–4 SPI 部分的标签和值
标签 |
值 |
说明 |
---|---|---|
ReplayMethod |
none 或 timestamps | |
Key |
x |
Solaris 移动 IP 实现允许您使用以下三种方法之一配置移动节点。每种方法都在 Address 部分中配置。第一种方法遵循传统的移动 IP 协议,要求每个移动节点都有一个家乡地址。第二种方法允许通过移动节点的网络访问标识符 (Network Access Identifier, NAI) 来标识该移动节点。最后一种方法允许配置缺省移动节点,具有正确的 SPI 值和相关密钥资料的任何移动节点都可用作缺省移动节点。
移动节点的 Address 部分包含用来定义地址类型和 SPI 标识符的 Type 和 SPI 标签。Address 部分的语法如下:
[Address address] Type = node SPI = SPI-identifier |
每个受支持的移动节点在家乡代理的配置文件中必须包括一个 Address 部分。
如果外地代理和家乡代理之间需要移动 IP 消息验证,则代理需要与之通信的每个对等方必须包括一个 Address 部分。
所配置的 SPI 值必须表示在配置文件中存在的 SPI 部分。
另外,还可以为移动节点配置专用地址。
下表介绍了可在移动节点的 Address 部分中使用的标签和值。
表 29–5 Address 部分的标签和值(移动节点)
标签 |
值 |
说明 |
---|---|---|
Type |
node(节点) | |
SPI |
n |
移动代理的 Address 部分包含用来定义地址类型和 SPI 标识符的 Type 和 SPI 标签。移动代理的 Address 部分的语法如下:
[Address address] Type = agent SPI = SPI-identifier |
每个受支持的移动代理在家乡代理的配置文件中必须包括一个 Address 部分。
如果外地代理和家乡代理之间需要移动 IP 消息验证,则代理需要与之通信的每个对等方必须包括一个 Address 部分。
所配置的 SPI 值必须表示在配置文件中存在的 SPI 部分。
下表介绍了可在移动代理的 Address 部分中使用的标签和值。
表 29–6 Address 部分的标签和值(移动代理)
标签 |
值 |
说明 |
---|---|---|
Type |
agent |
指定该项适用于移动代理 |
SPI |
n |
指定关联项的 SPI 值 |
由 NAI 标识的移动节点的 Address 部分包含 Type、SPI 和 Pool 标签。使用 NAI 参数,可以通过移动节点的 NAI 来标识移动节点。使用 NAI 参数的 Address 部分的语法如下:
[Address NAI] Type = Node SPI = SPI-identifier Pool = pool-identifier |
要使用池,可以通过移动节点的 NAI 来标识移动节点。Address 部分允许您配置 NAI 而非家乡地址。NAI 采用格式 user@domain。可以使用 Pool 标签指定要使用哪个地址池来向移动节点分配家乡地址。
下表介绍了可在由 NAI 标识的移动节点的 Address 部分中使用的标签和值。
表 29–7 Address 部分的标签和值(由 NAI 标识的移动节点)
标签 |
值 |
说明 |
---|---|---|
Type |
node(节点) | |
SPI |
n | |
Pool |
n |
对于由 NAI 标识的移动节点,Address 部分中定义的 SPI 和 Pool 标签必须具有与其对应的 SPI 和 Pool 部分,如下图所示。
缺省移动节点的 Address 部分包含 Type、SPI 和 Pool 标签。使用 Node-Default 参数,可以允许所有移动节点在具有正确 SPI(在该部分中定义)的情况下获取服务。使用 Node-Default 参数的 Address 部分的语法如下:
[Address Node-Default] Type = Node SPI = SPI-identifier Pool = pool-identifier |
使用 Node-Default 参数可降低配置文件的大小。否则,每个移动节点都需要包含各自的部分。但是,Node-Default 参数会造成安全风险。如果由于某种原因而导致移动节点不再受信任,则需要更新有关所有受信任移动节点的安全信息。此任务可能非常繁琐。但是,可以在无需考虑安全风险的网络中使用 Node-Default 参数。
下表介绍了可在缺省移动节点的 Address 部分中使用的标签和值。
表 29–8 Address 部分的标签和值(缺省移动节点)
标签 |
值 |
说明 |
---|---|---|
Type |
node(节点) | |
SPI |
n | |
Pool |
n |
缺省移动节点的 Address 部分中定义的 SPI 和 Pool 标签必须有相对应的 SPI 和 Pool 部分,如下图所示。
可以使用 mipagentconfig 命令配置移动代理。使用此命令,可以在 /etc/inet/mipagent.conf 配置文件中创建或修改任何参数。具体来说,可以更改任何设置。另外,还可以添加或删除移动客户机、池和 SPI。mipagentconfig 命令的语法如下:
# mipagentconfig <command> <parameter> <value> |
下表介绍了可以与 mipagentconfig 一起用来在 /etc/inet/mipagent.conf 配置文件中创建或修改参数的命令。
表 29–9 mipagentconfig 子命令
命令 |
说明 |
---|---|
add |
用于向配置文件中添加通告参数、安全参数、SPI 和地址 |
change |
用于更改配置文件中的通告参数、安全参数、SPI 和地址 |
delete |
用于从配置文件中删除通告参数、安全参数、SPI 和地址 |
get |
用于显示配置文件中的当前值 |
有关命令参数和可接受值的说明,请参见 mipagentconfig(1M) 手册页。修改移动 IP 配置文件提供了使用 mipagentconfig 命令的过程。
可以使用 mipagentstat 命令显示外地代理的访问者列表和家乡代理的绑定表。另外,还可以显示与代理的移动代理对等方的安全关联。要显示外地代理的访问者列表,可以使用 mipagentstat 命令的 -f 选项。要显示家乡代理的绑定表,可以使用 mipagentstat 命令的 -h 选项。以下示例显示了使用带有这些选项的 mipagentstat 命令时的典型输出。
Mobile Node Home Agent Time (s) Time (s) Flags Granted Remaining --------------- -------------- ------------ --------- ----- foobar.xyz.com ha1.xyz.com 600 125 .....T. 10.1.5.23 10.1.5.1 1000 10 .....T. |
Mobile Node Home Agent Time (s) Time (s) Flags Granted Remaining --------------- -------------- ------------ --------- ----- foobar.xyz.com fa1.tuv.com 600 125 .....T. 10.1.5.23 123.2.5.12 1000 10 .....T. |
有关命令选项的更多信息,请参见 mipagentstat(1M) 手册页。显示移动代理的状态提供了使用 mipagentstat 命令的过程。
关机时,mipagent 守护进程会将内部状态信息存储在 /var/inet/mipagent_state 中。仅当 mipagent 作为家乡代理提供服务时,才会发生该事件。此状态信息包括可以作为家乡代理的移动节点列表、其当前转交地址以及剩余的注册生命周期。此状态信息还包括移动代理对等方的安全关联配置。如果终止 mipagent 守护进程以进行维护并重新启动,则可以使用 mipagent_state 重新创建尽可能多的移动代理内部状态,从而最大程度地减少可能正在访问其他网络的移动节点的服务中断。如果存在 mipagent_state,则每次启动或重新启动 mipagent 时,都会在读取 mipagent.conf 之后立即读取它。
netstat 命令中已添加了用来标识移动 IP 转发路由的移动 IP 扩展。具体来说,可以使用 netstat 命令显示名为 "Source-Specific" 的新路由表。有关更多信息,请参见 netstat(1M) 手册页。
以下示例显示了使用 -nr 标志时 netstat 的输出。
Routing Table: IPv4 Source-Specific Destination In If Source Gateway Flags Use Out If -------------- ------- ------------ --------- ----- ---- ------- 10.6.32.11 ip.tun1 -- 10.6.32.97 UH 0 hme1 -- hme1 10.6.32.11 -- U 0 ip.tun1 |
本示例显示了使用反向隧道的外地代理的路由。第一行表示目标 IP 地址 10.6.32.11 和传入接口 ip.tun1 选择 hme1 作为转发包的接口。第二行表示源自接口 hme1 和源地址 10.6.32.11 的任何包都必须转发到 ip.tun1。
snoop 命令中已添加了用来标识链路上移动 IP 流量的移动 IP 扩展。有关更多信息,请参见 snoop(1M) 手册页。
以下示例显示了在移动节点 mip-mn2 上运行的 snoop 的输出。
mip-mn2# snoop Using device /dev/hme (promiscuous mode) mip-fa2 -> 224.0.0.1 ICMP Router advertisement (Lifetime 200s [1]: {mip-fa2-80 2147483648}), (Mobility Agent Extension), (Prefix Lengths), (Padding) mip-mn2 -> mip-fa2 Mobile IP reg rqst mip-fa2 -> mip-mn2 Mobile IP reg reply (OK code 0) |
本示例显示移动节点从外地代理 mip-fa2 收到一个定期发送的移动代理通告。然后,mip-mn2 向 mip-fa2 发送注册请求,并接收相应的注册回复作为响应。注册回复表示移动节点已成功向其家乡代理进行了注册。