isatap
IPv6转换传送机制
ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是一种IPv6转换传送机制,允许IPv6数据包通过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的十六进制值)。
邻居发现
由于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过渡技术基本原理如图1所示。
双栈主机在与其他主机或路由器通信之前,首先要获得一个ISATAP地址。双栈主机先向ISATAP服务器发送路由请求,得到一个64位的IPv6地址前缀,然后再加上64位的接口标识符∷0:5EFE:X.X.X.X(这里的X.X.X.X是双栈主机的IPv4单播地址),这样就构成一个ISATAP地址。双栈主机配置了ISATAP地址后,就成了一个ISATAP客户机,进而就可以在IPv4域内和其他的ISATAP客户机进行通信了。一般来说,ISATAP地址的配置既支持无状态地址自动配置方式,也支持手工配置方式。
1.同一个IPv4域内ISATAP主机间的通信过程
在同一个IPv4域内,两台ISATAP客户机的通信过程如下:
①双栈主机1获得双栈主机2的ISATAP地址后,将需要发送的数据包交给ISATAP接口进行发送;
②ISATAP从该数据包的IPv6源地址和目的地址中提取出相应的IPv4源和目的地址,并对该数据包用IPv4头部进行封装;
③封装后的数据包按照其IPv4目的地址被发送到双栈主机2;
④双栈主机2接收到该数据包后对其解封装,得到原始IPv6数据包;
⑤双栈主机2通过与上述过程类似的过程将应答数据返回给双栈主机1。
从上面的通信过程中我们可以看出,ISATAP实际上是将IPv4网络作为一个承载平台,通过在其上面建立一个IPv6-in-IPv4自动隧道来完成IPv6通信的。
2. ISATAP主机与其他网络之间的通信过程
ISATAP主机除了可以在ISATAP域内与其他ISATAP主机通信外,还可以通过ISATAP路由器实现与其他网络的通信。比如,ISATAP主机就可以通过ISATAP路由器与IPv6网络中的IPv6服务器进行通信,其通信原理如图2所示,通信过程如下:
①ISATAP主机获得ISATAP地址(站点本地地址),并将下一跳跃点next hop 设为ISATAP路由器的ISATAP地址(站点本地地址);
②当ISATAP主机送出目的地为所在子网络以外的地址时,ISATAP先将IPv6数据包进行IPv4封装,然后以隧道方式送到ISATAP 路由器的IPv4地址
③ISATAP路由器除去IPv4包头后,将IPv6 数据包转送给IPv6网络中的目的IPv6服务器;
④IPv6服务器直接将应答的IPv6数据包发回给ISATAP网络;
⑤在应答IPv6数据包经过ISATAP路由器时,ISATAP路由器先将应答IPv6数据包进行IPv4封装,然后再转发给ISATAP主机;
⑥ISATAP主机收到应答数据包后,将数据包去掉IPv4包头,恢复成原始IPv6数据包。
通过上述步骤,ISATAP主机与IPv6网络中的IPv6服务器完成了一次完整的数据通信过程。
ISATAP过渡技术
ISATAP过渡技术通过IPv6的邻居发现机制(参见IETF RFC 2461)来实现路由重定向、邻居不可达检测(NUD)和路由下一跳选择。
ISATAP地址的获得是由链路层IPv4地址通过静态计算得到的。在获得了ISATAP地址之后,主机通过发送邻居请求和接收邻居宣告消息来确认邻居是否可达。另外,主机还需要执行邻居不可达检测。因为是在某一个ISATAP域内实现的,所以它假设IPv4地址是不重复的,这样ISATAP地址也就不需要进行重复地址检测。
ISATAP节点在执行路由器和前缀发现时,除了使用邻居发现中的数据结构前缀列表和默认路由器列表外,ISATAP链路还增加了一个新的数据结构——潜在路由器列表(PRL),以及一个新的配置变量PrlRefreshInterval。潜在路由器列表列出潜在的、可供ISATAP节点使用的路由器;变量PrlRefreshInterval用来设置初始化之后连续两次PRL重新刷新的间隔秒数。
ISATAP过渡技术具有如下优点:
①ISATAP过渡技术所使用的IPv6地址前缀可以是任何合法的IPv6 单点传播的64 位前缀,包括全球性地址前缀(以2001:,2002:,3ffe:开头)、链路本地前缀(以fe80:开头)和站点本地前缀(以fec0: 开头)等等,这使得该项技术很容易与其他过渡技术结合起来使用,尤其是在和6 to 4隧道技术相结合使用时,可以使内部网的双栈主机非常容易地接入IPv6主干网;
②ISATAP过渡技术不要求隧道端节点必须具有全球惟一的IPv4地址,只要双栈主机具有IPv4单播地址即可,不管该地址公有的还是私有的都可以。这样也就有效地避免了IPv4地址不足的问题;
③ISATAP过渡技术不需要站点提供特殊的IPv4服务(例如多播等),实现起来简便易行;
④使用ISATAP过渡技术时,在边界网关上不影响聚合范围的情况下,能够在IPv4站点内部署新的IPv6主机,因此可用于内部私有网中各双栈主机之间进行IPv6通信。
应对策略
由于ISATAP使用隧道技术,所以隧道技术所面临的网络安全问题也同样是ISATAP所面临的网络安全问题,它最容易受到的攻击就是地址欺骗攻击。如果不加防范,可以很容易地通过地址欺骗攻击将大量的协议类型为41的数据包注入到ISATAP链路中。ISATAP 网络所受到的地址欺骗攻击可能来自于ISATAP 网络外部。由于在整个IPv4 站点中都使用ISATAP链路,所以对于来自于站点外的攻击可以通过严格限制对站点的访问来限制对链路的访问,也就是要考虑在网络入口处的数据过滤问题,通过在站点的边界路由器入口处执行IPv4数据过滤、IPv6数据过滤和协议类型为41的数据包过滤来保证。
ISATAP 网络所受到的地址欺骗攻击也可能来自于ISATAP 网络内部。站点内的地址欺骗攻击可以通过一个伪装成路由器节点来进行,ISATAP网络内部所有的ISATAP主机都处于相同的链路上,这种来自于相同链路上的攻击很难防止,尤其是在ISATAP网络内部存在大量主机的时候。考虑到在PRL中提供了路由器ISATAP 公布的IPv4接口地址,所以可以将这些地址用在安全防范的策略之中。可是,这种防范方法需要保证随时更新PRL数据,这个操作通过手工实现几乎是不可能的,而还没有更好的自动实现的解决方案,这也就成了ISATAP技术的最大弱点。
再有,由于站点内的所有ISATAP主机都在同一个IPv6链接上,尽管可以像通常一样在ISATAP路由器处监控流量,但是由于ISATAP路由器处于站点的边缘,而且在站点内的主机之间通过ISATAP链路传输的包并不经过该路由器,因此根本没有办法监控和排除出现内部攻击的可能性。为了有效地防止来自于ISATAP站点内源IPv6地址欺骗的攻击,需要在路由器的ISATAP接口上启用缓解地址欺骗攻击的安全机制,至少ISATAP站点的边界网关必须记录地址欺骗源地址的来源。这样,一旦出现了地址欺骗攻击,还可以利用这些记录进行分析,并能够很快地找出产生地址欺骗攻击的源头。
由于ISATAP技术使用RFC 2461所述的邻居发现协议,而邻居发现协议最容易受到的攻击是拒绝服务(DoS)攻击。因此,这方面的安全问题也需要加以考虑。有关这方面的具体防范措施可参考IETF RFC 2461中的“安全考虑(Security Considerations)”一节。
实现
ISATAP已经在MicrosoftWindows XPWindows VistaWindows 7Windows 8Windows 10(但在1703更新中默认关闭,1803更新后会移除)、Windows Server 2008Windows Server 2012Windows MobileLinuxCisco IOS(自IOS 12.2(14)S、 IOS XE Release 2.1)中实现。
由于专利权利要求,早期在KAME(*BSD)和USAGI(Linux)的内核实现被移除过,然而,IETF知识产权披露搜索引擎报道,该侵权专利的持有者不需要实现者的许可。Linux内核自2.6.35版本实现了内核支持,并提供了一个用户空间配置工具isatapd。对于之前的Linux内核,开源项目Miredo提供了一个不完整的用户空间实现,之后版本1.1.6中被移除。
批评
ISATAP通过查询DNS来构建PRL,因此,对应于OSI模型,其依赖于一个高层协议来构建低层协议。其依赖于IPv4的DNS来避免循环,而不是IPv6路由的构建。然而,有些网络专家认为这这违反了他们认为普遍接受的设计原则,并进一步声称这些违规行为会导致协议不健全。
ISATAP有着和6over4一样的安全风险,也就是IPv4虚拟链路需要在网络边缘被小心地分隔开,以便外部IPv4主机不能假装成为ISATAP链路的一部分。通常是通过将IP协议号为41的IP包(也就是6in4等所使用的IP协议号)使用防火墙来拦截。
参考资料
最新修订时间:2022-08-25 17:21
目录
概述
运行方法
参考资料