首页 > Linux > VPS上基于Debian搭建和配置pure IPsec支持iOS/Win7/Android等多平台VPN客户端

VPS上基于Debian搭建和配置pure IPsec支持iOS/Win7/Android等多平台VPN客户端

2012年12月12日 LTNS     访问次数 8,850 发表评论 阅读评论

前几天尝试了一下 VPS上基于Debian搭建和配置L2TP/IPsec VPN,但发现这个用openSwan + xl2tp实现的L2TP over IPsec对iOS自带VPN客户端的兼容性不好,为此改用strongSwan来配置pure IPsec,同时发现该软件还支持win7自带的VPN客户端,以及Android第三方的strongSwan VPN client(ICS 4.0之后的系统才能用)。

strongSwan默认同时开启了pluto(支持IKEv1)和charon(IKEv2)的daemon,前者可兼容iOS的自带VPN客户端;而后者可兼容win7自带的VPN客户端,以及Android第三方的strongSwan VPN客户端,这样就可实现对多平台VPN客户端的支持。

仍旧用Xen,还是Debian 6.0 Squeeze的操作系统,先更新一下源,然后安装编译环境

apt-get update
apt-get install build-essential     #编译环境
aptitude install libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev     #编译所需要的软件

本着求稳不求新的原则,下载strongSwan 4.x的最后一版v4.6.4并解压

cd /usr/src
wget http://download.strongswan.org/strongswan-4.6.4.tar.gz
tar zxvf strongswan-4.6.4.tar.gz
cd strongswan-4.6.4

