使用openswan搭建IPV6 IPsec VPN隧道

Openswan是Linux下IPsec的最佳实现方式,我之前使用的版本是openswan-2.4.7,它最大的缺点是不支持IPV6,现在国家大力扶持IPV6项目,下一代互联网IPV6全面普及已近在咫尺。有关操作系统、内核、应用层软件对于IPV6的支持配置问题将会更加受到关注。

本文将介绍如何在Linux下从源码安装openswa-2.6.38,并配置建立IPV6静态隧道,最后测试受隧道保护的子网之间通信。

由于没有时间的ipv6环境(目前只有教育网有),因此有vmware来搭建环境测试。

1.实验环境

        1).VMware CentOS 5.4虚拟机一台, 使用虚拟机有一个好处:当你配置完一边后,通过VMware的clone工具克隆一个镜像作为隧道的另一端,这样就不需要在隧道另一端做重劳动,所以你只需安装配置一遍。        
        需要注意的是CentOS 5.4内核版本比较老,为2.6.18-164,我试了在该内核下无法插入openswan的ipsec.ko模块,一insmod 内核就崩溃,具体原因没有去查,看openswan的READE,应该需要打内核补丁,我先不管它了,使用上回编译的2.6.34.11内核。
        2).windows主机只要支持IPV6地址配置即可,我使用的是win7, xp是无法满足的。
        3).软件环境当然使用的就是今天的主角openswa-2.6.38了,这个版本应该是目前最新的,可以从其官方下载ftp://ftp.openswan.fi/pub/openswan/      
        4).VMware网络接口类型:bridged
        5).地址配置。
                windows主机,在本地链接中增加即可:99:1::165/64
                Linux:                     


                对端Linux:此设备要等会把这边安装完毕并配置好IPV6隧道后再clone再出来,所以此时还有这台设备,但为了方便起见把这台机器的IP地址先确定是可以的。
                       

2.安装opsneswan

可以通过包的管理安装亦可通过源码编译安装,版本不低于2.6.37即可,太低版本的不支持ipv6;vps上建议使用包来安装,毕竟编译安装需要消耗的资源稍大一点,下面主要说一下编译安装的方法

在编译之前请确保完成以下步骤:
       1,以内核2.6.34.11为例:


        2,执行 

删除内核的netkey支持

        现在可以开始编译openswan-2.6.38源码了
        解压


        执行:

 会把应用程序pluto,whack,tncfg等拷贝至/usr/local/libexec/ipsec/
        执行:

 会在./modobj26/目录生成ipsec.ko
        执行:

会把ipsec.ko拷贝至/lib/modules/2.6.34.11-topsec/kernel/net/ipsec/ipsec.ko

        最后执行:service ipsec restart 使用最近的ipsec.ko

        安装成功的标志,通过以下命令检查:

3.配置IPV6隧道

        1).配置密钥策略文件

只保留如下内容:


        2).配置隧道参数

内容如下:            

   
        此时一边的环境已配置完毕
        可以通过whack命令查看当前隧道状态,如果看到类似以下执行结果,表明成功:

4.克隆一个镜像

        系统此时的状态是最好不过的,只要克隆一个一样的镜像,我们只需改下IP地址,重启一下ipsec服务即可。
        具体操作:
        1).配置IP地址,如果使用ip -f inet6命令配置,当系统重启后IP地址就消失了,所以来这个一劳永逸的办法。

 

        2).配置密钥策略文件,只要把之前的两个IP地址倒个就行


                
        3).配置隧道参数,同样两端IP和保护子网地址倒个。

 内容如下:


        可能通过第3步的方法查看命令是否执行成功。
       
         可以先测试一下两台主机是否可以ping通:

5.协商并通信

        发现openswan-2.6-38协商速度超级慢,不知道什么原因?但最终可以协商成功。

说明隧道协商成功,其两端保护子网为77::/64和88::/64

        测试一下通信,成功。

       
总结:每次做开发和学习之前的环境搭建是最费时费力的,但所谓工欲善其事,必先利其器,把环境搭建好了,再去看代码时就会如鱼得水,代码看不懂加几个printf看看执行结果就容易弄懂了。

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注