系统管理指南:IP 服务

第 29 章 移动 IP 文件和命令(参考)

本章介绍移动 IP 的 Solaris 实现所提供的组件。要使用移动 IP,必须首先使用本章中介绍的参数和命令来配置移动 IP 配置文件。

本章包含以下信息:


注 –

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


Solaris 移动 IP 实现的概述

移动代理软件将家乡代理与外地代理功能合并在一起。Solaris 移动 IP 软件不提供客户机移动节点,而仅提供代理功能。每个可支持移动的网络至少应有一台运行该软件的静态(非移动)主机。

Solaris 移动 IP 实现中可支持下列 RFC 中所述的功能:

基本移动 IP 协议 (RFC 2002) 无法解决可伸缩密钥分发的问题,它将密钥分发视为正交问题。Solaris 移动 IP 软件仅使用在配置文件中指定的手动配置的密钥。

Solaris 移动 IP 实现中不支持以下 RFC 功能:

Solaris 移动 IP 实现中不支持以下功能:

有关其他信息,请参见 mipagent(1M) 手册页。

移动 IP 配置文件

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 的配置文件并将其放在 /etc/inet 目录中,然后才能实现移动 IP。此文件包含可满足移动 IP 实现要求的配置设置。此外,还可以选择其中一个样例配置文件,使用您的地址和安全设置对其进行修改,然后将其复制到 /etc/inet/mipagent.conf 中。

有关更多信息,请参见如何创建移动 IP 配置文件

mipagent.conf-sample 文件

下面列出了 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 文件中的各个部分、标签和值。配置文件的部分和标签介绍了语法以及各个部分、标签和值。

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.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

配置文件的部分和标签

移动 IP 配置文件包含以下各部分:

GeneralGlobalSecurityParameters 部分包含与移动 IP 代理的操作相关的信息。这些部分在配置文件中只能出现一次。

General 部分

General 部分仅包含一个标签: 配置文件的版本号。General 部分的语法如下:


[General]
     Version = 1.0

Advertisements 部分

Advertisements 部分包含 HomeAgentForeignAgent 标签以及其他标签。提供移动 IP 服务的本地主机上的每个接口必须包括一个不同的 Advertisements 部分。Advertisements 部分的语法如下:


[Advertisements interface]
     HomeAgent = <yes/no>
     ForeignAgent = <yes/no>
     .
     .

通常,系统有一个接口,如 eri0hme0,并且同时支持家乡代理操作和外地代理操作。如果示例 hme0 存在这种情况,则可按如下所示向 HomeAgentForeignAgent 标签指定 yes 值:


[Advertisements hme0]
     HomeAgent = yes
     ForeignAgent = yes
     .
     .

对于通过动态接口的通告,可针对设备 ID 部分使用“*”。例如,Interface-name ppp* 实际上是指启动 mipagent 守护进程之后配置的所有 PPP 接口。动态接口类型的通告部分中的所有属性保持不变。

下表介绍了可在 Advertisements 部分中使用的标签和值。

表 29–1 Advertisements 部分的标签和值

标签 

值 

说明 

HomeAgent

yesno

确定 mipagent 守护进程是否提供家乡代理功能。

ForeignAgent

yesno

确定 mipagent 是否提供外地代理功能。

PrefixFlags

yesno

指定通告中是否包括可选的前缀长度扩展。

AdvertiseOnBcast

yesno

如果为 yes,则将在 255.255.255.255 而非 224.0.0.1 上发送通告。

RegLifetime

n

注册请求中接受的最大生命周期值(以秒为单位)。

AdvLifetime

n

在没有其他通告的情况下,该通告被视为有效的最长时间(以秒为单位)。

AdvFrequency

n

两个连续通告之间的时间(以秒为单位)。

ReverseTunnel

yesnoFAHAboth

确定 mipagent 是否提供反向隧道功能。

如果值为 yes,则表示外地代理和家乡代理均支持反向隧道连接。如果值为 no,则表示该接口不支持反向隧道连接。

如果值为 FA,则表示外地代理支持反向隧道连接。如果值为 HA,则表示家乡代理支持反向隧道连接。如果值为 both,则表示外地代理和家乡代理均支持反向隧道连接。

ReverseTunnelRequired

yesno

确定 mipagent 是否需要反向隧道功能,从而确定移动节点在注册过程中是否必须请求反向隧道。

如果值为 yes,则表示外地代理和家乡代理均需要反向隧道。如果值为 no,则表示该接口不需要反向隧道。

如果值为 FA,则表示外地代理需要反向隧道。如果值为 HA,则表示家乡代理需要反向隧道。

AdvInitCount

