最新消息:

[转载]使用strongSwan搭建IPSec VPN for iOS

VPN 林夕 16620浏览 0评论

================缘起================

http://www.hi-pda.com/forum/viewthread.php?tid=1268642
Hi!PDA » Discovery » d版多少人在玩vps?除了l2tp和pptp之外,openvpn的多么?有玩strongswan的吗?

wjchen 10# 发表于 2013-9-26 12:17

回复 9# 不要问我从哪来
ios、windows 7以上、android 4.3、mac都不需要客户端,参考:
https://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh-cn

鬼哭 18# 发表于 2013-11-17 20:47

我上次折腾CentOS 6.2上的racoon记录:
http://www.fixabc.com/memo/centos-6-2-install-cisco-ipsec-vpn.html

这个比较简单

stevecai 20# 发表于 2013-11-17 21:10

centos下果然有人做到了的,
http://igfw.net/archives/5665/comment-page-1

================缘起================
转载自:http://igfw.net/archives/5665/
使用strongSwan搭建IPSec VPN for iOS
2011年10月4日 | 分类: 翻墙相关 | 标签: Cisco VPN, iOS, strongSwan, 搭建IPSec VPN

一直困扰我的VPN问题终于得到了完美的解决,我终于可以“安全的”无墙了!期间也在网络上找了很多文章,看了很多人的Blog和FAQ,终于解决 了iOS的Cisco VPN(IPSec VPN)问题。经验一定要分享,下面我会把如何搭建和配置Cisco VPN的过程做个详细的介绍。
还是先说一下iOS设备的一些限制,也就是为啥非要选用Cisco VPN:
1. iOS设备如果不越狱,支持的VPN有PPTP, L2TP, Cisco VPN, Cisco AnyConnect和Juniper的Junos Pulse。如果越狱就可以使用openVPN。
2. PPTP已经被GFW给block了,很多人都在使用L2TP,L2TP支持标准的安全特性CHAP和PAP,可以进行用户身份认证。在安全性考虑上,L2TP仅定义了控制消息的加密传输方式,对传输中的数据并不加密。不安全,不考虑。
3. Cisco AnyConnect需要连接Cisco的Router,ASA或者PIX设备,Junos Pulse需要连接Juniper的SA系列VPN产品。这都需要花钱买,都很贵的,不考虑。
4. 有人会问了,openVPN也是一个选择啊。对,没错,但是iOS设备安装openVPN Client需要越狱。这点是我不能接受的。不考虑。
5. 剩下唯一的解决方案就是找到一个软件,能够支持Cisco VPN Client。
感谢google的强大,终于找到了一款opensource的软件strongSwan。strongSwan可以支持Cisco VPN Client,而且在其官方网页上居然给出了配置方法,很详细,详情请见这里。不得不说strongSwan为我们GFW内的人们做了一件大好事儿啊。
我这里给出的配置步骤是根据官方网站的文档和我自己配置过程中的一些体会结合而成,不多说了,开始配吧!

1. 首先要在无墙国家有一台主机

(总要有个连接点吧,要不连到哪儿去呢?跟谁建VPN呢?)。我选择的是linode,一个评价相当高的VPS服务提供商。如果大家也选择这里作为您的VPN Server,请从这里注册,因为是我推荐的哦,如果您follow我的link注册成功,并且使用满90天,linode就能够赠送我$20,也就是一个月的使用期。嘻嘻。我的推荐码:2d244ab3d3fe4d033eb494266b87dc7fbb046407

2. 选用操作系统,我选的是Ubuntu。Centos我的一个同事也测试过,没问题。

3. 下载strongSwan:

* wget http://download.strongswan.org/strongswan-4.5.2.tar.bz2
* tar jxvf strongswan-4.5.2.tar.bz2.1.
* cd strongswan-4.5.2

4. 编译,安装strongSwan:

* ./configure –prefix=/usr –sysconfdir=/etc –libexecdir=/usr/lib –with-ipsecdir=/usr/lib/strongswan –enable-cisco-quirks –enable-openssl –enable-nat-transport –disable-mysql –disable-ldap –disable-static –enable-shared
* 这里–enable-cisco-quirks和 –enable-nat-transport非常关键,必须的!
* make
* make install

5. 生成CA证书:

* ipsec pki -gen -outform pem > caKey.pem
* ipsec pki -self -in caKey.pem -dn “C=CN, O=test, CN=Test CA” -ca -outform pem > caCert.pem

