本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第11章,第11.3节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
RFC 4213定义了如下可以穿越纯IPv4架构在IPv6/IPv4节点之间建立隧道IPv6流量的隧道配置环境:
11.3.1 路由器到路由器
在路由器到路由器的隧道配置环境中,两个IPv6/IPv4路由器穿越纯IPv4架构连接到了两个支持IPv6的架构中。隧道端点在源和目的地址间相隔一跳。每个支持IPv6架构的路由都指向其边缘的IPv6/IPv4路由器。对于每个IPv6/IPv4路由器,都存在代表IPv6-over-IPv4隧道的隧道接口和使用隧道接口的路由。
注释
支持IPv6的架构中包含有IPv6连接,这个连接既可以是本地的,也可以是基于隧道的连接。而具有IPv6功能的架构会含有本地的IPv6连接。
图11-6所示为路由器到路由器的隧道。
这个隧道配置环境的示例包括如下内容。
11.3.2 主机到路由器和路由器到主机
在主机到路由器的隧道配置环境中,一台位于纯IPv4架构中的IPv6/IPv4主机使用IPv6-over-IPv4的隧道到达一台IPv6/IPv4路由器。隧道端点为源和目的地址间的第一跳。
在IPv6/IPv4节点上,有一个隧道接口代表IPv6-over-IPv4隧道的隧道接口和一条或多条使用该隧道接口的路由(通常是默认路由)。IPv6/IPv4节点会根据匹配的路由、隧道接口和IPv6/IPv4路由器的下一跳IPv6地址,来将IPv6数据包通过隧道进行传送。
在路由器到主机的隧道配置环境中,IPv6/IPv4路由器会创建一条IPv6-over-IPv4隧道以穿越IPv4架构并到达IPv6/IPv4节点。隧道端点为源和目的地址间的最后一跳。
在IPv6/IPv4路由器上,有一个隧道接口代表IPv6-over-IPv4隧道的隧道接口和使用该隧道接口的路由(通常是子网路由)。IPv6/IPv4路由器会根据匹配的子网路由、隧道接口和IPv6/IPv4节点的目的IPv6地址,来将IPv6数据包通过隧道进行传送。
图11-7所示为主机到路由器的隧道(对于纯IPv4架构中节点A到节点B的流量量)和路由器到主机的隧道(对于节点B到节点A传输的流量)。
主机到路由器和路由器到主机的示例包括如下内容。
11.3.3 主机到主机
在主机到主机的隧道配置环境中,位于纯IPv4架构中的IPv6/IPv4主机会使用IPv6-over-IPv4隧道,到达位于同一个纯IPv4架构中的另一个IPv6/IPv4节点。隧道端点位于整条路径的两端,源和目的节点相隔一跳。
每个IPv6/IPv4节点都有一个代表IPv6-over-IPv4隧道的接口。有一条路由用来表示目的节点位于由纯IPv4架构定义的同一个逻辑子网中。发送方主机会根据发送接口、链路中的子网路由以及目的地址,将IPv6流量通过隧道发送到目的。
图11-8所示为主机到主机的隧道。
主机到主机的隧道示例包括如下内容。
ISATAP主机之间跨越某机构的纯IPv4架构建立隧道。
6to4主机/路由器之间穿越IPv4 Internet通过隧道互相传送流量。
11.3.4 隧道类型
RFC 4213定义了如下隧道类型。
手动配置的隧道
手动配置的隧道需要人工配置本地和远程的隧道端点。在手动配置的隧道中,远程隧道端点的IPv4地址并不会内嵌或编码在目的IPv6地址的下一跳IPv6地址中。手动配置的隧道通常用于路由器到路由器的隧道。配置隧道接口的任务包括配置本地和远程隧道端点的IPv4地址,这些地址必须按照使用隧道接口的路由来人工指定。例如,使用手动配置的隧道,可以在不使用IPv6过渡技术(如ISATAP)的情况下,穿越纯IPv4内联网连接两个支持IPv6的测试实验室网络。
为了给Windows中的IPv6协议人工创建手动配置的隧道,需要使用如下命令:
netsh interface ipv6 add v6v4tunnel [interface=]Name[localaddress=] LocalIPv4Address [remoteaddress=]RemoteIPv4address
必须在隧道两端的路由器上都创建隧道接口并且添加使用隧道接口的路由。
例如,有两个测试实验室子网分别位于内联网的不同部分。路由器1连接到IPv6子网2001:db8:0:1::/64,并且IPv4地址是131.107.47.121。路由器2连接到IPv6子网2001:db8:0:2::/64,并且IPv4地址是157.54.9.211。图11-9所示为这个配置。
https://yqfile.alicdn.com/1b0cc2b01005215cfa106364a5b8fd25ae034447.png" >
为了在路由器1和路由器2之间配置一个隧道,要在路由器1上运行下列命令:
netsh interface ipv6 add v6v4tunnel TunnelTo2 131.107.47.121 157.54.9.211
netsh interface ipv6 add route 2001:db8:0:2::/64 TunnelTo2
同样,还要在路由器2上运行下列命令:
netsh interface ipv6 add v6v4tunnel TunnelTo1 157.54.9.211 131.107.47.121
netsh interface ipv6 add route 2001:db8:0:1::/64 TunnelTo1
自动隧道
自动隧道不需要手动配置。自动隧道的隧道端点由目的IPv6地址所使用的路由、隧道接口和下一跳地址决定。Windows的IPv6协议支持下列自动隧道技术。
在 Windows的自动隧道技术中,发送或转发节点会从下述内容中判断出IPv6-over-IPv4隧道的端点。
远程隧道端点的IPv4地址嵌入或编码在下一跳IPv6地址中(该地址对应目的IPv6地址的匹配路由)。
本地隧道端点的IPv4地址会通过到达目的IPv4地址(即远程隧道端点)的最佳源IPv4地址来进行判断。