接下来配置编译参数,按理应该不用指定那么多参数,但我为保险起见还是把和EAP相关的参数全部都指定了,有兴趣的可以试试哪些参数可以省去(详细的配置参数说明请见 官网

./configure --prefix=/usr --sysconfdir=/etc --enable-cisco-quirks --enable-openssl --enable-nat-transport --disable-mysql --disable-ldap --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2 --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-sim-pcsc --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls

然后是编译和安装

make
make install

strongSwan安装完成后,需要对 /etc/ipsec.conf 进行修改,我的配置如下

config setup
        charonstart=yes      
        plutostart=yes     #其实pluto和charon默认yes,不过保险起见我还是再设置一下
        nat_traversal=yes
        uniqueids=yes

conn ios
        keyexchange=ikev1
        authby=xauthpsk
        xauth=server
        left=%defaultroute
        leftsubnet=0.0.0.0/0
        leftfirewall=yes
        right=%any
        rightsubnet=10.11.0.0/24
        rightsourceip=10.11.0.0/24
        pfs=no
        auto=add

conn win7               #win7和android的配置一样
    keyexchange=ikev2
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftauth=pubkey
    leftcert=serverCert.pem
    leftid="C=CH, O=strongSwan, CN=VPS的公网ip"
    right=%any
    rightsourceip=10.11.1.0/24
    rightauth=eap-mschapv2
    rightsendcert=never
    eap_identity=%any
    auto=add

按照以往的经验,配置文件末尾需要多一个换行,否则启动ipsec时会提示

Starting strongSwan 4.6.4 IPsec [starter]…
(null):0: syntax error, unexpected $end, expecting EOL []
unable to start strongSwan — fatal errors in config

另外,配置文件中不能把某行简单地注释掉,比如注释 “aaaaaa#keyexchange=ikev2” 可以,但 “#aaaaaakeyexchange=ikev2” 或 “aaa#aaakeyexchange=ikev2” 的话,启动ipsec时就会提示出错

Starting strongSwan 4.6.4 IPsec [starter]…
/etc/ipsec.conf:8: syntax error, unexpected FIRST_SPACES [ ]
unable to start strongSwan — fatal errors in config

感觉strongSwan的这种小bug跟openswan一样,难道是它们都源自freeswan的关系?

还需要修改 /etc/strongswan.conf 文件,在charon项和pluto项里添加dns

# strongswan.conf - strongSwan configuration file

charon {
dns1 = 8.8.8.8
dns2 = 208.67.222.222
...
pluto {
dns1 = 8.8.8.8
dns2 = 208.67.222.222
...

修改 /etc/ipsec.secrets 文件,添加帐号,走IKEv1协议的设备用PSK认证方式,IKEv2用RSA方式

# this file is managed with debconf and will contain the automatically created private key

: PSK "自定义PSK密钥"
用户名1 : XAUTH "密码1"

: RSA serverKey.pem
用户名2 : EAP "密码2"

#include /var/lib/strongswan/ipsec.secrets.inc

注:对于走IKEv2的客户端如win7来说,我试了一下EAP或XAUTH格式的帐号都能用,而IKEv1的只能用XAUTH格式的,似乎是IKEv2向下兼容的缘故。

添加iptables命令,修改ip_forward以实现NAT,然后重启ipsec

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.11.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.11.0.0/24 -j ACCEPT
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -A POSTROUTING -s 10.11.1.0/24 -o eth0 -j MASQUERADE  #win7和android vpn客户端用
iptables -A FORWARD -s 10.11.1.0/24 -j ACCEPT      #win7和android vpn客户端用
 
ipsec restart

注:为避免VPS重启后NAT功能失效,可以把如上8行命令添加到 /etc/rc.local 文件中,添加在exit那一行之前即可。

现在iOS设备就可以在自带的VPN客户端中的cisco ipsec界面,填入VPS的公网ip,以及在 /etc/ipsec.secrets 文件中预设的 用户名1、密码1和自定义PSK密钥 ,保存后连接,就可以连上VPN服务器了。
iOS_vpn_client

如有出错,请检查 /var/log/auth.log 文件看看有什么出错提示。

 

win7和Android等平台的VPN客户端走ikev2协议,需要制作相应的证书,先生成ca证书

ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "C=CH, O=strongSwan, CN=strongSwan CA" --ca --outform pem > caCert.pem

然后是服务器端的证书

ipsec pki --gen --outform pem > serverKey.pem
ipsec pki --pub --in serverKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CH, O=strongSwan, CN=VPS的公网ip或域名" --san="VPS的公网ip或域名" --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem

注:对于IKEv2,如将来vpn客户端登录的是ip或域名,这里的CN项也必须对应ip或域名,IKEv1则不受此限制。使用域名比较方便,但有的移动运营商劫持了DNS可能导致vpn客户端无法访问域名,这样的话就只能是ip地址了。

客户端的证书

ipsec pki --gen --outform pem > clientKey.pem
ipsec pki --pub --in clientKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CH, O=strongSwan, CN=client" --outform pem > clientCert.pem

生成的客户端证书 clientCert.pem 不能直接导入到win7或Anroid设备中,需先转换为.p12格式。执行后会提示要设置证书使用密码,可以设置一下密码也可以直接回车(密码为空)。

openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out clientCert.p12

如有更多的vpn客户端需要证书,则建议制作不同的客户端证书

ipsec pki --gen --outform pem > client2Key.pem
ipsec pki --pub --in client2Key.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CH, O=strongSwan, CN=client" --outform pem > client2Cert.pem
openssl pkcs12 -export -inkey client2Key.pem -in client2Cert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out client2Cert.p12

这样,万一某个客户端的证书泄漏,只需在服务器端注销对应该客户端的证书即可,不影响其他vpn客户端的使用。

把证书复制到对应的目录中去

cp caCert.pem /etc/ipsec.d/cacerts/
cp serverCert.pem /etc/ipsec.d/certs/
cp serverKey.pem /etc/ipsec.d/private/

接下来进行在vpn客户端导入证书文件 clientCert.p12 的步骤,Android的导入比较简单,先把证书文件放到sdcard根目录,然后在 设置 > 安全 > 从存储设备安装证书 即可,按提示输入前面设置的证书使用密码。设备重启后证书生效,然后到google play里下载安装strongswan vpn client这个软件,在其中设置 用户名2、密码2,以及ikeav2的协议,就可以登录vpn服务器了。

而在win7端导入则稍麻烦些,可以按照网上的教程导入(无需重启,证书导入后即可生效),然后在win7自带的vpn客户端中设置一下,比如下面的链接。
http://www.vpncup.com/config/windows7-ikev2

至此多平台的vpn客户端基本就实现了,据说还支持黑莓自带的vpn客户端,手上没有黑莓手机所以就没测试。

 

补充1:
按如上的ipsec.conf配置后,启动ipsec时会在/var/log/auth.log文件里生成如下记录
Dec 12 02:29:00 (none) pluto[4565]: “/etc/ipsec.secrets” line 18: unrecognized key format: EAP
Dec 12 02:29:00 (none) pluto[4565]: added connection description “ios”

但却不影响使用,不知道到底是bug还是配置有问题。

 

补充2:
为方便VPN客户端的证书制作,可自制一个脚本,比如取名 /root/cc.sh ,内容如下,供参考

#!/bin/bash
   read -p "Please input username:" user
   if [ "$user" = "" ]; then
	echo "Error! - you must input an username"
	echo "Exit!"
	exit 1
   fi
   echo "==========================="
   echo "Making ${user}Key.pem ..."
ipsec pki --gen --outform pem > ${user}Key.pem
   echo "Making ${user}Cert.pem ..."
ipsec pki --pub --in ${user}Key.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CH, O=strongSwan, CN=client" --outform pem > ${user}Cert.pem
   echo "Making ${user}Cert.p12 ..."
openssl pkcs12 -export -inkey ${user}Key.pem -in ${user}Cert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out ${user}Cert.p12
   echo "========== done =========="

修改脚本权限并执行

cd /root
chmod 755 cc.sh     #修改权限
./cc.sh     #执行并按提示操作

 

补充3:

经过一段时间的使用,发现这类IPsec VPN软件的稳定性比OpenVPN这样的SSL VPN要稍差些,主要表现在有时客户端断开后(尤其是进入sleep状态时)VPN服务器端未能收到断开信号,以致该客户端短时间内再次连接VPN服务器时可能就会被拒绝,这时要么重启VPN服务器,或者等上一段时间再访问(一般情形下VPN服务器端过一段时间,比如最多2分钟,就会自动恢复正常)。

为尽可能确保VPN服务器端处于正常状态,我还是做了一个定时任务,比如每天临晨4:00让VPN服务器端重启一下。

crontab -e     #进入定时任务编辑状态

在其中添加如下的一条定时任务,并保存退出。

00 20 * * * /usr/sbin/ipsec restart

注:Debian的定时任务似乎默认按UTC时间来执行的(尽管系统的时区我已设置UTC+8),所以这里是20:00以确保实际在临晨4:00执行。

修改完成后,需要重启一下定时任务的程序。

/etc/init.d/cron restart

 

2013.01.14 更新:
整理了一份 各平台VPN客户端的使用教程 各平台VPN客户端的使用教程 (下载1651)
其中提到的WinXP平台Cisco VPN Client客户端,相关的设置请见 这里,而 Win8客户端的用法和 Win7一样。

另外,建议把所有的证书文件,包括ca证书、服务器端和客户端的证书,通过Winscp备份到本地电脑硬盘上,这样万一将来VPS因故障需要重装系统时,无需重新制作各个客户端证书并一一通知对方更新了。

 

2013.02.23 更新
刚发现手上的Nexus 4手机(4.2.2)其自带的VPN客户端已支持pure IPsec,选择IPSec Xauth PSK方式,填写服务器地址和PSK密码后保存,登录时填入用户名、密码即可(仅第一次登陆时需要),无需证书。
android_ipsec_psk

上网搜了一下,似乎从4.1 (Jelly Bean) 开始android自带的vpn客户端就已支持pure IPsec了,不过之前没留意过。顺便提一下,第一次配置VPN帐号时Android系统会提示设置一个新的锁屏安全密码,按提示设置即可。

另外,跟iOS自带的vpn客户端一样都属于IKEv1方式(顺便提一下,strongSwan仅支持IKEv1的main mode,但不支持aggressive mode,所以不兼容客户端vpnc),跟IKEv2相比,前者无需证书使用方便但安全性稍差,且在断网恢复或更换网络后无法像后者那样能自动再连上,感觉还是IKEv2更适合手机等移动终端设备。

 
2014.09.19 更新
最近 VPS升级,发现有了两个ip(在 /etc/network/interfaces文件里可以看到分别是 eth0 和 eth0:0),原先一直在用的ip变成了 eth0:0,导致 VPN客户端连上服务器后验证失败,换成 eth0的ip就正常了,所以建议安装失败的各位也请看一下是否有类似的情况。

另外,strongSwan从 4.6.4升级到 5.1.x之后原先的证书仍然可用,只需要重新制作一下 serverKey.pemserverCert.pem这两个文件并复制到对应的目录。

 
2016.03.06 更新
之前折腾 Win10自带的 VPN客户端时,简单地整理过 strongSwan 5.x的安装
http://blog.ltns.info/linux/pure_ipsec_win10_vpn_client_debian_vps/
供参考

 
 

参考文章
http://blog.wellsgz.info/?p=1560#comment-21137
http://igfw.net/archives/9151
http://wiki.strongswan.org/projects/strongswan/wiki/Win7EapMultipleConfig/
http://ttz.im/blog/2011/10/724
http://wiki.strongswan.org/projects/strongswan/wiki/IOS_(Apple)

 

  1. keyser
    2012年12月19日01:47 | #1

    楼主啊我泪流满面啊, 照你的方法我在xen vps上安装成功了, 终于可以摆脱ovpn一天一换端口的噩梦了~

  2. LTNS
    2012年12月19日11:36 | #2

    @keyser
    搞定就好,我也是OpenVPN每天换端口给逼的,希望现在的这个方法能用长久点。

  3. keyser
    2012年12月19日20:17 | #3

    对了有个问题, 怎样注销客户端证书? 用什么命令? @LTNS

  4. LTNS
    2012年12月20日10:35 | #4

    @keyser
    需要加入对CRL(证书注销列表)的支持,详请见这里
    http://blog.ltns.info/linux/pure_ipsec_xp_cisco_vpn_client_debian_vps/

  5. ioiioi
    2012年12月31日17:45 | #5

    @LTNS, @keyser
    为什么每天要换ovpn端口?gfw已经智能到可以封ovpn了?

    • LTNS
      2012年12月31日19:52 | #6

      @ioiioi
      嗯,功夫网已经可以判明访问境外ip的数据包走的是ovpn通道并封掉端口,判明所需时间已经小于一天,尽管数据包的安全性不受影响

  6. tt
    2013年1月30日20:12 | #7

    楼主,用的亚马逊es2的ubuntu 12.04lts 按上面一样的配置,出现ike身份验证凭证不可接受怎么办?
    是不是es2的公网ip那地方错了,es2有个内网ip还有个公网ip,请问该如何设置(证书和配置文件里的ip怎么改)

  7. okhwyy
    2013年1月31日11:24 | #8

    感谢您的教程!

    ios成功,但win7测试时出现错误,日志如下:

    Jan 31 12:14:27 www8092ue charon: 13[NET] received packet: from 221.13.130.179[500] to 49.212.140.106[500]
    Jan 31 12:14:27 www8092ue charon: 13[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
    Jan 31 12:14:27 www8092ue charon: 13[IKE] 221.13.130.179 is initiating an IKE_SA
    Jan 31 12:14:27 www8092ue charon: 13[IKE] remote host is behind NAT
    Jan 31 12:14:27 www8092ue charon: 13[IKE] sending cert request for "C=CH, O=strongSwan, CN=strongSwan CA"
    Jan 31 12:14:27 www8092ue charon: 13[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
    Jan 31 12:14:27 www8092ue charon: 13[NET] sending packet: from 49.212.140.106[500] to 221.13.130.179[500]
    Jan 31 12:14:27 www8092ue charon: 14[NET] received packet: from 221.13.130.179[4500] to 49.212.140.106[4500]
    Jan 31 12:14:27 www8092ue charon: 14[ENC] unknown attribute type INTERNAL_IP4_SERVER
    Jan 31 12:14:27 www8092ue charon: 14[ENC] unknown attribute type INTERNAL_IP6_SERVER
    Jan 31 12:14:27 www8092ue charon: 14[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
    Jan 31 12:14:27 www8092ue charon: 14[IKE] received cert request for "C=CH, O=strongSwan, CN=strongSwan CA"
    Jan 31 12:14:27 www8092ue charon: 14[IKE] received 20 cert requests for an unknown ca
    Jan 31 12:14:27 www8092ue charon: 14[CFG] looking for peer configs matching 49.212.140.106[%any]...221.13.130.179[10.10.10.46]
    Jan 31 12:14:27 www8092ue charon: 14[CFG] selected peer config 'ios'
    Jan 31 12:14:27 www8092ue charon: 14[IKE] peer requested EAP, config inacceptable
    Jan 31 12:14:27 www8092ue charon: 14[CFG] switching to peer config 'win7'
    Jan 31 12:14:27 www8092ue charon: 14[IKE] EAP-Identity request configured, but not supported
    Jan 31 12:14:27 www8092ue charon: 14[IKE] loading EAP_MSCHAPV2 method failed
    Jan 31 12:14:27 www8092ue charon: 14[IKE] peer supports MOBIKE
    Jan 31 12:14:27 www8092ue charon: 14[ENC] generating IKE_AUTH response 1 [ IDr EAP/FAIL ]
    Jan 31 12:14:27 www8092ue charon: 14[NET] sending packet: from 49.212.140.106[4500] to 221.13.130.179[4500]

  8. LTNS
    2013年1月31日13:27 | #9

    @tt
    Amazon的EC2没用过,内网ip的话估计要做端口映射了,请参考一下strongswan官网的这篇教程,可能有用
    http://wiki.strongswan.org/projects/strongswan/wiki/AwsVpc

  9. LTNS
    2013年1月31日14:01 | #10

    @okhwyy
    strongSwan官网上有Win7的VPN客户端使用EAP-MSCHAP v2协议连接时的服务器端日志记录,可供参考
    http://wiki.strongswan.org/projects/strongswan/wiki/Win7EapStatus

    从你的日志看似乎服务端缺少EAP,建议重新编译一下strongswan,把EAP相关的编译参数都写上。

    顺便提一下,文章里的命令行或引用内容在有的浏览器里面显示不全,可先复制粘贴到记事本再使用。

  10. 2013年2月25日16:32 | #11

    我表示使用最新strongswan5.x安装后,ikev1连接出现协议错误

  11. LTNS
    2013年2月25日23:09 | #12

    @简单
    strongSwan 从5.x开始就不再支持pluto,而是改由charon来兼容IKEv1了,所以配置文件应该跟4.x的不一样了,可见 官网说明,具体怎么配置我也没用过。

    另外,官网还有5.x的IKEv1配置文件示例,供参考 http://wiki.strongswan.org/projects/strongswan/wiki/IKEv1Examples

  12. 2013年2月26日17:05 | #13

    这个我知道,都说5方便一直没折腾成功,对了还想问下那个连接的时候标志符是什么意思,对应的配置文件是什么呢,球科普一下!

  13. LTNS
    2013年2月28日10:33 | #14

    @简单
    你说的标识符是指IPsec ID吧,在vpnc里是group name,而IPSec secret就是group password了,在android自带的vpn客户端里意思也应该差不多,不过对应的服务器端该怎么配置我也没试过。

    官网wiki 有如下说明,供参考
    left|rightgroups =

    a comma-separated list of group names. If the left|rightgroups parameter is present then the peer must
    be a member of at least one of the groups defined by the parameter. Groups may be used together with the
    eap-radius plugin.

    left|rightgroups2 =

    Same as left|rightgroups but for the second authentication round defined with left|rightauth2.
    Available since 5.0.1.

  14. 2013年3月1日18:05 | #15

    不知道是我收集ROM的问题还是什么,升级到4.12后,直接连接居然出现超时··

  15. LTNS
    2013年3月1日19:14 | #16

    @简单
    我只在nexus 4和nexus 7的官方 4.1.2及之后的固件上试过strongswan vpn client这个第三方的客户端,而系统自带的vpn客户端只在4.2.2上试过

  16. 2013年3月4日13:56 | #17

    strongswan那个客户端走的ikev2嘛!ikev1在苹果上无压力,只是在我三星的4.12 rom中连接不了 出现超时`

  17. king
    2013年4月10日18:35 | #18

    求博主QQ,请教strongswan

  18. LTNS
    2013年4月10日22:12 | #19

    @king
    哪方面的问题呢?另,请教不敢当,大家交流心得吧,已加你qq

  19. Shane
    2013年4月11日17:15 | #20

    我完全按照博主的方式进行了设置,可是居然iOS设备都连接不上VPN,晕死啊...

    iOS给出的提示是"VPN服务器并未响应",然后我瞅了瞅/var/log/auth.log里面也没有任何的连接验证信息之类的,怀疑连接在哪个部分被截住了,同求博主QQ,真心求教中...

  20. LTNS
    2013年4月13日10:30 | #21

    @Shane
    收到邮件,请看看/var/log目录下是否还有其他日志文件,可能ubuntu和debian的不一样。另,建议手工编译,不要用apt-get方式安装strongswan,否则win7可能没法用。

  21. wang
    2013年4月29日22:18 | #22

    非常感谢,IOS成功,WIN7未测试,版本 strongswan 5.0,求博主strongswan 5.0 搭设 PLAYBOOK 支持的 IKEv2 VPN,或者支持CISCO 安全PIX防火墙。

  22. LTNS
    2013年4月30日00:14 | #23

    @wang
    不好意思啊,没折腾过BlackBerry OS的设备,官网上对应的 wiki 也是空白,这里有篇教程可以参考一下
    http://igfw.net/archives/9151

    另,strongswan从5.0版本开始改用charon替代pluto来兼容IKEv1了,能否贴一下配置文件中相应的内容?前面的留言中似乎有人没成功。

  23. wang
    2013年4月30日23:43 | #24

    Ec2 Ubuntu 12.x LTS 64bit
    strongswan 5.0.3
    /etc/ipsec.conf

    config setup
    conn ios
    keyexchange=ikev1
    authby=xauthpsk

    祝深受功夫墙困扰的各位朋友成功,上面的配置IOS及PB(Pb选一般ikev2 vpn,身份eap-mschapv2,身份验证选邮件,标识用自己定义的成功,证书登录还在摸索中,
    xauth=server
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftfirewall=yes
    right=%any
    rightsubnet=10.11.0.0/24
    rightsourceip=10.11.0.0/24
    auto=add

    conn playbook
    keyexchange=ikev2
    left=%defaultroute
    #leftnexthop=54.xx.xx.xx
    leftsubnet=0.0.0.0/0
    leftauth=psk
    leftid=54.xx.xx.xx
    right=%any
    rightsourceip=10.11.1.0/24
    #rightsubnet=10.11.1.0/24
    rightauth=eap-mschapv2
    rightsendcert=never
    rightid=a@a
    eap_identity=rw
    auto=add

    /etc/ipsec.secrets
    : PSK "pass"
    w1 : XAUTH "1234"

    : RSA serverKey.pem
    w2 : EAP "1234"

    : PSK "aaaa"
    w3 : EAP "1234"

    祝深受功夫墙困扰的所有朋友成功穿越,通过以上主要配置及博主其他设置ipsec restart启动,并在IOS、PB连接成功,(PB网管类型选一般ikev2 服务器,身份eap-mschapv2,身份id选邮件,身份验证id填配置自己定义任意的,标识也是,如上面的 a@a ;rw ),然后填用户名、密码,网关类型psk,网关id ipv4,最后是预共享密码),有黑莓的朋友可以轻松翻越。

  24. wang
    2013年4月30日23:47 | #25

    汗,发重了抱歉。
    有黑莓证书登录成功的望分享下strongswan 5.x 配置,谢谢博主和各位朋友。

  25. LTNS
    2013年5月1日16:53 | #26

    @wang
    谢谢分享。

    另,网上搜了一下,BlackBerry OS的设备用ikev2的话psk可以,但证书方式似乎没有成功的教程,这里有人前两天刚折腾过但失败了
    https://lists.strongswan.org/pipermail/users/2013-April/009172.html

  26. wang
    2013年5月1日20:42 | #27

    博主客气,昨天的黑莓配置是ikev2+eap-mschapv2吧?用ikev2的话psk可以,求相关的配置及IOS用cisco ipsec 用证书登录的配置,下午搞了下证书没成功。顺便问下用IKEV2 VPN 256bit加密,通过此VPN上的QQ聊天会不会监控到?

  27. wang
    2013年5月3日19:32 | #28

    求教用playbook的配置连接一般ikev2服务器老是断线是何原因?

  28. fish
    2013年5月14日13:21 | #29

    hi.

    as3:~# ipsec pki --gen --outform pem > caKey.pem
    /usr/local/sbin/ipsec: unknown IPsec command `pki' (`ipsec --help' for list)

    怎么我的vps下的ipsec不带pki命令的吗?怎么解决此问题?

  29. LTNS
    2013年5月14日18:39 | #30

    @fish
    有人遇到过跟你一样的问题,请检查一下是否在编译strongswan时误用了 --disable-tools 的编译参数,详请见如下讨论贴
    https://lists.strongswan.org/pipermail/users/2009-December/004263.html

  30. fish
    2013年5月15日17:44 | #31

    @LTNS
    没用的,按照那个帖子无济于事。我重新编译最新版:

    as3:~# wget http://download.strongswan.org/strongswan-5.0.4.tar.gz
    as3:~# tar zxvf strongswan-5.0.4.tar.gz
    as3:~# cd strongswan-5.0.4
    as3:~# ./configure --prefix=/usr --sysconfdir=/etc --enable-openssl --disable-mysql --disable-ldap --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2 --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-sim-pcsc --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls
    as3:~# make && make install
    as3:~# ipsec restart
    Stopping strongSwan IPsec...
    Starting strongSwan 5.0.4 IPsec [starter]...
    as3:~# ipsec pki --gen --outform pem > caKey.pem
    openssl FIPS mode(0) unavailable

    不知这里的“openssl FIPS mode(0) unavailable”是啥意思?如何解决之?

  31. LTNS
    2013年5月17日11:26 | #32

    @fish
    官网wiki上有篇 文档,可查看 /proc/sys/crypto/fips_enabled 文件内容以确认是否打开了FIPS mode,我用的是strongSwan 4.6.4版本,Debian 6.0系统里该文件内容为0,供参考

  32. LTNS
    2013年5月18日19:09 | #33

    @fish
    这里 有人用5.0.4也遇了 openssl FIPS mode(0) unavailable 的问题,似乎用了如下的源代码补丁解决的
    http://bazaar.launchpad.net/~vcs-imports/strongswan/master/revision/9790

  33. wang
    2013年6月1日13:12 | #34

    请教如何在此基础上搭建pptp vpn 服务,tcp 1723已打开,单pptp搭设很顺利,二者共存的话pptp老是连接不上,pptp的ip和iptable应该如何配置。

  34. LTNS
    2013年6月2日17:14 | #35

    @wang
    没装过pptp vpn服务器,像移动很早就封了1723端口,而且pptp容易被功夫网墙掉

  35. wang
    2013年6月26日22:47 | #36

    我这里pptp一直可以用,移动电信都可以连接,可能是ip的原因

  36. wang
    2013年6月27日11:00 | #37

    LTNS :@fish 这里 有人用5.0.4也遇了 openssl FIPS mode(0) unavailable 的问题,似乎用了如下的源代码补丁解决的http://bazaar.launchpad.net/~vcs-imports/strongswan/master/revision/9790

    更新了strongswan 为5.0.4,修正openssl FIPS mode具体应该怎么做?直接改那个/usr/src/strongswan 5.0.4/src/libstrongswan/plugins/openssl/openssl_plugin.c 这个文件?
    然后再编辑一次吗?再次编译出错!

  37. LTNS
    2013年6月29日09:34 | #38

    @wang
    看那篇文章里的评论应该就是按补丁链接里的提示内容修改源代码文件openssl_plugin.c(把显示 openssl FIPS mode(0) unavailable 的那句代码行换一下位置),然后重新编译。而且按评论里的说法,这只是误显示而已,实际不影响正常使用。

    至于编译出错,建议按文章里的配置参数进行编译,我这里的只是针对4.6.4的版本,5.x的不一样(详见 官网)。

  38. wang
    2013年7月4日15:39 | #39

    strongswan换成racoon简单了很多,暂时不用证书登录,有空再搞了。
    而且按评论里的说法,这只是误显示而已,实际不影响正常使用。那这么说的话证书方式还可以试下,5.x的编译参数不修改前是成功编译的,修改之后同样的错误不行。
    PPTP VPN的MSS会修正,RACOON搭建的VPN修改MSS好像和没修改之前差不多。谢谢博主指教。

  39. LTNS
    2013年7月4日16:16 | #40

    @wang
    racoon以前用过,配置起来也比较方便,而且支持aggressive mode所以兼容vpnc客户端(而strongSwan仅支持main mode所以不兼容vpnc),不过racoon不支持IKEv2,为了能兼容包括win7在内的多平台自带或第三方的客户端,于是我选了strongSwan。

  40. Myffel
    2013年7月11日10:56 | #41

    请问,怎么让racoon在linux重启后,自动启动

  41. wang
    2013年8月1日22:03 | #42

    我也不大懂,比如先建立一个 /etc/network.script
    加入以下内容编辑后保存:
    ######################################
    iptables-restore < /etc/iptables.up.rules
    sysctl -p
    /etc/init.d/racoon restart
    ######################################

    然后编辑 /etc/rc.local,最后一行exit 0 的前一行加入,然后保存
    ######################################
    sh /etc/network.script
    ######################################

  42. wang
    2013年8月2日15:06 | #43

    为何按你的配置win7 ikev2连接老是连接到无响应,用的是用户名和密码登录。leftid="C=CH, O=strongSwan, CN=VPS的公网ip"
    这里的VPS的公网ip需要和vpc的ip相同吗?

  43. LTNS
    2013年8月2日16:32 | #44

    @wang
    就是VPS的公网ip啊,如果VPS身处内网,则需要在网关那里设置一下端口映射以便vpn客户端能从外网访问到VPS上的vpn服务器。

    另外需要注意的是,因为IKEv2,所以在win7自带的vpn客户端里填写的服务器地址,必须和制作服务器端证书时的CN项的内容(ip地址或域名)保持一致,文章中我有提及。不过考虑到国内有的移动运营商劫持了DNS可能导致vpn客户端无法访问域名,所以建议还是都用ip吧。

    如果还是连接无响应,请先检查一下客户端和服务端的日志吧。

  44. wang
    2013年8月2日20:22 | #45

    可是我用Z10下面2个配置都能正常连接,WIN7就不行郁闷,请问WIN7客户端哪里可以看连接日志?
    conn ikev2-Z10 ;一般ikev2
    keyingtries=1
    keyexchange=ikev2
    leftsubnet=0.0.0.0/0
    right=%any
    rightsubnet=10.11.2.0/24
    rightsourceip=10.11.2.0/24
    rightauth=psk
    rightid=a@a #PSK PKI
    leftauth=pubkey
    leftcert=serverCert.pem
    auto=add

    conn ikev2-win7 ;Microsoft ikev2
    keyexchange=ikev2
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftauth=pubkey
    leftcert=serverCert.pem
    leftid="C=CN, O=strongSwan, CN=1.2.3.4"
    right=%any
    rightsourceip=10.11.3.0/24
    rightauth=eap-mschapv2
    rightsendcert=never
    eap_identity=%any
    auto=add

  45. LTNS
    2013年8月3日00:15 | #46

    @wang
    Win7自带的 Agile VPN client访问服务器失败后的提示框里有个 Enable Logging的勾选项,具体记不太清楚了(只用过一次,之后VPN客户端都能连接成功所以就没再出现这个提示框),不过还是建议查看服务器端的日志,strongSwan官网上有Win7的VPN客户端使用EAP-MSCHAP v2协议连接时的服务器端日志记录,可供参考
    http://wiki.strongswan.org/projects/strongswan/wiki/Win7EapStatus

  46. wang
    2013年8月3日13:03 | #47

    谢谢,终于发现win7因为精简过度,ikev2被破坏了。。。
    用户密码方式可以连接,但点证书方式连接会提示13806错误。
    现在除了win7 证书及cisco vpn client不能连接外,ikev1 ikev2 vpn架设基本上所有平台都兼容了,strongswan确实比较强大,非常感谢。

  47. fish
    2013年8月11日20:42 | #48

    @wang HI,你搭建的strongswan vpn,在安卓上能成功的拿来翻墙吗

  48. fish
    2013年8月12日16:14 | #49

    hi.博主:
    我运行ipsec restart后,出现:
    Stopping strongswan ipsec...
    Starting weakSwan 5.0.4 ipsec...

    这是正常的吗?怎么变成Starting weakSwan 5.0.4 ipsec了?而非Starting strongSwan 5.0.4 ipsec?
    我在win7下未能成功连上这个strongswan vpn

  49. LTNS
    2013年8月12日17:45 | #50

    @fish
    可能5.x版本显示的内容跟4.x的不一样吧,我这里显示的是
    Stopping strongSwan IPsec...
    Starting strongSwan 4.6.4 IPsec [starter]...

    官网blog提及了strongSwan改名weakSwan的事情
    http://www.strongswan.org/blog/2012/06/20/bye-bye-pluto.html

    ...
    Now to the goodies! strongSwan 5.0 is going to support IKEv1 Aggressive Mode and IKEv1 Hybrid Mode, both of which are used by some proprietary third party VPN products and by racoon. After some heated internal discussions we finally decided to allow IKEv1 Aggressive Mode with PSK but a strongSwan VPN gateway must explicitly enable this potentially vulnerable mode with the strongswan.conf option

    i_dont_care_about_security_and_use_aggressive_mode_psk = yes.

    And as I promised in numerous public and private talks strongSwan then changes its name to weakSwan.
    ...

    (btw,这篇blog里还提及5.0将支持IKEv1 的aggressive mode,这样的话客户端vpnc应该也可以用了。)

    另,win7自带客户端不能访问的话,请见#46楼。

  50. fish
    2013年8月13日16:19 | #51

    1.我的安卓系统版本为4.0.4,按你此文做了,始终在strongswan vpn client里面连不上。难道是我系统版本的问题?
    2.在win7下,连接则显示“13868:策略匹配错误”。

    我是在一个新的vps重新搞的,遇到上述错误,求解。

  51. wang
    2013年8月16日20:37 | #52

    没有安卓手机,WIN7 ios z10正常,ipsec start --nofork 运行看看什么提示。

  52. wang
    2013年8月16日20:43 | #53

    conn ikev2-Z10 ;一般ikev2
    keyingtries=1
    keyexchange=ikev2
    leftsubnet=0.0.0.0/0
    right=%any
    rightsubnet=10.11.2.0/24
    rightsourceip=10.11.2.0/24
    rightauth=psk
    rightid=a@a #PSK PKI
    leftauth=pubkey
    leftcert=serverCert.pem
    auto=add

    这个配置,原来正常可以使用,不知怎么搞的,Z10客户端提示配置错误。。。

  53. fish
    2013年8月17日00:18 | #54

    这是strongswan还真难搞定。
    我运行了ipsec restart --nofork,出现提示:
    opening triplet file /etc/ipsec.d/triplets.dat failed:no such file or directory.搜了一下,也没找到解决办法。博主指点一下?

  54. LTNS
    2013年8月17日22:18 | #55

    @fish
    我的v4.6.4版本也有同样的提示,但不影响使用,这里贴上全部内容,供参考
    root@(none):~# ipsec restart --nofork
    Stopping strongSwan IPsec...
    Starting strongSwan 4.6.4 IPsec [starter]...
    listening on interfaces:
    eth0
    x.x.x.x
    x::x:x:x:x
    starter_start_pluto entered
    Pluto initialized
    Starting IKEv1 pluto daemon (strongSwan 4.6.4) THREADS VENDORID CISCO_QUIRKS
    attr-sql plugin: database URI not set
    plugin 'attr-sql': failed to load - attr_sql_plugin_create returned NULL
    listening on interfaces:
    eth0
    x.x.x.x
    x::x:x:x:x
    loaded plugins: aes des sha1 sha2 md5 random x509 pkcs1 pkcs8 pgp dnskey pem openssl gmp hmac xauth attr kernel-netlink resolve
    including NAT-Traversal patch (Version 0.6c)
    loading ca certificates from '/etc/ipsec.d/cacerts'
    loaded ca certificate from '/etc/ipsec.d/cacerts/caCert.pem'
    loading aa certificates from '/etc/ipsec.d/aacerts'
    loading ocsp certificates from '/etc/ipsec.d/ocspcerts'
    Changing to directory '/etc/ipsec.d/crls'
    loaded crl from 'crl.pem'
    loading attribute certificates from '/etc/ipsec.d/acerts'
    spawning 4 worker threads
    pluto (9289) started after 20 ms
    listening for IKE messages
    adding interface eth0/eth0 x.x.x.x:500
    adding interface eth0/eth0 x.x.x.x:4500
    adding interface lo/lo 127.0.0.1:500
    adding interface lo/lo 127.0.0.1:4500
    adding interface lo/lo ::1:500
    loading secrets from "/etc/ipsec.secrets"
    loaded PSK secret for %any
    loaded XAUTH secret for username1
    loaded XAUTH secret for username2
    00[DMN] Starting IKEv2 charon daemon (strongSwan 4.6.4)
    00[CFG] attr-sql plugin: database URI not set
    00[LIB] plugin 'attr-sql': failed to load - attr_sql_plugin_create returned NULL
    00[KNL] listening on interfaces:
    00[KNL] eth0
    00[KNL] x.x.x.x
    00[KNL] x::x:x:x:x
    00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
    00[CFG] loaded ca certificate "C=CH, O=strongSwan, CN=strongSwan CA" from '/etc/ipsec.d/cacerts/caCert.pem'
    00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
    00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
    00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
    00[CFG] loading crls from '/etc/ipsec.d/crls'
    00[CFG] loaded crl from '/etc/ipsec.d/crls/crl.pem'
    00[CFG] loading secrets from '/etc/ipsec.secrets'
    00[CFG] loaded IKE secret for %any
    00[CFG] loaded EAP secret for username11
    00[CFG] loaded EAP secret for username22
    loaded private key from 'serverKey.pem'
    "/etc/ipsec.secrets" line 43: unrecognized key format: EAP
    00[CFG] loaded RSA private key from '/etc/ipsec.d/private/serverKey.pem'
    00[CFG] loaded EAP secret for client
    00[CFG] opening triplet file /etc/ipsec.d/triplets.dat failed: No such file or directory
    00[CFG] loaded 0 RADIUS server configurations
    00[DMN] loaded plugins: aes des sha1 sha2 md4 md5 random x509 revocation constraints pubkey pkcs1 pkcs8 pgp pem openssl fips-prf gmp xcbc cmac hmac attr kernel-netlink resolve socket-raw stroke updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-radius eap-tls eap-ttls eap-peap eap-tnc tnc-tnccs
    00[JOB] spawning 16 worker threads
    charon (9320) started after 80 ms
    11[CFG] received stroke: add ca 'vpnca'
    11[CFG] added ca 'vpnca'
    loaded CA certificate from '/etc/ipsec.d/cacerts/caCert.pem'
    added ca description "vpnca"
    03[CFG] received stroke: add connection 'ios'
    03[CFG] added configuration 'ios'
    03[CFG] adding virtual IP address pool 'ios': 10.11.0.0/24
    added connection description "ios"
    14[CFG] received stroke: add connection 'win7&android'
    14[CFG] loaded certificate "C=CH, O=strongSwan, CN=x.x.x.x" from 'serverCert.pem'
    14[CFG] added configuration 'win7&android'
    14[CFG] adding virtual IP address pool 'win7&android': 10.11.1.0/24
    loaded host certificate from '/etc/ipsec.d/certs/serverCert.pem'
    added connection description "win7&android"
    15[CFG] received stroke: add connection 'cisco'
    15[CFG] loaded certificate "C=CH, O=strongSwan, CN=x.x.x.x" from 'serverCert.pem'
    15[CFG] added configuration 'cisco'
    15[CFG] adding virtual IP address pool 'cisco': 10.11.2.0/24
    loaded host certificate from '/etc/ipsec.d/certs/serverCert.pem'
    added connection description "cisco"

  55. fish
    2013年8月20日09:54 | #56

    @LTNS
    hi.openvz vps上可成功搞定这个strongswan吗?我的linux内核版本:2.6.32,博主告诉我你的email地址,我把这个新弄的vps的登录密码发给你,你帮我调试一下。非常感谢

  56. LTNS
    2013年8月20日22:41 | #57

    @fish
    这里 我试过OpenVZ 2.6.18不支持ipsec,按网上的说法似乎2.6.32以下都不支持,建议还是用Xen

  57. fish
    2013年8月21日09:55 | #58

    @LTNS
    hi.是啊,我也在网上看到说似乎2.6.32以下都不支持。所以我运行了uname -a查看了一下我的版本为2.6.32,所以2.6.32应该是支持ipsec的。
    还请博主告诉我你的email地址,我把这个新弄的vps的登录密码发给你,你帮我调试一下。非常感谢。我搞了好久都搞不定。

  58. LTNS
  59. fish
    2013年8月23日13:30 | #60

    hi.
    在我的另一台xen vps里也没搞定。我的ipsec.conf如下,看有没写错:
    as3:~# cat /etc/ipsec.conf
    config setup

    ca vpnca
    cacert=caCert.pem
    crluri=crl.pem
    auto=add

    conn ikev1
    keyexchange=ikev1
    left=%defaultroute
    leftauth=psk
    leftsubnet=0.0.0.0/0
    right=%any
    rightauth=psk
    rightauth2=xauth
    #rightsubnet=10.11.0.0/24
    rightsourceip=10.11.0.0/24
    auto=add

    conn cisco
    keyexchange=ikev1
    rekey=no
    leftauth=pubkey
    leftcert=serverCert.pem
    leftid="C=CN, O=strongSwan, CN=178.17.40.78"
    rightsourceip=10.11.2.0/24
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    type=tunnel
    authby=xauthrsasig
    xauth=server

    conn IPSec-IKEv2
    keyexchange=ikev2
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=serverCert.pem
    right=%any
    rightauth=pubkey
    #rightsubnet=10.11.1.0/24
    rightsourceip=10.11.1.0/24
    rightcert=clientCert.pem
    auto=add

    我运行ipsec restart --nofork,显示的内容:
    as3:~# ipsec restart --nofork
    Stopping strongSwan IPsec...
    Starting weakSwan 5.0.4 IPsec [starter]...
    00[DMN] Starting IKE charon daemon (strongSwan 5.0.4, Linux 2.6.32-5-xen-686, i686)
    00[LIB] openssl FIPS mode(0) unavailable
    00[CFG] opening triplet file /etc/ipsec.d/triplets.dat failed: No such file or directory
    00[CFG] loaded 0 RADIUS server configurations
    00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
    00[CFG] loaded ca certificate "C=CN, O=strongSwan, CN=178.17.40.78" from '/etc/ipsec.d/cacerts/caCert.pem'
    00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
    00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
    00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
    00[CFG] loading crls from '/etc/ipsec.d/crls'
    00[CFG] loaded crl from '/etc/ipsec.d/crls/crl.pem'
    00[CFG] loading secrets from '/etc/ipsec.secrets'
    00[CFG] loaded RSA private key from '/etc/ipsec.d/private/serverKey.pem'
    00[CFG] loaded EAP secret for surmount
    00[CFG] loaded IKE secret for %any
    00[CFG] loaded EAP secret for surmount
    00[DMN] loaded plugins: charon aes des sha1 sha2 md4 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs8 pgp dnskey pem openssl fips-prf gmp xcbc cmac hmac attr kernel-netlink resolve socket-default stroke updown eap-identity eap-sim eap-sim-pcsc eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap-mschapv2 eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic tnc-tnccs
    00[JOB] spawning 16 worker threads
    charon (2434) started after 260 ms
    09[CFG] received stroke: add ca 'vpnca'
    09[CFG] loaded ca certificate "C=CN, O=strongSwan, CN=178.17.40.78" from 'caCert.pem
    09[CFG] added ca 'vpnca'
    11[CFG] received stroke: add connection 'ikev1'
    11[CFG] left nor right host is our side, assuming left=local
    11[CFG] adding virtual IP address pool 10.11.0.0/24
    11[CFG] added configuration 'ikev1'
    13[CFG] received stroke: add connection 'IPSec-IKEv2'
    13[CFG] left nor right host is our side, assuming left=local
    13[CFG] adding virtual IP address pool 10.11.1.0/24
    13[CFG] loaded certificate "C=CN, O=strongSwan, CN=178.17.40.78" from 'serverCert.pem'
    13[CFG] id '%any' not confirmed by certificate, defaulting to 'C=CN, O=strongSwan, CN=178.17.40.78'
    13[CFG] loaded certificate "C=CN, O=strongSwan, CN=client" from 'clientCert.pem'
    13[CFG] id '%any' not confirmed by certificate, defaulting to 'C=CN, O=strongSwan, CN=client'
    13[CFG] added configuration 'IPSec-IKEv2'

    看看哪里有错?谢谢回复

  60. wang
    2013年8月24日20:37 | #61

    strongSwan 5.0.4 openssl FIPS mode(0) unavailable 需要修改
    http://bazaar.launchpad.net/~vcs-imports/strongswan/master/revision/9790
    ipsec restart –nofork 运行后,客户端连接VPN看看什么提示。

  61. ballack
    2013年8月27日16:06 | #62

    @LTNS
    [root@develop ~]# ipsec pki --gen --outform pem > caKey.pem
    openssl FIPS mode(0) - disabled
    我在生成证书的时候 出现了这个,disabled,这个要怎么开启呢?

  62. ballack
    2013年8月27日19:34 | #63

    [root@175 ipsec]# ipsec pki --pub --in serverKey.pem
    openssl FIPS mode(0) - disabled
    opening 'serverKey.pem' failed: No such file or directory
    building CRED_PRIVATE_KEY - RSA failed, tried 7 builders
    parsing private key failed

    这一步 一直生成不了severKey.pem
    请教

  63. LTNS
    2013年8月28日11:01 | #64

    @ballack
    官网说明1,加入配置参数 --with-fips-mode=1,重新编译后应该就可以开启该模式了。

    另外按 官网说明2,可能还需要在 /etc/strongswan.conf中添加 libstrongswan.plugins.openssl.fips_mode的参数值,请自行尝试一下吧。

    需要指出的是,我安装的v4.6.4其中的FIPS mode是关闭的(见32楼说明)。另,官网上有篇关于v4.6.4的bug提交
    http://wiki.strongswan.org/issues/198
    ...
    If FIPS mode is enabled (fips=1 passed to the kernel command line, and /proc/sys/crypto/fips_enabled reads 1), charon is not starting. If FIPS mode is disabled (edit the kernel command line in grub to remove the fips=1 option), charon starts normally.

    This appears to be related to the OpenSSL plugin. If the strongswan.conf file is modified to manually exclude the openssl plugin, charon starts normally.
    ...

    所以开启 FIPS mode后可能会和 charon有冲突(不清楚v5.x是否解决了)。

    而且我认为你遇到的制作证书时出错 “building CRED_PRIVATE_KEY - RSA failed” 应该和 “openssl FIPS mode(0) – disabled” 无关,按这篇 官网文档 请检查一下编译时是否加入了配置参数 --enable-openssl--enable-gcrypt。另,请执行 “ipsec pki --gen --outform pem > serverKey.pem” 后检查一下是否生成了 serverKey.pem;还有,检查一下 /etc/ipsec.secrets文件里的格式是否正确,等等。当然,也可能是新版strongSwan和VPS操作系统不兼容的缘故,请再试一下旧版本吧。

  64. ballack
    2013年8月29日13:28 | #65

    非常感谢,已经解决

  65. 2013年9月5日15:58 | #66

    按照楼主的教程,我把amazon ec2配置成功了,使用的是亚马逊定制的linux ami镜像,strongswan5.10版本,但是有一个问题是不知道为什么连接速度特别慢。大概就是不到1kb/s

  66. ballack
    2013年11月1日16:22 | #67

    再请教楼主:
    leftfirewall=yes
    这个选项是什么意思?官网上面的英文真心看不懂啊

  67. LTNS
    2013年11月2日14:47 | #68

    @ballack
    之前没研究过,针对ios的这部分配置我是照搬了 官网教程 里的。

    而按照这里的说法,这个选项没必要,不过留着也没什么影响。
    https://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh
    ...
    另外网上很常见的一个配置选项是 leftfirewall=yes。这是完全错误的。看上去它的唯一作用是定义你的服务器是不是在防火墙后面,但实际上它是作为 ipsec_updown 脚本的参数被开发出来,是表明你的本机 subnet 是不是用 iptables 转发/伪装出来的。如果是的话,就调用 left/rightupdown 定义的路径下的脚本,脚本的作用是对通过 ipsec 连接的数据包进行 iptables 豁免。

    之所以说它是错到离谱的(虽然没有产生影响),因为这些人完全就不懂,有公网 IP 的服务器的 subnet 很少是伪装的。另外必须写了脚本该选项才有意义,没看过一个定义了这个选项的人写过脚本。还有,leftsubnet=0.0.0.0/0 通过魔术字把 subnet 定义为了 any,你根本没法写脚本啊。所以我们这里完全就不用。
    ...

  68. passerchia
    2013年11月3日00:01 | #69

    一直期待博主更新一篇debian 7.0 + Strongswan 5.1 的教程。 哈哈 :P

  69. ballack
    2013年11月4日16:25 | #70

    @LTNS 谢楼主,这篇文章我也收藏了 我记得有过这么一段话,一时间忘记没找着。有这个选项,发现的一个现象就是iptables里会产生一条规则:
    ACCEPT udp -- localhost client.ip udp spt:l2tp dpt:l2tp policy match dir out pol ipsec reqid 1 proto esp
    我现在已经注释了,如果连上的人比较多 iptables 会产生很多条这样的规则,增加负担,取消为好。

  70. justinlu
    2013年12月20日16:05 | #71

    楼主你好:
    我目前使用的版本是strongswan 5.0.4
    想请问如果我想在通道建立或断线的时候去执行一个我写的脚本
    这部分str​​ongswan有支持吗??
    我有试过用ipsec.conf里面的left/rightupdown
    可是看起来好像只有断线的时候会进去
    通道建立的时候不会

  71. LTNS
    2013年12月21日08:18 | #72

    @justinlu
    没用过,请参考一下如下的讨论贴
    https://lists.strongswan.org/pipermail/users/2009-July/003634.html
    其中strongSwan作者提及的updown_listener.c源代码的链接失效了,不过还可以在 这里 看到,官网下载的strongSwan源代码压缩包里也有该文件,但从4.3.6版本开始updown_listener.c的源代码内容就不一样了。

    还有在这个讨论贴里有人提及updown脚本的样例,请一并参考
    https://lists.strongswan.org/pipermail/users/2013-April/009064.html

  72. H.Hing
    2013年12月21日22:00 | #73

    @okhwyy 你好,你的“Jan 31 12:14:27 www8092ue charon: 14[IKE] loading EAP_MSCHAPV2 method failed”问题解决了吗?

  73. H.Hing
    2013年12月21日22:40 | #74

    大家好,有问题求助:
    我的ipsec.conf配置如下
    conn rw-eap-peap
    left=59.*.*.*
    leftsubnet=172.16.7.0/24
    leftid=@gw-a.abc.cn
    leftcert=gw-aCert.pem
    leftauth=pubkey
    leftfirewall=yes
    rightsendcert=never
    rightauth2=eap-mschapv2
    rightauth=eap-peap
    #rightauth=eap-radius
    right=%any
    eap_identity=%any
    ike=aes128-sha1-modp2048
    esp=aes128-sha1-modp2048
    keyexchange=ikev2
    rightsourceip=10.10.10.0/24
    auto=add
    如果
    rightauth=eap-mschapv2
    rightauth2=eap-peap
    则日志报错:
    Dec 21 22:38:35 gateway charon: 16[ENC] parsed IKE_AUTH request 2 [ EAP/RES/ID ]
    Dec 21 22:38:35 gateway charon: 16[IKE] received EAP identity 'peer'
    Dec 21 22:38:35 gateway charon: 16[IKE] loading EAP_MSCHAPV2 method failed
    Dec 21 22:38:35 gateway charon: 16[ENC] generating IKE_AUTH response 2 [ EAP/FAIL ]
    如果
    rightauth2=eap-mschapv2
    rightauth=eap-peap
    Dec 21 22:40:18 gateway charon: 08[ENC] parsed IKE_AUTH request 7 [ EAP/RES/PEAP ]
    Dec 21 22:40:18 gateway charon: 08[IKE] received tunneled EAP-PEAP AVP [EAP/RES/ID]
    Dec 21 22:40:18 gateway charon: 08[IKE] received EAP identity 'peer'
    Dec 21 22:40:18 gateway charon: 08[IKE] phase2 method EAP_MSCHAPV2 selected
    Dec 21 22:40:18 gateway charon: 08[IKE] EAP_MSCHAPV2 method not available
    Dec 21 22:40:18 gateway charon: 08[TLS] sending TLS close notify
    Dec 21 22:40:18 gateway charon: 08[ENC] generating IKE_AUTH response 7 [ EAP/REQ/PEAP ]
    .请问怎么解决?

  74. justinlu
    2013年12月22日11:00 | #75

    @LTNS
    謝樓主回覆, 我先研究一下
    如果有進展再來回報

  75. LTNS
    2013年12月24日12:38 | #76

    @H.Hing
    请检查一下编译时是否加入了 --enable-md4 或 --enable-openssl 的配置参数(我两个都加了),另,如指定了 --disable-des也请取消。

    因为这个帖子里有人提及
    http://list-archives.org/2012/11/22/users-lists-strongswan-org/strongswan-eap-mschapv2-plugin-problem/f/1127625341

    > eap-mschapv2 was not loaded in plugins and when the connection needs
    > to use it it shows : "loading EAP_MSCHAPV2 method failed"

    eap-mschapv2 depends on two older crypto algorithms, namely DES-ECB and
    MD4. While DES is provided by default in through the "des" plugin, MD4
    is not. It can be enabled with --enable-md4 during configure (or
    alternatively through --enable-openssl).

  76. 柠檬
    2014年3月3日10:18 | #77

    你好,我想问下centos可以搭建吗,你有联系方式吗,我可以付费请教!

  77. 柠檬
    2014年3月3日11:23 | #78

    clientCert.p12 证书在那个目录呢

  78. 2014年3月3日21:08 | #79

    我说一下,centos 编译的时候可以考虑去掉--enable-eap-sim-pcsc,要不然报错,剩下带sim的参数我也都去掉了。然后就没问题了。
    报错如
    configure: error: Package requirements (libpcsclite) were not met:

    No package 'libpcsclite' found

    Consider adjusting the PKG_CONFIG_PATH environment variable if you
    installed software in a non-standard prefix.
    Alternatively, you may set the environment variables pcsclite_CFLAGS
    and pcsclite_LIBS to avoid the need to call pkg-config.
    关键是编译最新的pcsclite死活不成功,因为要用最新的autoconf,我个人在编译autoconf的时候会奇怪的出错,索性放弃了。

  79. 柠檬
    2014年3月4日01:29 | #80

    @lbear
    我也是,搞了一天了,没成功!

  80. 柠檬
    2014年3月4日02:15 | #81

    生成证书的时候提示 openssl FIPS mode(0) - disabled

  81. LTNS
    2014年3月4日09:50 | #82

    @柠檬
    请参考一下64楼,不过可能 Centos环境下的处理会不一样,我没用过 Centos

  82. LTNS
    2014年3月4日10:01 | #83

    柠檬 :

    clientCert.p12 证书在那个目录呢

    请问你指的是在服务端的目录还是在客户端导入前放哪个目录?

    前者的话跟其他证书在同一目录下,可用比如 WinSCP 之类的软件下载到电脑硬盘上,随便哪个位置都可以,然后在导入时找到这个位置即可。如果是在 Android设备上导入的话,一般放在 SD Card的根目录。

  83. 柠檬
    2014年3月4日11:19 | #84

    @LTNS
    我已经找到了,谢谢哈!

  84. 柠檬
    2014年3月4日16:33 | #85

    ipad可以成功连接可以上网了,但是电脑导入了证书,连接提示809错误,我看了防火墙,端口也是打开的,这个怎么处理呢,博主!

  85. 柠檬
    2014年3月4日17:26 | #86

    configure: WARNING: unrecognized options: --enable-cisco-quirks, --enable-nat-transport

  86. LTNS
    2014年3月4日23:22 | #87

    @柠檬
    请问你装的是 strongSwan 5.x的版本么?5.x已不再支持这两个编译参数了。

    另,win7 vpn客户端连接时提示 error 809,应该是指服务端无响应,请检查一下服务端的日志

  87. 柠檬
    2014年3月5日00:35 | #88

    @LTNS
    对的,我用的最新版的5.1.2,另外生成证书的时候提示 openssl FIPS mode(0) - disabled 我已经解决了

  88. 2014年3月6日16:54 | #89

    @柠檬
    我都说了,去掉了那个参数就行了。
    还有,我是用最新版编译的,博主的版本configure的一些参数5里面没有了,要注意一下。

  89. 柠檬
    2014年3月6日17:44 | #90

    @lbear
    恩恩,我是修改了一个文件解决的,兄弟你研究得怎么样了,后面我完全没有搞定!

  90. wang
    2014年4月2日16:41 | #91

    809错误很奇怪,电信的网络可以连vpn。移动光纤宽带的网络,死活连不上提示809,ipsec start --nofork,一点反应都没有!!!

  91. wang
    2014年4月2日16:42 | #92

    我用5.0.4编译时的参数也可以用在5.1.2上面,不修改也可以:
    ./configure --prefix=/usr --sysconfdir=/etc --enable-cisco-quirks --enable-openssl --enable-nat-transport --disable-mysql --disable-ldap --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2 --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-sim-pcsc --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls

  92. 柠檬
    2014年4月4日14:14 | #93

    你搞定了吗

    @wang

  93. wang
    2014年4月14日21:40 | #94

    换ip连接吧,可能isp有限制,@柠檬

  94. wang
    2014年4月14日21:54 | #95

    ipad是ikev1连接的,电脑端是ikev2连接的(win自带客户端只能win7以后的才能连接),win7证书不能直接导入,需要mmc添加证书-选本地计算机;连接类型ikev2;身份验证选eap-mschap v2;然后连接,需要的用户密码在服务端配置好。

  95. 苦逼IT
    2014年4月16日21:10 | #96

    您好,博主,感谢您的这篇博客,对我非常有用处。
    但是我在配置的win7 IKEv2的时候,提示如下错误 :EAP method EAP_MSCHAPV2 succeeded, no MSK established
    架构 strongswan + l2tp + freeradius

    我的ipsec.conf 配置文件如下:
    #ipsec.conf
    config setup
    charonstart=yes
    plutostart=yes
    nat_traversal=yes
    uniqueids=yes

    conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    rekey=no
    keyingtries=3
    keyexchange=ike
    leftsubnet=0.0.0.0/0
    right=%any
    rightsourceip=11.2.0.0/24
    dpdaction=clear
    dpddelay=300s
    dpdtimeout=1h
    conn win7ikev2
    keyexchange=ikev2
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftauth=pubkey
    leftcert=serverCert.pem
    right=%any
    rightsourceip=11.2.0.0/24
    rightauth=eap-radius
    rightsendcert=never
    eap_identity=%any
    auto=add

    conn CiscoIPSec
    keyexchange=ikev1
    auto=add
    aggressive=yes
    compress=yes
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    leftid=lefeivpn
    type=tunnel
    xauth=server
    leftauth=psk
    rightauth=psk
    rightauth2=xauth-eap
    leftfirewall=yes

    我的日志里面提示如下
    Apr 16 21:03:28 localhost charon-custom: 05[IKE] RADIUS authentication of 'yxf001' successful
    Apr 16 21:03:28 localhost charon-custom: 05[IKE] EAP method EAP_MSCHAPV2 succeeded, no MSK established
    Apr 16 21:03:28 localhost charon-custom: 05[ENC] generating IKE_AUTH response 5 [ EAP/SUCC ]
    Apr 16 21:03:28 localhost charon-custom: 05[NET] sending packet: from 10.8.0.150[4500] to 10.6.0.39[4500] (76 bytes)
    Apr 16 21:03:28 localhost charon-custom: 14[NET] received packet: from 10.6.0.39[4500] to 10.8.0.150[4500] (92 bytes)
    Apr 16 21:03:28 localhost charon-custom: 14[ENC] parsed IKE_AUTH request 6 [ AUTH ]
    Apr 16 21:03:28 localhost charon-custom: 14[IKE] verification of AUTH payload without EAP MSK failed
    Apr 16 21:03:28 localhost charon-custom: 14[ENC] generating IKE_AUTH response 6 [ N(AUTH_FAILED) ]
    Apr 16 21:03:28 localhost charon-custom: 14[NET] sending packet: from 10.8.0.150[4500] to 10.6.0.39[4500] (76 bytes)
    Apr 16 21:04:29 localhost charon-custom: 09[NET] received packet: from 10.6.0.69[500] to 10.8.0.150[500] (764 bytes)

    请楼主指定迷津!!!
    请问楼主的QQ号多少,我的QQ是5*******7

  96. LTNS
    2014年4月18日18:14 | #97

    @苦逼IT
    没用过 FreeRADIUS,不过有人用 EAP身份验证时也遇到过同样的问题,升级至 v2.1.10及以后的版本就可以用上 MPPE加密方式了

    http://comments.gmane.org/gmane.network.vpn.strongswan.user/2040
    There is a patch for freeradius 2.1.9 that makes it work.
    It now works fine for me with Win7 and Ubuntu NM-plugin.
    The patch is planned to be included in version 2.1.10.

    ...
    It does not include the MSK in MSCHAPv2 if used over EAP. IKEv2 however
    requires the MSK to calculate the AUTH payload.

    In its current form, you can't use FreeRADIUS for your setup, my
    apologies. One could extend FreeRADIUS to copy over the MPPE keys, but
    writing such a patch is not something I can do in a few minutes.

    具体用法请参考官网
    http://wiki.strongswan.org/projects/strongswan/wiki/EAPRAdius

  97. 柠檬
    2014年5月4日17:35 | #98

    哎,搞了好几月没搞定,这个真难搞!

  98. 柠檬
    2014年5月11日22:55 | #99

    终于搞定了,最新版5.1.3 加radius认证

  99. wang
    2014年5月29日21:08 | #100

    这几天不知道怎么回事,电信IP可以连接上,但数据传输为0,移动宽带倒是无无问题。

  100. wang
    2014年6月16日17:26 | #101

    找到一款strongswan替代品,ocserv,支持 cisco anyconnect,速度不错,稳定移动性好,网上有教程,ubuntu需要14.04,不然还要多安装其他依赖库。

  101. 大熊
    2014年6月24日14:43 | #102

    ios的就没能搞定!!!一天了!日志报错:
    Jun 24 09:09:31 ip-172-31-40-91 sshd[1008]: Server listening on 0.0.0.0 port 22.
    Jun 23 09:09:31 ip-172-31-40-91 sshd[1008]: Server listening on :: port 22.
    Jun 23 09:17:01 ip-172-31-40-91 CRON[1210]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jun 23 09:17:01 ip-172-31-40-91 CRON[1210]: pam_unix(cron:session): session closed for user root
    Jun 23 09:19:09 ip-172-31-40-91 sshd[1214]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 09:19:47 ip-172-31-40-91 sshd[1214]: reverse mapping checking getaddrinfo for 166.230.185.123.broad.dl.ln.dynamic.163data.com.cn [123.185.230.166] failed - POSSIBLE BREAK-IN ATTEMPT!
    Jun 23 09:19:47 ip-172-31-40-91 sshd[1214]: Accepted publickey for ubuntu from 123.185.230.166 port 54473 ssh2: RSA 5c:8b:66:f3:bc:a7:a8:c4:a8:69:51:29:e4:01:d1:50
    Jun 23 09:19:47 ip-172-31-40-91 sshd[1214]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
    Jun 23 10:17:01 ip-172-31-40-91 CRON[1313]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jun 23 10:17:01 ip-172-31-40-91 CRON[1313]: pam_unix(cron:session): session closed for user root
    Jun 23 11:17:01 ip-172-31-40-91 CRON[1338]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jun 23 11:17:01 ip-172-31-40-91 CRON[1338]: pam_unix(cron:session): session closed for user root
    Jun 23 12:17:01 ip-172-31-40-91 CRON[1374]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jun 23 12:17:01 ip-172-31-40-91 CRON[1374]: pam_unix(cron:session): session closed for user root
    Jun 23 13:17:01 ip-172-31-40-91 CRON[1399]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jun 23 13:17:01 ip-172-31-40-91 CRON[1399]: pam_unix(cron:session): session closed for user root
    Jun 23 13:29:18 ip-172-31-40-91 sshd[1214]: pam_unix(sshd:session): session closed for user ubuntu
    Jun 23 13:29:23 ip-172-31-40-91 sshd[1414]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:29 ip-172-31-40-91 sshd[1414]: Invalid user a from 42.62.17.250
    Jun 23 13:29:29 ip-172-31-40-91 sshd[1414]: input_userauth_request: invalid user a [preauth]
    Jun 23 13:29:29 ip-172-31-40-91 sshd[1414]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:30 ip-172-31-40-91 sshd[1416]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:31 ip-172-31-40-91 sshd[1416]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:31 ip-172-31-40-91 sshd[1418]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:33 ip-172-31-40-91 sshd[1418]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:33 ip-172-31-40-91 sshd[1420]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:35 ip-172-31-40-91 sshd[1420]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:38 ip-172-31-40-91 sshd[1422]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:41 ip-172-31-40-91 sshd[1422]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:41 ip-172-31-40-91 sshd[1424]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:43 ip-172-31-40-91 sshd[1424]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:43 ip-172-31-40-91 sshd[1426]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:44 ip-172-31-40-91 sshd[1426]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:45 ip-172-31-40-91 sshd[1428]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:46 ip-172-31-40-91 sshd[1428]: Invalid user suporte from 42.62.17.250
    Jun 23 13:29:46 ip-172-31-40-91 sshd[1428]: input_userauth_request: invalid user suporte [preauth]
    Jun 23 13:29:46 ip-172-31-40-91 sshd[1428]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:47 ip-172-31-40-91 sshd[1430]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:49 ip-172-31-40-91 sshd[1430]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:49 ip-172-31-40-91 sshd[1432]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:51 ip-172-31-40-91 sshd[1432]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:51 ip-172-31-40-91 sshd[1434]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:52 ip-172-31-40-91 sshd[1434]: Invalid user AdminSH from 42.62.17.250
    Jun 23 13:29:52 ip-172-31-40-91 sshd[1434]: input_userauth_request: invalid user AdminSH [preauth]
    Jun 23 13:29:53 ip-172-31-40-91 sshd[1434]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:53 ip-172-31-40-91 sshd[1436]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:55 ip-172-31-40-91 sshd[1436]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:56 ip-172-31-40-91 sshd[1438]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    Jun 23 13:29:58 ip-172-31-40-91 sshd[1438]: Received disconnect from 42.62.17.250: 11: Bye Bye [preauth]
    Jun 23 13:29:58 ip-172-31-40-91 sshd[1440]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key

  102. LTNS
    2014年7月2日21:51 | #103

    @大熊

    你贴的这个不像是 strongSwan的日志啊

  103. jxocean
    2014年8月30日08:54 | #104

    你好,我参照你的教程,不能使用,出现"VPN服务器并未响应",这是为什么呢?请帮助以下,在设置过程中出现"make
    make install"不能实现,谢谢

  104. feiniu
    2014年9月3日10:50 | #105

    729 Sep 3 06:42:23 02[JOB] watcher got notification, rebuilding
    730 Sep 3 06:42:23 02[JOB] watcher going to select()
    731 Sep 3 06:42:49 02[JOB] watched FD 15 ready to read
    732 Sep 3 06:42:49 02[JOB] watcher going to select()
    733 Sep 3 06:42:49 02[JOB] watcher got notification, rebuilding
    734 Sep 3 06:42:49 02[JOB] watcher going to select()
    735 Sep 3 06:43:18 02[JOB] watched FD 15 ready to read
    736 Sep 3 06:43:18 02[JOB] watcher going to select()
    737 Sep 3 06:43:18 02[JOB] watcher got notification, rebuilding
    738 Sep 3 06:43:18 02[JOB] watcher going to select()

    楼主,这是什么情况啊?连接不上,日记里的

    • LTNS
      2014年9月14日18:04 | #106

      @jxocean
      @feiniu

      请具体描述一下。

      btw,建议用 google搜索一下“关键字 site:lists.strongswan.org”,很多问题可能有人遇到过。

  105. yf
    2014年9月11日14:07 | #107

    ec2,,ubuntu14.04,照着博主做的,13801错误,搞不出来了。

    • LTNS
      2014年9月14日18:07 | #108

      可能是 vpn客户端用了 ikev2但没有使用证书的缘故;或者证书出错,需重新制作一遍。

      另外,建议用 google搜索一下“13801 site:lists.strongswan.org”,或许还有别的缘故。

  106. wr
    2014年10月10日22:30 | #109

    楼主好,我按照楼主的配置已经可以成功用win7/win8连接到服务器了,但是却不能上网,服务器ifconfig是这样的:
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
    UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
    RX packets:2545 errors:0 dropped:0 overruns:0 frame:0
    TX packets:878 errors:0 dropped:1489 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:367999 (367.9 KB) TX bytes:123698 (123.6 KB)

    venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:.XX.XX.XX.XX P-t-P:XX.XX.XX.XX Bcast:XX.XX.XX.XX
    Mask:255.255.255.255
    UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

    iptables也是按照文章配置的,但就是不能访问外网。楼主,求指点这是什么情况啊?

    • LTNS
      2014年10月11日10:59 | #110

      @wr
      你的vpn服务器的外网网卡似乎是 venet0:0而不是 venet0,请参考文中的“2014.09.19 更新”部分,最好改用 venet0。另外,NAT功能相关的8行命令,其中的“eth0”需要替换成你那里的对应网卡。

      如果还有问题,就再用 iptables -nvLiptables -t nat -nvL 这两条命令检查一下防火墙,这里贴上我的供参考

      
      root@(none):~# iptables -t nat -nvL
      Chain POSTROUTING (policy ACCEPT 13954 packets, 1218K bytes)
       pkts bytes target     prot opt in     out     source               destination
        650 39777 MASQUERADE  all  --  *      eth0    10.11.0.0/24         0.0.0.0/0
       2432  134K MASQUERADE  all  --  *      eth0    10.11.1.0/24         0.0.0.0/0
          0     0 MASQUERADE  all  --  *      eth0    10.11.2.0/24         0.0.0.0/0
      
      
      root@(none):~# iptables -nvL
      Chain INPUT (policy ACCEPT 371K packets, 140M bytes)
       pkts bytes target     prot opt in     out     source               destination
          6  2752 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:500
      68968   13M ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:4500
      
      Chain FORWARD (policy ACCEPT 32 packets, 3282 bytes)
       pkts bytes target     prot opt in     out     source               destination
          0     0 ACCEPT     all  --  *      *       10.11.0.0/24         0.0.0.0/0
      38154 6144K ACCEPT     all  --  *      *       10.11.1.0/24         0.0.0.0/0
          0     0 ACCEPT     all  --  *      *       10.11.2.0/24         0.0.0.0/0
      

      顺便提一下,vpn服务器在内网的话还要设置udp 500和4500的端口映射。

  107. wr
    2014年10月11日15:53 | #111

    @LTNS
    楼主“2014.09.19更新”里面提到的情况应该是有了两个公网ip吧,但我这里venet0不是公网ip,而是一个类似lo的东西。所以NAT那里的命令我都是用venet0:0.防火墙规则跟你也很接近,不同的是我在配置的时候rightsourceip统一给了10.0.0.0.
    iptables -t nat -nvL
    Chain POSTROUTING (policy ACCEPT 46 packets, 3272 bytes)
    pkts bytes target prot opt in out source destination
    0 0 MASQUERADE all -- * venet0:0 10.0.0.0/24 0.0.0.0/0

    iptables -nvL
    Chain INPUT (policy ACCEPT 464 packets, 51149 bytes)
    pkts bytes target prot opt in out source destination
    4 2224 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:500
    7 1980 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:4500

    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination
    173 12415 ACCEPT all -- * * 10.0.0.0/24 0.0.0.0/0

    什么叫做VPN服务器在内网,如何判断是不是在内网?
    另外楼主配置过ipv6的strongswan吗?我的venet0(不是venet0:0)有ipv6的地址。

    • LTNS
      2014年10月11日19:24 | #112

      @wr
      一般私有网段的ip就是内网ip了。

      我在“2014.09.19更新”部分提到的情况确实是 VPS有了两个公网ip,eth0和它的虚拟网卡 eth0:0,只能用前者。另,ipv6没用过,我用的 VPS不支持。

      btw,你的VPS是 OpenVZ的还是 Xen的?用venet0网卡的似乎是前者,以前折腾过 OpenVZ但用不了 strongSwan,建议改用 Shadowsocks 或 ocserv。

      不过在网上看到 一篇文章(或者 这里) 说从5.1版本开始 strongSwan在 OpenVZ的VPS上也可以安装了,但需要在编译时加入配置参数 --enable-kernel-libipsec,作者实测 ikev1有效。不知道对 ikev2是否有效,你可以试试。

  108. wr
    2014年10月12日11:35 | #113

    @LTNS
    可以用ikev2的,我已经做出来了,加了配置参数之后,用下面的iptables就可以了:
    iptables -A INPUT -i tun+ -j ACCEPT
    iptables -A OUTPUT -o tun+ -j ACCEPT
    iptables -A FORWARD -i tun+ -o venet0:0 -j ACCEPT
    iptables -A FORWARD -i venet0:0 -o tun+ -j ACCEPT
    iptables -A INPUT -i tap+ -j ACCEPT
    iptables -A OUTPUT -o tap+ -j ACCEPT
    iptables -A FORWARD -i tap+ -o venet0:0 -j ACCEPT
    iptables -A FORWARD -i venet0:0 -o tap+ -j ACCEPT
    iptables -A POSTROUTING -t nat -s 10.0.0.0/8 -j SNAT --to-source YOURSERVERIP
    谢谢楼主耐心解答!

    • LTNS
      2014年10月12日12:07 | #114

      @wr
      恭喜! 顺便请问一下你的 OpenVZ的内核版本是多少?

  109. wr
    2014年10月20日23:29 | #115

    @LTNS
    就是系统内核吗?2.6.32

  110. bluestar
    2014年11月24日23:06 | #116

    @yf
    首先感谢博主的文章,我照着这个教程配置,我也遇到了这个问题,折腾了好几个小时,最后我是把leftid="C=CH, O=strongSwan, CN=106.187.92.246" 这行改为 leftid=ikev2 ,WIN8.1下解决了问题

    • LTNS
      2015年1月1日11:47 | #117

      @bluestar
      谢谢分享!不过我在VMware虚拟机里试过win8.1 pro,倒是不用改也能正常使用,而且有几个用win8的朋友一直正常使用着,可能是不同地方的宽带或移动网络对设置要求不一样。

  111. heihei
    2014年12月18日15:26 | #118

    哥们你修改的什么文件?求教@柠檬

  112. cntest
    2014年12月27日15:09 | #119

    兄弟,我按照您的原文进行的配置,碰到如下两个问题:
    1、使用苹果自带IPSEC VPN客户端连接的时候,提示:”与VPN服务器协议错误“,百思不得其解;
    2、服务器/var/log/ 文件夹下面看不到任何strongswan的日志文件,无法分析错误。

    希望您能帮助我解决一下问题,我已经3天3夜没合眼了,一直在折腾strongswan,我的QQ1********1,您加我QQ也可以,直接在评论里回复也可以。

  113. cntest
    2014年12月27日20:53 | #120

    博主,能否请教一个问题。
    1、我目前是通过ipsec.secrets 文件保存用户名和密码,请问能否使用MYSQL保存用户名和密码,实现用户验证?

    2、如何查看当前VPN在线人数

    3、我使用pulto搭配ikev1的方式实现IOS成功登陆,但是我没有在/var/log文件夹下面找到LOG日志信息。

    请问,如何解决上述问题?

    • LTNS
      2014年12月31日20:38 | #121

      @cntest

      1. 我没用过 MYSQL保存用户名和密码,看网上其他人是用 freeradius + mysql 来认证和管理账号的,我这里的帐号数量不多所以就懒得折腾了;

      2. 可以运行 "ipsec status | grep ESTABLISHED | wc -l" 命令查看VPN在线人数

      3. 配置文件 /etc/ipsec.conf 里的参数 charondebug(V4.x版本的话还有 plutodebug)用于控制日志生成的详细程度,详见 strongSwan官网的wiki说明
      https://wiki.strongswan.org/projects/strongswan/wiki/LoggerConfiguration
      不过我以前试过似乎无效,只能按wiki里提到的另一种方法在命令行界面执行比如以下格式的命令
      ipsec stroke loglevel ike 2

  114. quez
    2015年1月24日12:57 | #122

    求助啊。。。按照攻略安裝的 ipsec 服務就是啟動不了 是什麼原因。。

  115. quez
    2015年1月24日17:09 | #123

    博主求助啊。。。买了vps就为了装vpn 为了你这片攻略 特地把系统装成debian还是配不了。。为上个小网容易么 哎。。。

  116. LTNS
    2015年1月25日18:09 | #124

    @quez
    请详述一下问题,比如日志里的异常记录。

    另外,只是自用翻WALL的话建议试试 shadowsocks,配置起来简单得多,还可以自动ip分流,所以目前我以ss为主、strongSwan为辅(而且有些地方的路由器禁止了 IPsec VPN穿透所以后者就没法用了,strongSwan的好处在于大多数平台都自带兼容的客户端,所以适合不熟悉电脑/智能手机的亲朋们使用,等等)。

    当然针对未越狱的iOS设备,ss客户端用起来也不方便,这时还可以改用 ocserv之类的 SSL VPN,兼容 Cisco AnyConnect客户端,最多可接收服务端推送的200条路由,就是客户端登录连接服务端时有点慢。

  117. quez
    2015年1月28日14:51 | #125

    @LTNS
    求博主聯繫方式。。。對linux不太懂 不知道在哪查日誌。我QQ4*****4 求助求助

  118. quez
    2015年1月28日15:00 | #126

    @LTNS
    我主要是想ios翻墙。。所以shadowsocks就么用。。其实也用你这的攻略想配了电脑先用的 但是也没配起来。。。怀疑是不是openswan和 strongSwan 冲突了?删的不彻底。。。

  119. LTNS
    2015年1月29日21:40 | #127

    @quez
    一般情况下 Debian的日志文件是 /var/log/auth.log,另,可能还需要设置一下日志生成的详细程度,见121楼。

    还有,如果担心 VPS上的软件没删干净,重装操作系统即可。

  120. 张涛
    2015年11月3日14:56 | #128

    @LTNS
    在搭建时遇到Ikev2方式无法连接成功的问题,还请前辈指教,扣扣1085025884,虚心求教,谢谢

  121. fish
    2016年3月5日15:41 | #129

    唉,不容易啊。终于按此文https://hjc.im/shi-yong-strongswanda-jian-ipsecikev2-vpn/,成功搭建IPSec/IKEv2 VPN,并在iOS设备和mac上,成功翻墙。现在strongswan的版本到了5.3.5,文章里面的strongswan还是4.6.4版,博主也该更新一下了。

    [root@ary strongswan_certs]# ipsec version
    Linux strongSwan U5.3.5/K2.6.32-042stab113.11
    Institute for Internet Technologies and Applications
    University of Applied Sciences Rapperswil, Switzerland
    See 'ipsec --copyright' for copyright information.
    [root@ary strongswan_certs]#

  122. LTNS
    2016年3月6日04:51 | #130

    @fish
    呃。。其实很早就升级到5.x了,因为跟4.x的安装大同小异,而博主素有拖延症,所以就一直懒得更新了,不过在这里还是简单整理了一下5.x的安装。
    http://blog.ltns.info/linux/pure_ipsec_win10_vpn_client_debian_vps/

  123. fish
    2016年3月6日04:51 | #131

    我这里,在linux vps上,ipsec在运行中,但客户端机器就是连不上ipsec vpn server,难道ipsec vpn也被gfw破解了吗?博主那里还能连上吗?

    [root@ary ~]# ps aux|grep ipsec
    root 3157 0.0 0.4 14924 536 ? Ss 08:55 0:00 /usr/local/libexec/ipsec/starter --daemon charon
    root 3158 0.0 2.9 834932 3812 ? Ssl 08:55 0:39 /usr/local/libexec/ipsec/charon --use-syslog
    root 4055 0.0 0.6 103324 884 pts/1 S+ 23:37 0:00 grep ipsec
    [root@ary ~]#

  124. LTNS
    2016年3月6日08:48 | #132

    @fish
    我这里正常,不过有些地方的路由器禁止了 IPsec VPN穿透,我以前出差期间遇到过,你可以改用手机的移动数据网络再试试。

  125. fish
    2016年3月7日14:10 | #133

    hi.你说“IKEv2更适合手机等移动终端设备”,我看了一下自己的iphone,上面有设置ikev2 vpn的选项,不过我设置了一下,未能成功连上vpn.你有在自己的iphone上面设置过ikev2 vpn并成功翻墙吗?

    • LTNS
      2016年3月8日16:18 | #134

      @fish
      我手上只有一个备用的 iPhone 4手机,没有 IKEv2功能

  126. fish
    2016年3月20日06:34 | #135

    我觉得strongswan就是个鸡肋。搭建好了,客户端确始终连不上,我已经决定放弃strongswan。还是搭建racoon(ikev1) vpn比较爽。搭建好后,客户端能连上vpn.
    在debian vps上搭建racoon vpn,见这里:
    https://w3.owind.com/pub/linux-cisco-vpn-server-for-dummies/

    在centos7 vps上搭建racoon vpn,见这里:
    http://ifreedomlife.com/2015/01/19/Setup-Cisco-IPSec-VPN-on-CentOS-7/
    (不建议在centos6上搞,无论是编译源码包还是通过rpm包进行安装,都会遇到难以解决的错误)

  1. 2013年2月5日00:51 | #1
  2. 2014年7月28日16:32 | #2
  3. 2014年7月29日19:28 | #3
  4. 2015年11月2日23:39 | #4
36 / 9 = (必填)