跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:IP 服务 Oracle Solaris 11 Information Library (简体中文) |
20. Oracle Solaris 中的 IP 过滤器(概述)
当中间网络不支持域中的协议时,IP 隧道提供了一种在这些域之间传输数据包的方式。例如,由于引入了 IPv6 协议,在大多数网络使用 IPv4 协议的环境中,IPv6 网络需要一种方式来与其边界外部通信。使用隧道使通信变得可能。IP 隧道在可使用 IP 访问的两个节点之间提供了一个虚拟链路。因此,可使用该链路在 IPv4 网络上传输 IPv6 包,从而在两个 IPv6 站点之间实现 IPv6 通信。
在此 Oracle Solaris 发行版中,隧道管理已修订为与网络数据链路管理的新模型一致。现在,将使用新的 dladm 子命令创建和配置隧道。隧道现在还可以使用新管理模型的其他数据链路功能。例如,通过支持以管理方式选择的名称,可以为隧道指定有意义的名称。有关 dladm 子命令的更多信息,请参见 dladm(1M) 手册页。
隧道连接涉及将 IP 包封装到其他包中。通过此封装操作,包可以通过不支持包协议的中间网络到达其目标。
根据包封装的类型,隧道会有所不同。Oracle Solaris 支持以下类型的隧道:
IPv4 隧道-IPv4 或 IPv6 包将封装于 IPv4 数据包头中并发送到预配置的单播 IPv4 目标。为了更具体地说明流经隧道的包,IPv4 隧道也称为 IPv4 over IPv4 隧道或 IPv6 over IPv4 隧道。
IPv6 隧道-IPv4 或 IPv6 包将封装于 IPv6 数据包头中并发送到预配置的单播 IPv6 目标。为了更具体地说明流经隧道的包,IPv6 隧道也称为 IPv4 over IPv6 隧道或 IPv6 over IPv6 隧道。
6to4 隧道-IPv6 包将封装于 IPv4 数据包头中并发送到自动按包确定的 IPv4 目标。确定的依据基于 6to4 协议中定义的算法。
具有 IPv6 域的大多数站点通过遍历 IPv4 网络与其他 IPv6 域通信,这比仅 IPv6 网络更普遍。下图说明两个 IPv6 主机之间通过 IPv4 路由器(在该图中用 "R" 指示)的隧道连接机制。
图 6-1 IPv6 隧道连接机制
在图中,隧道由两个路由器组成,这两个路由器配置为可通过 IPv4 网络建立虚拟的点对点链路。
IPv6 包封装于 IPv4 包内。IPv6 网络的边界路由器可以设置经由各种 IPv4 网络到达目标 IPv6 网络的边界路由器的点对点隧道。包通过隧道传输到目标边界路由器,将在该路由器中对包取消封装,然后,路由器将单独的 IPv6 包转发到目标节点。
Oracle Solaris 包括 6to4 隧道作为首选中间方法,以实现从 IPv4 到 IPv6 寻址的转换。通过 6to4 隧道,隔离的 IPv6 站点可以通过不支持 IPv6 的 IPv4 网络跨自动隧道进行通信。要使用 6to4 隧道,必须将 IPv6 网络上的边界路由器配置为 6to4 自动隧道的一个端点。这样,6to4 路由器便可以参与通往另一个 6to4 站点的隧道,如果需要的话,还可以参与通往本地非 6to4 IPv6 站点的隧道。
本节提供有关下列 6to4 主题的参考资料:
6to4 隧道的拓扑
通过 6to4 隧道的包流的说明
6to4 路由器和 6to4 中继路由器之间隧道的拓扑
配置 6to4 中继路由器支持之前的注意事项
下表介绍用来配置 6to4 隧道的额外任务,以及获得额外有用信息的资源。
|
6to4 隧道提供到任何位置的所有 6to4 站点的 IPv6 连接。 如果 6to4 隧道配置为向中继路由器转发,该隧道也同样提供到所有 IPv6 站点的连接(包括本地 IPv6 Internet)。下图显示了 6to4 隧道如何提供两个 6to4 站点之间的连接。
图 6-2 两个 6to4 站点之间的隧道
该图描述了两个隔离的 6to4 网络,即站点 A 和站点 B。每个站点都配置了具有到 IPv4 网络的外部连接的路由器。跨 IPv4 网络的 6to4 隧道可以连接两个 6to4 站点。
必须至少配置一个路由器接口来支持 6to4,才能让 IPv6 站点成为 6to4 站点。此接口必须提供与 IPv4 网络的外部连接。在 qfe0 上配置的地址必须全局唯一。在上图中,边界路由器 A 的 qfe0 接口将站点 A 连接到 IPv4 网络。只有在用 IPv4 地址配置 qfe0 接口后,才能将 qfe0 配置为 6to4 伪接口。
在上图中,6to4 站点 A 由两个子网组成,这些子网连接到路由器 A 上的 hme0 和 hme1 接口。站点 A 的任一子网上的所有 IPv6 主机会在接收到来自路由器 A 的通告时重新配置为具有 6to4 派生的地址。
站点 B 是另一个隔离的 6to4 站点。为了正确地从站点 A 接收通信,必须在站点 B 上配置边界路由器以支持 6to4。否则,路由器从站点 A 接收的包将因无法识别而被丢弃。
本节介绍从一个 6to4 站点上的主机到远程 6to4 站点上的主机之间的包流。此方案使用图 6-2 中显示的拓扑。而且,它还假定已经配置了 6to4 路由器和 6to4 主机。
6to4 站点 A 的子网 1 上的主机发送传输请求,6to4 站点 B 上的主机作为目标。每个数据包头中均有 6to4 派生的源地址和 6to4 派生的目标地址。
站点 A 的路由器将每个 6to4 包封装到 IPv4 数据包头中。在该过程中,路由器将 IPv4 封装数据包头的目标地址设置为站点 B 的路由器地址。对于每个流经隧道接口的 IPv6 包,其 IPv6 目标地址同时也包含 IPv4 目标地址。因此,路由器将能够确定 IPv4 封装数据包头上设置的 IPv4 目标地址。路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。
包通过的任何 IPv4 路由器都使用包的 IPv4 目标地址进行转发。此地址是路由器 B 上某个接口的全局唯一 IPv4 地址,该接口还充当 6to4 伪接口。
来自站点 A 的包到达路由器 B,路由器 B 对 IPv4 数据包头中的 IPv6 包取消封装。
路由器 B 随后使用 IPv6 包中的目标地址将包转发到站点 B 上的接收主机。
6to4 中继路由器充当某些隧道的一个端点,这些隧道的另一个端点是需要与本地非 6to4 IPv6 网络通信的 6to4 路由器。本质上,中继路由器是 6to4 站点和本地 IPv6 站点之间的桥梁。因为此解决方案可能很不安全,所以,在缺省情况下,Oracle Solaris 不启用对 6to4 中继路由器的支持。但是,如果站点需要这样的隧道,可以使用 6to4relay 命令来启用下面的隧道连接方案。
图 6-3 从 6to4 站点到 6to4 中继路由器的隧道
在图 6-3 中,6to4 站点 A 需要与本机 IPv6 站点 B 上的节点通信。该图说明了从站点 A 到 IPv4 网络上 6to4 隧道的通信路径。该隧道将 6to4 路由器 A 和 6to4 中继路由器作为其端点。IPv6 站点 B 所连接到的 IPv6 网络位于 6to4 中继路由器的外部。
本节介绍从 6to4 站点到本地 IPv6 站点之间的包流。此方案使用图 6-3 中显示的拓扑。
6to4 站点 A 上的主机发送一个将本地 IPv6 站点 B 上的主机指定为目标的传输信号。每个包头中具有作为其源地址的 6to4 派生地址。目标地址是标准的 IPv6 地址。
站点 A 的 6to4 路由器将每个包封装到 IPv4 数据包头中,该 IPv4 数据包头将 6to4 中继路由器的 IPv4 地址作为其目标地址。6to4 路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。包遇到的任何 IPv4 路由器都会将包转发到 6to4 中继路由器。
物理位置距离站点 A 最近的任播 6to4 中继路由器检索以 192.88.99.1 任播组为目标的包。
注 - 6to4 中继路由器属于 6to4 中继路由器任播组,它的 IP 地址为 192.88.99.1。此任播地址是 6to4 中继路由器的缺省地址。如果您需要使用特定的 6to4 中继路由器,则可以覆盖缺省设置并指定该路由器的 IPv4 地址。
该中继路由器会对 6to4 包中的 IPv4 数据包头取消封装,并显示本地 IPv6 目标地址。
然后,中继路由器仅将 IPv6 包发送到 IPv6 网络中,站点 B 中的路由器最终将在该网络中检索到这些包。然后,路由器将这些包转发到目标 IPv6 节点。