在vultr的VPS上搭建好PPTP的VPN服务后,迫不及待的准备试用一下时,发现:

  • PPTP在安卓手机上可以使用手机自带的VPN客户端整常登录浏览google
  • Mac系统(10.13.3)居然抛弃PPTP的自带客户端,只有自带IPSec的客户端了
  • Mac上好用的PPTP客户端,Shimo试用版可登录VPN服务整常使用,但试用期过后要收费59刀,破解版安装运行提示文件损坏无法使用
  • 怕其他第三方的PPTP客户端不靠谱

基于以上原因想干脆在VPS上再搭建一个IPSec的VPN算了,搜了一下strongswan貌似可用,那么就愉快的决定开始实验咯

零、主机环境

1
vultr VPS + Ubuntu 16.04

一、安装IPSec服务程序

1
2
apt-get update
apt-get install strongswan strongswan-plugin-xauth-generic

二、配置IPSec服务程序

配置IPSec共享密钥、用户名和密码

1
vi /etc/ipsec.secrets

在配置文件中增加

1
2
: PSK "test"
username : XAUTH "password"

PSK字段的值是预共享密钥,将test换成你想要的共享密钥值,username和password换成你想要的用户名和密码,在IPSec的客户端登录时会需要使用这三个信息

配置IPSec内部路由

1
vi /etc/ipsec.conf

配置后该配置文件配置项内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
config setup
cachecrls=yes
uniqueids=yes

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

注:由于本文的VPS上已搭建了PPTP(内部网络192.168.0.1/24),为防止NAT转发时可能的冲突,本文的strongswan的内部网络选用了192.168.100.1/24

重启strongswan服务

1
ipsec restart

三、配置IP转发

原理同PPTP中的内核IP转发规则的配置相同
打开内核IP转发功能

1
sysctl net.ipv4.ip_forward=1

配置转发规则(假设已将安装了iptables,没有的话参考PPTP的安装)

1
iptables -t nat -A POSTROUTING -s 192.168.100.1/24 -o ens3 -j MASQUERADE

这行命令应该是指将 192.168.100.xxx(192.168.100.1/24)的子网的所有ip包都做该的nat的转发规则转发到ens3的网卡上,ens3是本文中服务器上连接外网的网卡设备名,本文使用的VPS服务器的外网网卡为ens3,其他环境中该名字以ifconfig中外网网卡的名称为准

四、开机启动生效NAT转发规则和启动IPSec

设置开机启动
打开/etc/rc.local文件,在exit 0语句前加入:

1
2
sudo iptables -t nat -A POSTROUTING -s 192.168.100.1/24 -o ens3 -j MASQUERADE
sudo service ipsec restart