ISATAP
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:28f
(c000: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 XP、Windows Vista、Windows 7、Windows 8、Windows 10(但在1703更新中默认关闭,1803更新后会移除)[2]、Windows Server 2008、Windows Server 2012、Windows Mobile、Linux和Cisco IOS(自IOS 12.2(14)S、 IOS XE Release 2.1)[3]中实现。
由于专利权利要求,早期在KAME(*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协议号)使用防火墙来拦截。
参考文献
- ^ R. Hinden, S. Deering. RFC 4291: Section 2.2 - Text Representation of Addresses. IETF. February 2006 [2015-02-09]. (原始内容存档于2020-03-07).
- ^ lizap. Windows 10, version 1803 - Features that have been removed. docs.microsoft.com. [2018-05-28]. (原始内容存档于2018-05-09) (美国英语).
- ^ Cisco IOS IPv6 Command Reference. [2015-05-06]. (原始内容存档于2015-05-16).
- ^ 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).
- ^ Fred L. Templin. IPV6: Add RFC4214 support. 2007-11-29 [2015-02-09].
- ^ Sascha Hlusiak. ISATAP client for Linux. 2010 [2015-02-09]. (原始内容存档于2015-02-10).
- ^ itojun. Request to Publish ISATAP. v6ops Mailing List. 2002-12-25 [2015-02-09]. (原始内容存档于2016-03-06).
外部链接
- F. Templin, T. Gleeson, D. Thaler Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) RFC 5214, March 2008.
- http://www.isatap.org/(页面存档备份,存于互联网档案馆)