在搬瓦工的CentOS7下搭建Strongswan实现在iOS上按需连接VPN

转载自 http://jannerchang.tumblr.com

亲们我又来了,上次介绍了在搬瓦工CentOS7下配置Cisco Anyconnect和Shadowsocks了,其实还有很高级的玩法我没琢磨明白,比如Anyconnect可以分组来实现不同账号是否需要全局翻墙,还可以用证书登录免去输入密码的麻烦,下次介绍Anyconnect如何用LCP(Launch Center Pro)来快速开关Anyconnect😄

今天来介绍下还是在CentOS下搭建Cisco IPsec VPN并且用Apple Configurator来配置Ondemand方式使用VPN,断线切换网络都会自动连接的✌️

为什么要使用IPsec VPN?因为我在我们的Lifehacker群(178170151)里看到一人转发的文章,大概意思是,在iOS8里,Anyconnect变的很慢了,而且Strongswan支持IKEv1和2了,这就可以用Apple Configurator来配置iOS,达成按需访问的需求了。看到这个我又蠢蠢欲动了,我就赶紧去鼓动Allenforrest去研究,结果这货每次见我叫他都选择性逃避,装作没看到!干!又得自力更生!

经过无数个日日夜夜,查到的全是在Debian和Ubuntu下的教程,各种命令语法跟CentOS还有出入,Allen还是各种躲避。。。经历重新安装Debian后又重新装回CentOS的折腾后,终于搞定了。主要还是参考了iOS8 不越狱翻墙方案iOS Ondemand IPSec VPN Setup,这两篇都是Debian和Ubuntu,只要稍作改动即可安装到CentOS上,简易教程来🐦。

首先我们来编译Strongswan,因为直接用yum install 的不能用,不解中😖 下载源码和依赖包

wget http://download.strongswan.org/strongswan-5.2.2.tar.bz2
tar xjvf strongswan-5.2.2.tar.bz2; cd strongswan-5.2.2
yum install make gcc gmp-devel

搬瓦工是OpenVZ的所以用下面的命令来配置

./configure --sysconfdir=/etc --disable-sql --disable-mysql --disable-ldap --enable-dhcp --enable-eap-identity --enable-eap-mschapv2 --enable-md4 --enable-xauth-eap --enable-eap-peap --enable-eap-md5 --enable-openssl --enable-shared --enable-unity --enable-eap-tls   --enable-eap-ttls --enable-eap-tnc --enable-eap-dynamic --enable-addrblock --enable-radattr --enable-nat-transport --enable-kernel-netlink --enable-kernel-libipsec

开始编译

make && sudo make install

完全没有错误出现✌️

生成证书

开始生成证书想要ssl证书的可以看文章里的链接,有列出哦 建立个临时目录来生成证书,然后复制到/etc/ipsec.d/里

mkdir ~/ipsec_cert && cd ~/ipsec_cert

生成服务器证书

用的是iOS8 不越狱翻墙方案他创建的脚本。SERVER换成泥自己的域名或IP都行

wget https://gist.githubusercontent.com/songchenwen/14c1c663ea65d5d4a28b/raw/cef8d8bafe6168388b105f780c442412e6f8ede7/server_key.sh
sh server_key.sh SERVER

生成客户端证书

同样是他的脚本,这个脚本还会生成一个p12证书,这个证书需要导入到iOS里,USER换成你自己的用户名 EMAIL换成你自己的email。

wget https://gist.githubusercontent.com/songchenwen/14c1c663ea65d5d4a28b/raw/54843ae2e5e6d1159134cd9a90a08c31ff5a253d/client_key.sh
sh client_key.sh USER EMAIL

执行完后把.p12证书和cacerts/strongswanCert.pem 下载到本地来备用

我是在~目录里生成的证书,所以在本地端命令如下:

scp -P ssh端口 root@服务器ip:~/ipsec_cert/janner.p12 ~/
scp -P ssh端口 root@服务器ip:~/ipsec_cert/cacerts strongswanCert.pem ~/

配置Strongswan

编辑 /etc/ipsec.conf

sudo vi /etc/ipsec.conf
config setup
    # strictcrlpolicy=yes
    #  uniqueids = replace
    # charondebug="cfg 2, dmn 2, ike 2, net 0" #要看Log时,取消注释本行

conn %default
    keyexchange=ikev1
    dpdaction=hold
    dpddelay=600s
    dpdtimeout=5s
    lifetime=24h
    ikelifetime=240h
    rekey=no
    left=emptyzone.github.io #这里换成你登录 VPN 用的域名或 IP,与生成证书时相同 
    leftsubnet=0.0.0.0/0
    leftcert=vpnHostCert.pem
    leftsendcert=always
    right=%any
    rightdns=8.8.8.8
    rightsourceip=10.0.0.0/8

conn CiscoIPSec
    rightauth=pubkey
    rightauth2=xauth
    auto=add

编辑/etc/ipsec.secrets

sudo vi /etc/ipsec.secrets
#验证用户所需的信息
#用户名 : EAP "密码"
: RSA vpnHostKey.pem
你的用户名 : EAP "你的密码"  

配置防火墙

如果你看过我上一篇blog,防火墙就简单配置下,用firewalld很简单 主要就是开放4500、500端口和esp协议

编辑/usr/lib/firewalld/services/ipsec.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>IPsec</short>
  <description>Internet Protocol Security (IPsec) incorporates security for network transmissions directly into the Internet Protocol (IP). IPsec provides methods for both encrypting data and authentication for the host or network it sends to. If you plan to use a vpnc server or FreeS/WAN, do not disable this option.</description>
  <port protocol="ah" port=""/>
  <port protocol="esp" port=""/>
  <port protocol="udp" port="500"/>
  <port protocol="udp" port="4500"/>
</service>

然后依次输入如下命令就OK了✌️


firewall-cmd --permanent --add-service=ipsec
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

其他的就是配置分流路由器和开机启动啥的,我都没怎么配置,到此服务器端配置结束😄

你可以把下载的两个证书用email发送到你的iOS上,安装后建立个VPN连接,选IPsec,使用证书,选择你的用户名的证书即可,登录下试试吧。成功后就可以按照我上文所引用的两篇文章来使用Apple Configurator来配置你的描述文件,通用用email发送到iOS上安装即可,断线切换网络都会自动连接,给力吧,可以暂时抛弃Anyconnect了吧,哇咔咔,高级配置如只有特定域名才会连VPN的也能设置,自己可以琢磨了😄

这一切都感谢Allen的逃避!

About: dato


发表评论

邮箱地址不会被公开。 必填项已用*标注