标题：isatap
简介
ISATAP ( Intra-Site Automatic Tunnel Addressing Protocol，站内自动隧道寻址协议)是一种地址分配和主机到主机、主机到路由器和路由器到主机的自动隧道技术，它为IPv6主机之间提供了跨越IPv4内部网络的单播IPv6连通性 ISATAP一般用于IPv4网络中的IPv6/IPv4节点间的通信。ISATAP使用本地管理的接口标识符::0:5EFE:w.x.y.z，其中: 0: 5EFE部分是由Internet号码分配中心(IANA)所分配的机构单元标识符 (00-00-5E)和表示内嵌的IPv4地址类型的类型号(FE)组合而成的。 w.x.y.z部分是任意的单播IPv4地址，既可以是私有地址，也可以是公共地址。
特征
任何有效的IPv6单播地址的64位前缀都可以和ISATAP接口标识符相结合，它们包括链路本地地址前缀(FE80::/64)、全球前缀(包括6to4前缀)和 站点本地前缀。 
ISATAP地址中也包含了一个内嵌的IPv4地址，这一点与IPv4映射地址、6over4地址和6to4地址类似。内嵌的IPv4地址的作用是:在发往ISATAP地址的IPv6通信流通过隧道跨越了IPv4网络后，可用它来确定IPv4报头中的源IPv4地址或目标IPv4地址。
技术原理
ISATAP过渡技术基本原理如图1所示。
  
图1 ISATAP技术基本原理
双栈主机在与其他主机或路由器通信之前，首先要获得一个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所示，通信过程如下：
  
图2 ISATAP主机与IPv6网络中的IPv6服务器之间的通信过程
①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过渡技术通过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)”一节。