Linux version 2.6.32-71.el6.i686 (mockbuild@c6b5.bsys.dev.centos.org) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) )
ipsec --version:Linux Openswan 2.6.38 (klips)
遇到的诸多问题:
安装完openswan之后,ipsec verify后有很多failed选项。
1.
checking for IPsec support in kernel [FAILED]
whack:Pluto is not running(no "/var/run/pluto/pluto.ctl") [FAILED]
如果出现的是这个问题,有三个可以尝试的解决方案,因为出现这个问题的原因不是一个问题造成的。
1)修改/etc/ipsec.conf文件,加进去一句话,version 2.0。(说实话,这有可能,但是一般openswan2.6.X的版本创建ipsec.conf的时候都会自动有2.0的说明)
2)执行ipsec setup start。如果执行完之后你再去看ipsec verify的结果,FAILED选项消失了,恭喜你,你没有遇到令人厌恶的第三种情况。
解释一下出现第二种情况的原因:ipsec 如果没有启动,它是暂时不会知道自己将会使用哪种内核栈的,有三种KLIPS,netkey和no stack。选择的依据是你的ipsec.conf文件里的protostack后边的选项,如果是auto,那么首选netkey,然后是KLIPS。否则就是protostack的结果。
3)造成这种情况的因素很多,我这里也只是结合自己的情况总结了一下,如果大家还有新的情况,希望可以交流。这种情况是当你ipsec setup start完了之后,你会看到你的键盘的除了小键盘锁的灯不亮,剩下两个灯一直在闪,然后虚拟机就挂掉了。目前遇到这种情况首先是重启虚拟机,就是那个reset按钮。经过了一整天的寻找解决办法,最后无意之间瞎猫撞上死耗子了。
先给大家说一下如果ipsec正常启动都应该有哪些东西,这样大家就可以比对着看看少了什么,然后分析问题的所在。
我觉得比较重要的几个东西如下:
1)/var/run/pluto/pluto.ctl
这个文件是pluto程序起来之后生成的。
2)ipsec0
使用ifconfig命令查看网络设备的时候可以看到一个ipsec0,这个接口不是平时就存在的,和eth那种不太一样。
这个是很重要的。网上如是说ipsec0:因为pluto守护进程在内部接口上监听,所以外部接口不能直接访问守护进程,pluto守护进程必须通过ipsec0接口才能访问。
我的解决方案:
修改了网卡的配置,就是修改/etc/sysconfig/network-scripts下的文件,需要注意的是可能会因为网卡有两三个混乱了造成的,因为使用ipsec加密数据的时候我们需要设置网关IP的,所以这里很可能出现问题的。
2.
Pluto listening for IKE on udp 500 [FAILED]
Pluto listening for NAT-T on udp 4500 [FAILED]
Two or more interfaces found, checking IP forwarding [FAILED]
前两个failed归根结底是因为有一个pluto的守护进程没有起来。大家可以通过ps aux下查看有没有一个pluto的进程,你也许会看到./pluto_adns一个进程,如果没有pluto的话,出问题是肯定的。当pluto运行起来的时候,会在/var/run/pluto/文件夹下建立几个文件ipsec.info ipsec_setup.pid pluto.ctl pluto.pid这四个文件,其中如果没有pluto.ctl文件,出问题也是必需的。(一开始我尝试过手动建立这个文件,因为我看到错误信息上说是因为没有这个文件造成的,但是程序很清楚的看穿了我的意图,虽然不再提示没有pluto.ctl文件,但是告诉我,这个文件似乎有点不对劲)。
我们可以通过ipsec whack --status命令查看一些相关的信息。