论文部分内容阅读
随着网络技术的不断发展,越来越多的企业拥有了自己的异地分支机构,如何实现彼此之间的安全通信已成为越来越重要的课题。以IPsec协议为基础的虚拟专用网(VPN)技术为广域网上的安全通信提供了一种有效的解决方案。然而,目前的IPsec实现大都基于IPv4,具有开销大和“NAT穿越问题”等缺点,为了从根本上解决这些问题,需要IPv6协议,因为在该协议下:路由速度提高;IPsec实现简单;地址空间巨大、NAT问题不再存在。本文首先对VPN技术做了概述、分析了IPsec协议族,并对IPv6协议进行研究、指出了其相对于IPv4的优点、论述了IPsec在IPv6下实现的可行性。然后对Iinux内核中的IPsec模块NETKEY进行了深入分析,总结出了其基本框架和支持IPv6的关键技术。最后,本文对开源软件Openswan进行了源代码级的深入剖析,具体研究了其内核模块KLIPS、用户模块Pluto,对其主要函数做了详细的注释,总结出了其整体框架,并对比了KLIPS与NETKEY的优缺点。在对Openswan进行了深入的理论分析之后,本文提出了实现IPv6 IPsec VPN的总体思路:即利用Openswan的虚接口机制,结合NETKEY中支持IPv6的具体方法,实现IPv6 IPsec VPN。本文对Openswan中的冗余代码进行了删减,并去掉了NAT-T的支持模块,对IPv4的相关接口和数据结构进行了向IPv6的迁移,实现了IPv6协议下的虚接口模块、进入和外出处理模块、SPD模块、SAD模块、ESP模块、IKEv1模块和PF_KEYv2模块,最终完成了支持IPv6的VPN软件v6swan。最后在Linux平台上安装此软件,并在我校IPv6实验网上进行模拟测试,测试的数据表明,本文的v6swan方案是切实可行的。