IPv6协议的转换与封装


很多人多会对IPv6的使用存在疑虑,不少的网络构建中都会对IPv4到IPv6的转换觉得头疼。但是,其实这个任务并不是很难,对于从v4到IPv6协议的转换就是隧道技术的体现和应用。介于这方面的内容,让我们从长计议。

从IPv4转换到IPv6的技术其实主要是隧道技术的应用;这是一项将IPv6数据包装入IPv4数据包的技术,因此这样的数据包可以在仅限IPv4的网络中进行传输。这些隧道也可以用于企业网络中(如穿越一些不支持IPv6的传统网络设备)。

当然,网络运营商和安全团队对并不赞成这样的提议。主要的原因是隧道技术可以将真正的IPv6数据包以及网络流分析器给出的与之相关的4层及以上的信息,还有安全ACL,QoS设置等统统隐藏起来。有传言称,使用IPv6 in IPv4的隧道技术作为一种控制方法会导致僵尸网络。简而言之,企业网络中,如果这样的通道不是刻意为之,那么就应该将其关闭。(注意:上面的表述仅限于企业网络,因为个人用户可能非常乐意将其操作系统连接至IPv6网络。)

所以,对于网管而言,最根本的问题在于是否能阻止所有通道。

就一些6to4或ISATAP通道来说,要回答这个问题并不难:只需用访问控制列表(ACL)阻止所有41协议即可,如:

  1. access-list deny 41 any any 

另一种通道是Teredo,它需要依赖UDP封装技术。Teredo使用的默认端口是3544。或许有人想使用如下的访问控制列表来解决:

  1. access-list deny udp any any eq 3544  
  2. access-list deny udp any eq 3544 any  

但是,上面的访问控制列表会被恰好需要使用3544端口的普通数据包错误拦截。此外,不法用户也可以改变UDP。这种情况下,思科Flexible Pattern Matching的功能和灵活性就有了用武之地:FPM可以根据指定的偏移量来检查任意数据包,且要在最大平台的软件中完成;也就是说,FPM只在合适的位置使用。找出Teredo数据包的技巧就是要搜索所有UDP数据包,目的是获取所有以2001::/32开头的Teredo IPv6协议的地址;请注意,此处我们使用的是/32,而不是/16,实际上,应该是2001:0::/32。还要对IP数据做进一步的检查。

完整的FPM配置如下:

  1. class-map type stack match-all cm-ip-udp  
  2. match field IP protocol eq 17 next UDP  
  3. class-map type access-control match-all cm-teredo1  
  4. match start udp payload-start offset 0 size 1 eq 0x60 mask 15  
  5. match start udp payload-start offset 8 size 4 eq 0x20010000  
  6. class-map type access-control match-all cm-teredo2  
  7. match start udp payload-start offset 0 size 1 eq 0x60 mask 15  
  8. match start udp payload-start offset 24 size 4 eq 0x20010000  
  9. policy-map type access-control pm-teredo  
  10. class cm-teredo1  
  11. drop  
  12. class cm-teredo2  
  13. drop  
  14. policy-map type access-control pm-udp-teredo  
  15. class cm-ip-udp  
  16. service-policy pm-teredo  

最后一个步骤是将这一服务策略应用到界面:

  1. interface GigabitEthernet1/36  
  2. service-policy type access-control in pm-udp-teredo  

最后,要请大家注意,另一种阻止所有通道的方法是指定所有网络主机上的配置以禁用通道。当然,这仅适用于企业网络。例如,在使用Vista系统IPv6协议的电脑中可以使用如下命令:

  1. netsh interface 6to4 set state state=disabled undoonstop=disabled 
  2. netsh interface isatap set state state=disabled 
  3. netsh interface teredo set state type=disabled 

相关内容