6to4是一种
IPv6转换传输机制,是将IPv6的数据包直接封装在
IPv4的数据包中,并通过内嵌于IPv6地址的
IPv4地址信息实现无需显式配置隧道就可以直接在IPv4网络上传输。同时一种特殊配置的中继路由允许其能与原生IPv6网络进行通信。
6to4定义了一个网络前缀2002::/16用于表达这是一个6to4网络整体,任何一个公共
IPv4地址将地址的十六进制值加在6to4网络前缀之后,从而产生一个前缀数为48的相应IPv4的6to4子网的网络前缀,而且其仍然可以继续分割至最小前缀数为64的子网段用于区分出这个6to4子网的子网。另外,
RFC1918所定义的专用网络地址不能用于6to4子网的申请,因为通信回应时无法将按照IPv4专用网络地址送回发起处。
例如,
IPv4地址192.0.2.4能够申请到2002:c000:0204::/48网络前缀(c000:0204为192.0.2.4的十六进制值),而48到64之间还有16位的地址空间可用于再划分更小的子网。
6to4的封装是使用6in4的封装,将IPv6的数据包直接跟接着IPv4的数据包头,并且IPv4数据包的协议号为41。IPv4数据包的源地址是派生自封装的IPv6数据包源地址中的内嵌IPv4地址,而目的地址则根据封装的IPv6数据包目的地址而不同。这些6to4的IPv4数据包如普通的IPv4一样在IPv4网络中路由转发。
为了使6to4网络的主机或网络能够与其他“原生”IPv6网络通信,这需要到“中继路由器(relay routers)”。这些路由器连接着IPv4和IPv6网络,会在IPv6网络对2002::/16进行路由宣告以使其他IPv6网络的流量能够通过这些路由器进行IPv4的封装和转发到相应目标的6to4网络。而6to4网络的IPv4出口侧需要一个
默认网关用于将6to4中已封装IPv6数据包的IPv4流量传入到IPv6网络,为了避免用户手工配置的麻烦,
RFC3068定义了一个
任播IPv4地址192.88.99.1,其可以配置给多个中继路由器,用于接受6to4已封装IPv6数据包的IPv4流量并将其解封后转发至IPv6之中,但由于无法解决的操作问题,此用法已被弃用。“6to4中继路由器”不一定就是“6to4边界路由器”。“
边界路由器”是支持一个6to4伪接口的IPv6路由器,用于宣告其IPv4对应6to4前缀。“中继路由器”则负责完整6to4网络与纯IPv6网络之间数据包的解封装。“中继路由器”应该对IPv6网络宣告整个2002::/16的路由而不区分基于IPv4的子网区分,避免IPv4的路由污染到IPv6的路由表。
如果使用6to4的站点有着固定的全域IPv4地址,则其6to4IPv6网络前缀也是固定的。可以通过6to4.nro.net网站向号码资源组织申请在2.0.0.2.ip6.arpaDNS域添加一个前缀48为单位的反向DNS委派域,可以自动化申请。