ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是一种IPv6转换传送机制,允许IPv6数据包通过IPv4网络上双栈节点传输。

不同于6over4,ISATAP视IPv4网络为一个非广播多路访问网络数据链路层,因此它不需要底层的IPv4网络基础设施来支持多播。

运行方法

ISATAP包含一种基于IPv4地址生成IPv6本地链路地址的方法,和基于IPv4网络的邻居发现机制。

地址产生

任何一个希望通过特定IPv4网络使用ISATAP的主机都可以建立虚拟的IPv6网络接口。将主机的IPv4地址比特串加上特定IPv6前缀作为接口的IPv6地址,对于全球单播地址使用fe80::0200:5efe:,对于专用网络地址则使用fe80::0000:5efe:。例如,一个主机IPv4地址为192.0.2.143,则其ISATAP接口的IPv6地址为fe80::0200:5efe:192.0.2.143,转为完整最短IPv6为fe80::200:5efe:c000:28fc000:28f为其IPv4地址192.0.2.143的十六进制值)。[1]

邻居发现

由于ISATAP将IPv4基础网络视为一个非广播或多播多路访问网络的数据链路层,不同于以太网,使其原有的ICMPv6邻居发现不能如常操作,使ISATAP比6over4的运作有所困难。

对于IPv6数据包来说,IPv4网络是它的物理链路层,由于其IPv6地址已经包含了作为链路层的地址,即IPv4地址,所以其无需进行邻居发现。但是缺少多播功能导致其无法进行路由自动发现,所以ISATAP主机必须配置一个潜在路由器列表(potential routers list,PRL),这列表中的路由器通常不需要使用ICMPv6的路由发现来寻获和确定其是否已在线可运行,并且其只进行单播地址自动配置(通常可以借此为ISATAP的接口自动配置到其他IPv6前缀)。

实际上,PRL是通过DNS查询获得,例如如果本地网络域名为example.com,可通过查询isatap.example.com。本地网络域名通过IPv4网路上的DHCP或者本地静态配置获得。

实现

ISATAP已经在Microsoft Windows XPWindows VistaWindows 7Windows 8Windows 10(但在1703更新中默认关闭,1803更新后会移除)[2]Windows Server 2008Windows Server 2012Windows MobileLinuxCisco IOS(自IOS 12.2(14)S、 IOS XE Release 2.1)[3]中实现。

由于专利权利要求,早期在KAME英语KAME project(*BSD)和USAGI(Linux)的内核实现被移除过,然而,IETF知识产权披露搜索引擎报道,该侵权专利的持有者不需要实现者的许可。[4]Linux内核自2.6.35版本实现了内核支持,[5]并提供了一个用户空间配置工具isatapd[6]对于之前的Linux内核,开源项目Miredo提供了一个不完整的用户空间实现,之后版本1.1.6中被移除。

批评

ISATAP通过查询DNS来构建PRL,因此,对应于OSI模型,其依赖于一个高层协议来构建低层协议。其依赖于IPv4的DNS来避免循环,而不是IPv6路由的构建。然而,有些网络专家认为这这违反了他们认为普遍接受的设计原则,并进一步声称这些违规行为会导致协议不健全。[7]

ISATAP有着和6over4一样的安全风险,也就是IPv4虚拟链路需要在网络边缘被小心地分隔开,以便外部IPv4主机不能假装成为ISATAP链路的一部分。通常是通过将IP协议号为41的IP包(也就是6in4等所使用的IP协议号)使用防火墙来拦截。

参考文献

  1. ^ R. Hinden, S. Deering. RFC 4291: Section 2.2 - Text Representation of Addresses. IETF. February 2006 [2015-02-09]. (原始内容存档于2020-03-07). 
  2. ^ lizap. Windows 10, version 1803 - Features that have been removed. docs.microsoft.com. [2018-05-28]. (原始内容存档于2018-05-09) (美国英语). 
  3. ^ Cisco IOS IPv6 Command Reference. [2015-05-06]. (原始内容存档于2015-05-16). 
  4. ^ Peter Marcotullio. SRI International's statement about IPR claimed in draft-ietf-ngtrans-isatap-24.txt. 2005-03-15 [2015-02-09]. (原始内容存档于2015-02-10). 
  5. ^ Fred L. Templin. IPV6: Add RFC4214 support. 2007-11-29 [2015-02-09]. 
  6. ^ Sascha Hlusiak. ISATAP client for Linux. 2010 [2015-02-09]. (原始内容存档于2015-02-10). 
  7. ^ itojun. Request to Publish ISATAP. v6ops Mailing List. 2002-12-25 [2015-02-09]. (原始内容存档于2016-03-06). 

外部链接