haohaolee's blog

nerd以上,geek未满

使用 StrongSwan 搭建 Ipsec VPN (2) for iOS

再不写这个 part 2,搞不好就胎死腹中了。好嘛,书接上回,这次我们在 part 1 的基础上搭建一个 iOS 可以用的 ipsec VPN。

iOS 其实还可以用 L2TP VPN,这里且不谈我对 L2TP over ipsec 的无尽bs,如果要支持手上众多设备,还是采用纯 ipsec 的解决方案比较好。顺便吐个槽,窃以为支不支持以 Cisco 为代表的众多商用 VPN 服务器是一个移动设备是否成熟到胜任商业应用的标准,对,说的就是你,Android 。人家 iOS 和塞班都支持,你都出道几年了?看不到怨声载道吗?

正文

  • 服务器

首先在 part 1 的基础上,修改三个配置文件就 OK 了:

ipsec.conf:

在配置文件把 setup 一节开头添加两行:

1
2
3
4
5
6
7
config setup
    # add pluto for ikev1
    plutostart=yes
    nat_traversal=yes  
    strictcrlpolicy=no
    charonstart=yes
    uniqueids=yes

然后在末尾添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
conn ipad
    type=tunnel
    authby=xauthrsasig
    xauth=server
    keyexchange=ikev1
    ike=aes128-md5-modp1024
    esp=aes128-md5
    auto=add
    modeconfig=push
    compress=yes
    dpdaction=clear
    pfs=no
    leftcert=strongswan.crt
    leftsubnet=0.0.0.0/0
    right=%any
    rightsourceip=192.168.66.248/29
    rightca=%same

注意到 authby=xauthrsasig 这一行,因为 iOS 设备采用 rsa + xauth 的混合认证,需要同时配置证书和密码认证。服务器端证书 strongswan.crt 的颁发和配置参考 part 1 的说明。同样的,ip 地址段按自己喜好随意,因为 part 1 已经配置了一个 ip 段,这里就复用一下,防火墙的配置也可以省省了。

ipsec.secret:

同上,在末尾添加:

1
username : XAUTH "password"

用户名和密码自己随意,其他保持不变

strongswan.conf:

修改 pluto 一项为:

1
2
3
4
pluto {
    dns1 = 8.8.8.8

}

这里一样加上 google 的 dns 以防万一客户端没有被推送到默认的 dns

  • 客户端

首先按照 part 1 证书一节所述,给你的 iOS 设备颁发证书,假设得到的是 iOS.p12,然后把该文件和 ca.crt (iOS 对证书格式要求不高,不一定要是 der) 一起传到设备上。我习惯通过 email,然后在 safari 里面点击附件就可以安装了。

最后的最后,还是截个图了事,一图胜千言啊:

设置的时候选择你刚刚安装的证书就行了。

update 2011/5/21: 这里有一份官方 wiki 专门讲 iOS 配置,一并参考: http://wiki.strongswan.org/projects/strongswan/wiki/IOS_(Apple))

如果你觉得这篇文章有用,可以考虑给我点 Bitcoin 小费: 14kB4s43d1CNy4VipGfpfennivJAgHkEnK

Posted via UltraBlog.vim.

Comments