n

确定未经请求的通告的初始编号。缺省值为 1。仅当 AdvLimitUnsolicited yes 时,该值才有意义。

AdvLimitUnsolicited

yesno

允许或禁止有限数量的未经请求的通告通过移动接口。

GlobalSecurityParameters 部分

GlobalSecurityParameters 部分包含标签 maxClockSkewHA-FAauthMN-FAauthChallengeKeyDistribution。该部分的语法如下:


[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

mipagent 的本地时间和在注册请求中找到的时间之间可以接受的最大时间差(以秒为单位)。

HA-FAauth

yesno

指定注册请求和回复中是否必须存在 HA-FA 验证扩展

MN-FAauth

yesno

指定注册请求和回复中是否必须存在 MN -FA 验证扩展

Challenge

yesno

指定外地代理的移动通告中是否包括质询

KeyDistribution

files

必须设置为 files

Pool 部分

家乡代理可以为移动节点分配动态地址。动态地址分配是独立于 DHCP 在 mipagent 守护进程中完成的。可以通过请求家乡地址来创建可供移动节点使用的地址池。地址池是通过配置文件中的 Pool 部分配置的。

Pool 部分包含 BaseAddressSize 标签。Pool 部分的语法如下:


[Pool pool-identifier]
     BaseAddress = IP-address
     Size = size

注 –

如果您使用 Pool 标识符,则该标识符还必须存在于移动节点的 Address 部分中。


您可以使用 Pool 部分来定义可分配给移动节点的地址池。BaseAddress 标签用于设置池中的第一个 IP 地址。可以使用 Size 标签指定池中可用地址的数量。

例如,如果在池 10 中保留了从 192.168.1.1192.168.1.100 的 IP 地址,则 Pool 部分中具有以下项:


[Pool 10]
     BaseAddress = 192.168.1.1
     Size = 100

注 –

地址范围中不应包含广播地址。例如,不应指定 BaseAddress = 192.168.1.200Size = 60,因为此范围包含广播地址 192.168.1.255


下表介绍了可在 Pool 部分中使用的标签和值。

表 29–3 Pool 部分的标签和值

标签 

值 

说明 

BaseAddress

n.n.n.n

地址池中的第一个地址

Size

n

池中的地址数量

SPI 部分

由于移动 IP 协议需要消息验证,因此必须使用安全参数索引 (security parameter index, SPI) 标识安全上下文。安全上下文可在 SPI 部分中定义。所定义的每个安全上下文必须包括一个不同的 SPI 部分。数字 ID 用于标识安全上下文。移动 IP 协议可保留前 256 个 SPI。因此,应仅使用大于 256 的 SPI 值。SPI 部分包含与安全相关的信息,如共享密钥和重放保护。

SPI 部分还包含 ReplayMethodKey 标签。SPI 部分的语法如下:


[SPI SPI-identifier]
     ReplayMethod = <none/timestamps>
     Key = key

进行通信的对等双方必须共享相同的 SPI 标识符,并且必须使用相同的密钥和重放方法对双方进行配置。可以将密钥指定为由十六进制数字组成的字符串。最大长度为 16 个字节。例如,如果密钥的长度为 16 个字节,其中包含 0f 之间的十六进制值,那么,密钥字符串可能与以下内容类似:


Key = 0102030405060708090a0b0c0d0e0f10

由于每个字节用两位数表示,因此密钥的位数一定为偶数。

下表介绍了可在 SPI 部分中使用的标签和值。

表 29–4 SPI 部分的标签和值

标签 

值 

说明 

ReplayMethod

nonetimestamps

指定用于 SPI 的重放验证的类型

Key

x

以十六进制形式表示的验证密钥

Address 部分

Solaris 移动 IP 实现允许您使用以下三种方法之一配置移动节点。每种方法都在 Address 部分中配置。第一种方法遵循传统的移动 IP 协议,要求每个移动节点都有一个家乡地址。第二种方法允许通过移动节点的网络访问标识符 (Network Access Identifier, NAI) 来标识该移动节点。最后一种方法允许配置缺省移动节点,具有正确的 SPI 值和相关密钥资料的任何移动节点都可用作缺省移动节点。

移动节点

移动节点的 Address 部分包含用来定义地址类型和 SPI 标识符的 TypeSPI 标签。Address 部分的语法如下:


[Address address]
     Type = node
     SPI = SPI-identifier

每个受支持的移动节点在家乡代理的配置文件中必须包括一个 Address 部分。

如果外地代理和家乡代理之间需要移动 IP 消息验证,则代理需要与之通信的每个对等方必须包括一个 Address 部分。

所配置的 SPI 值必须表示在配置文件中存在的 SPI 部分。

另外,还可以为移动节点配置专用地址。

下表介绍了可在移动节点的 Address 部分中使用的标签和值。

表 29–5 Address 部分的标签和值(移动节点)

标签 

值 

说明 

Type

node(节点)

指定该项适用于移动节点

SPI

n

指定关联项的 SPI 值

移动代理

移动代理的 Address 部分包含用来定义地址类型和 SPI 标识符的 TypeSPI 标签。移动代理的 Address 部分的语法如下:


[Address address]
     Type = agent
     SPI = SPI-identifier
     

每个受支持的移动代理在家乡代理的配置文件中必须包括一个 Address 部分。

如果外地代理和家乡代理之间需要移动 IP 消息验证,则代理需要与之通信的每个对等方必须包括一个 Address 部分。

所配置的 SPI 值必须表示在配置文件中存在的 SPI 部分。

下表介绍了可在移动代理的 Address 部分中使用的标签和值。

表 29–6 Address 部分的标签和值(移动代理)

标签 

值 

说明 

Type

agent

指定该项适用于移动代理 

SPI

n

指定关联项的 SPI 值 

由 NAI 标识的移动节点

由 NAI 标识的移动节点的 Address 部分包含 TypeSPIPool 标签。使用 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

指定关联项的 SPI 值

Pool

n

分配可从中指定移动节点地址的池

对于由 NAI 标识的移动节点,Address 部分中定义的 SPIPool 标签必须具有与其对应的 SPIPool 部分,如下图所示。

图 29–1 与由 NAI 标识的移动节点的 Address 部分相对应的 SPIPool 部分

显示 SPI 251 和 POOL 10 与 ADDRESS NAI 部分中相同的 SPI 和 POOL 编号相对应。

缺省的移动节点

缺省移动节点的 Address 部分包含 TypeSPIPool 标签。使用 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

指定关联项的 SPI 值

Pool

n

分配可从中指定移动节点地址的池

缺省移动节点的 Address 部分中定义的 SPIPool 标签必须有相对应的 SPIPool 部分,如下图所示。

图 29–2 与缺省移动节点的 Address 部分相对应的 SPIPool 部分

显示 SPI 251 和 POOL 10 与 ADDRESS NODE-DEFAULT 部分中具有相同编号的 SPI 和 POOL 相对应。

配置移动 IP 代理

可以使用 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 命令的过程。

移动 IP 的移动代理状态

可以使用 mipagentstat 命令显示外地代理的访问者列表和家乡代理的绑定表。另外,还可以显示与代理的移动代理对等方的安全关联。要显示外地代理的访问者列表,可以使用 mipagentstat 命令的 -f 选项。要显示家乡代理的绑定表,可以使用 mipagentstat 命令的 -h 选项。以下示例显示了使用带有这些选项的 mipagentstat 命令时的典型输出。


示例 29–1 外地代理的访问者列表


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.


示例 29–2 家乡代理的绑定表


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 命令的过程。

移动 IP 的状态信息

关机时,mipagent 守护进程会将内部状态信息存储在 /var/inet/mipagent_state 中。仅当 mipagent 作为家乡代理提供服务时,才会发生该事件。此状态信息包括可以作为家乡代理的移动节点列表、其当前转交地址以及剩余的注册生命周期。此状态信息还包括移动代理对等方的安全关联配置。如果终止 mipagent 守护进程以进行维护并重新启动,则可以使用 mipagent_state 重新创建尽可能多的移动代理内部状态,从而最大程度地减少可能正在访问其他网络的移动节点的服务中断。如果存在 mipagent_state,则每次启动或重新启动 mipagent 时,都会在读取 mipagent.conf 之后立即读取它。

移动 IP 的 netstat 扩展

netstat 命令中已添加了用来标识移动 IP 转发路由的移动 IP 扩展。具体来说,可以使用 netstat 命令显示名为 "Source-Specific" 的新路由表。有关更多信息,请参见 netstat(1M) 手册页。

以下示例显示了使用 -nr 标志时 netstat 的输出。


示例 29–3 netstat 命令的移动 IP 输出


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


移动 IP 的 snoop 扩展

snoop 命令中已添加了用来标识链路上移动 IP 流量的移动 IP 扩展。有关更多信息,请参见 snoop(1M) 手册页。

以下示例显示了在移动节点 mip-mn2 上运行的 snoop 的输出。


示例 29–4 snoop 命令的移动 IP 输出


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-mn2mip-fa2 发送注册请求,并接收相应的注册回复作为响应。注册回复表示移动节点已成功向其家乡代理进行了注册。