6. 生成Server端证书:

* ipsec pki -gen -outform pem > serverKey.pem
* ipsec pki -pub -in serverKey.pem | ipsec pki -issue -cacert caCert.pem -cakey caKey.pem -dn “C=CN, O=test, CN=vpn.test.com” -flag serverAuth -outform pem > serverCert.pem

7. 生成Client端证书:

* ipsec pki -gen -outform pem > clientKey.pem
* ipsec pki -pub -in clientKey.pem | ipsec pki -issue -cacert caCert.pem -cakey caKey.pem -dn “C=CN, O=test, CN=client” -outform pem > clientCert.pem

8. 将CA证书转换为.cer格式,将Client证书转换为.p12格式

(解释一下原因,这里转换的这两个证书都是要安装在iOS设备上的,iOS设备也能 够支持pem格式的,但是有些朋友使用pem格式的导入iOS设备时出了一些问题,所以为了保险起见,还是cer的吧。Client的.p12格式是因为 p12格式的可以即包含key,也包含证书文件,为了方便,省得导入两个文件了)

* openssl x509 -inform PEM -outform DER -in caCert.pem -out caCert.cer
* openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name “client” -certfile caCert.pem -caname “Test CA” -out clientCert.p12

9. Copy生成的key和证书文件到相应的目录:

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

10. 配置/etc/ipsec.conf文件

config setup
plutostart=yes
nat_traversal=yes

conn ios
keyexchange=ikev1
authby=xauthrsasig
xauth=server
left=%defaultroute
leftsubnet=0.0.0.0/0
leftfirewall=yes
leftcert=serverCert.pem
right=%any
rightsubnet=10.0.0.0/24 (VPN连接后分配给iOS设备的地址所在网段)
rightsourceip=10.0.0.2
rightcert=clientCert.pem
pfs=no
auto=add

11. 创建ipsec.secrets文件 /etc/ipsec.secrets,并编辑:

# /etc/ipsec.secrets – strongSwan IPsec secrets file

: RSA serverKey.pem (Server的Key文件)
test : XAUTH “password” (test为用户名,password为密码,这里的密码一定要用“”引起来)

12. 配置/etc/strongswan.conf文件,需要分配一个没有任何污染的DSN给VPN连接成功的iOS设备:

# /etc/strongswan.conf - strongSwan configuration file

charon {
# …
}

pluto {
dns1 = 8.8.8.8 (google的DNS,google又做的一件好事儿!)
}

13. 配置iOS设备:

将生成的caCert.cer和clientCert.p12通过邮件的方式或者通过web方式下载到iOS设备上,并进行证书安装。
选择 Settings 选择 General > Network > VPN > Add VPN Configuration
选中IPSec VPN
description用来标识你的vpn的,没有特别的限制
Server一定要填入签发Server端证书时,输入的“CN=vpn.test.com”的=后的部分,即vpn.test.com。如果不一致,iOS设备会报错,Server验证失败。
Account填入ipsec.secrets的用户名
Password填入ipsec.secrects的密码
切换Use Certificate到on,并选择导入和Clent的证书

14. VPN连接:

在Settings > VPN下,将 VPN 切换到 ON 开始进行IPSec VPN的协商和连接。
连接好后,会给出一个Notification“Welcome to strongSwan – the Linux VPN Soluution!”。看到该notificatio后,恭喜你,连接成功了!!
BTW:我顺便说一下iptables的配置:
1. strongSwan用到的端口就是UDP 500和4500,所以在iptables的filter表的INPUT 链要加入允许UDP 500和4500进入,即:

-A INPUT -p udp -dport 500 -j ACCEPT
-A INPUT -p udp -dport 4500 -j ACCEPT

2. 大家使用VPN的主要目的是为了访问大量的信息,所以需要配置NAT,具体配置如下:

-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

3. 需要配置filter表的Forward链:

-A FORWARD -s 10.0.0.0/24 -j ACCEPT

大功告成!
大家可以安全放心的使用VPN啦!经我的测试,WIFI通过NAT Router连接和GPRS连接都没问题。联通的网络我没有试过,如果有试过的请告知大家结果。谢谢!
如果大家在配置过程中有问题可以DM我@henrywangxf,也可以comment,我有时间一定

原文:http://www.xxqww.com/?p=22

转载请注明:一秒钟的梦 » [转载]使用strongSwan搭建IPSec VPN for iOS

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址