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协议号)使用防火墙来拦截。
参考文献
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.