为 iOS 在 CentOS6.x 上搭建 IPSec(PSK+XAuth) VPN 服务器

Intro

前面有文章提到过给ios10在ubuntu 14.04上配置IPSec服务器,这里写的是在 CentOS 6.4 环境下的配置。

环境:

  • OpenVZ
  • CentOS 6.4
  • 2.6.32-042stab120.11

How to

Enable tun device

因为这是 OpenVZ 的虚拟机,所以首先要确认系统允许启用 tun 设备。 具体要咨询服务商。

Prerequisite

1
2
3
4
5
6
7
8
9
10
11
12
# kernel
sysctl -w net.ipv4.ip_forward=1;
echo \
"sysctl -w net.ipv4.ip_forward=1" \
>> /etc/rc.local;
# firewall
iptables -t nat \
-A POSTROUTING \
-s 10.0.0.0/8 \
-o venet0 \
-j MASQUERADE;
/etc/init.d/iptables save;

Installation

1
2
3
yum -y install \
strongswan \
strongswan-libipsec;

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cat <<EOF >/etc/strongswan/ipsec.secrets
: PSK sharekeystring

user1 : XAUTH "password for user1"
user2 : XAUTH "password for user2"
EOF

cat <<EOF >/etc/strongswan/ipsec.conf
config setup

conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
left=%defaultroute
leftsubnet=0.0.0.0/0
leftauth=psk

conn iOS
right=%any
rightsourceip=10.0.0.0/24
rightauth=psk
rightauth2=xauth
rightdns=8.8.8.8,208.67.220.220,82.200.69.80,4.2.2.2
auto=add
EOF

# start service
service strongswan restart;
chkconfig strongswan on;

服务器端的工作到此结束。

Advanced

1
2
3
4
5
6
7
8
# manual for /etc/strongswan/ipsec.conf
man 5 strongswan_ipsec.conf;
# manual for /etc/strongswan/ipsec.secrets
man 5 strongswan_ipsec.secrets;
# view service status
strongswan statusall;
# restart service
strongswan restart;

iOS 设置

在 iPhone 上,点击设置–>VPN–>**添加 VPN 配置…**,然后:

  • 类型:IPSec
  • 描述:随便填
  • 服务器:填部署IPSec服务的ip地址或域名
  • 账户:上面的例子中是user1user2
  • 密码:上面的文件里有
  • 使用证书:不使用证书
  • 秘钥:上面配置文件里有(sharekeystring)

Appendix

参考了一些网上的文档: