vps技术一键安装IPSEC/IKEV2 VPN脚本

  • A+
所属分类:随笔杂谈

 

为什么需要用到呢?

如果你在VPS上搭建了VPN并且经常使用, 尤其是OpenVPN ,请立即停止使用。VPN协议特征明显,GFW可以非常容易的检测到,从而盯上你的IP,轻则限速,重则彻底屏蔽。常见VPN协议根据易受干扰的程度从大到小依次为:OpenVPN > PPTP > L2TP > IPSec,尤其是OpenVPN,GFW已经可以实现对其定点清除(同样遭此待遇的还有SSH翻墙)。如果你想让自己VPS的IP快速报废,那么就请尽情的使用搬瓦工的控制面板搭建OpenVPN吧。( 重要提醒: 在不明所以的情况下尽量不要在自己的VPS上搭建其他杂七乱八的翻墙服务尤其是一些早已过时和落后的翻墙方式,翻墙手段宜新不宜旧,只搭一个Shadowsocks是最能保证你翻墙效果和服务器稳定的好策略)

安装说明

检查PPP/TUN环境

首先要检查VPS的TUN和PPP是否开启。

  1. cat /dev/net/tun

返回的必须是:

  1. cat: /dev/net/tun: File descriptor in bad state

运行:

  1. cat /dev/ppp

返回的必须是:

  1. cat: /dev/ppp: No such device or address

如果返回内容不是下图的结果的话,请与VPS提供商联系开启PPP和TUN权限。

当然,脚本在安装时也会执行检查,如果不适用于安装,脚本会予以提示。

vps技术一键安装IPSEC/IKEV2 VPN脚本

用法很简单

总结成一句话就是:除了VPS类型要选对以外,其他的一路回车就好了。

特性

服务端要求:Ubuntu 14.04+ / Debian 7(本教程仅在此系统下测试,其他系统不保证) / CentOS 6

客户端:

iOS/OSX=>ikev1,ikev2

Andriod=>ikev1

WindowsPhone=>ikev2

其他Windows平台=>ikev2

可使用自己的私钥和根证书,也可自动生成

证书可绑定域名或ip

要是图方便可一路回车

最近更新

  1. 使用新版strongswan(5.3.5),编译参数修改;
  2. 优化iptables包处理;
  3. 添加接口判断选择;
  4. 加入对iOS9的ikev2支持;
  5. DH组修改为2048,解决iOS9设备8分钟断开的问题;

服务端安装说明

下载脚本

  1. wget nocheckcertificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh

注:如需使用其他分支的脚本,请将上述url中的master修改为分支名称,各分支区别详见本页的分支说明

运行脚本

  1. chmod +x onekeyikev2.sh
  2. bash onekeyikev2.sh

除了第一个选择VPS类型,其他的不懂都可以 直接回车!

等待自动配置部分内容后,选择vps类型(OpenVZ还是Xen、KVM),选错将无法成功连接,请务必核实服务器的类型。

输入服务器ip或者绑定的域名(连接vpn时服务器地址将需要与此保持一致),以及证书的相关信息(C,O,CN),为空将使用默认值(default value),确认无误后按任意键继续

是否使用SNAT规则(可选).使用前请确保服务器具有不变的静态公网ip,可提升防火墙对数据包的处理速度.默认为不使用.

补充网卡接口信息,为空则使用默认值(Xen、KVM默认使用eth0,OpenVZ默认使用venet0).如果服务器使用其他公网接口需要在此指定接口名称,否则连接后可能无法访问外网)

输入两次pkcs12证书的密码(可以为空)

看到install Complete字样即表示安装完成。

默认用户名密码将以黄字显示,可根据提示自行修改配置文件中的用户名密码,多用户则在配置文件中按格式一行一个具体看这个说明,保存并重启服务生效。

使用SFTP来下载VPS中的证书。(我推荐使用filezilla,挺好用的!)

将提示信息中的证书文件 /root/my_key/ca.cert.pem 下载到本地,修改后缀名为.cer后,导入本地计算机

客户端配置说明

连接的服务器地址和证书保持一致,即取决于签发证书ca.cert.pem时使用的是ip还是域名(默认为IP);

Android/iOS/OSX

可使用ikeV1,认证方式为用户名+密码+预共享密钥(PSK);

iOS/OSX/Windows7+/WindowsPhone8.1+/Linux

均可使用IkeV2,认证方式为用户名+密码,均需要先导入证书,可将ca.cert.pem更改后缀名作为邮件附件发送给客户端,手机端也可通过浏览器导入,其中:

iOS/OSX

的远程ID和服务器地址保持一致,用户鉴定选择”用户名”.如果通过浏览器导入,将证书放在可访问的远程外链上,并在系统浏览器(Safari)中访问外链地址;

Windows PC

系统导入证书需要导入到“本地计算机”的”受信任的根证书颁发机构”,以”当前用户”的导入方式是无效的.推荐运行mmc添加本地计算机的证书管理单元来操作;

MMC添加证书的步骤

首先打开CMD,然后输入mmc,回车就会打开这个软件。然后按照图片的步骤一步一步执行。

IKEv2 VPN创建步骤我就不写了,网上一大堆,只截图VPN的属性。

VPN类型自然是 IKEv2,数据加密和身份信息选择图中所示的。

WindowsPhone8.1

登录时的用户名需要带上域信息,即wp”关于”页面的设备名称\用户名,也可以使用%any %any : EAP “密码”进行任意用户名登录,但指定了就不能添加其他用户名了.

WindowsPhone10

的vpn还存在bug(截至10586.164),ikeV2方式可连接但系统流量不会走vpn,只能等微软解决.
Windows10 也存在此bug,部分Win10系统连接后ip不变,没有自动添加路由表,使用以下方法可解决(本方法由 bigbigfish 童鞋提供):手动关闭vpn的split tunneling功能(在远程网络上使用默认网关);
也可使用powershell修改,进入CMD窗口,运行如下命令:

  1. powershell
  2. #进入ps控制台
  3. getvpnconnection
  4. #检查vpn连接的设置(包括vpn连接的名称)
  5. setvpnconnection “vpn连接名称” splittunneling $false
  6. #关闭split tunneling
  7. getvpnconnection
  8. #检查修改结果
  9. exit
  10. #退出ps控制台

卸载方式

进入脚本所在目录的strongswan文件夹(因为默认是安装的最新版本,所以文件夹后面的版本号可能会不同)执行:

  1. cd /root/strongswan5.3.5
  2. make uninstall

自行删除脚本所在目录的相关文件(one-key-ikev2.sh,strongswan.tar.gz,strongswan文件夹,my_key文件夹).

卸载后记得检查iptables配置.

分支说明

  • master分支:经过测试的相对稳定的版本;
  • dev-debian分支:如需在Debian6/7 下使用,请使用该分支的脚本,该脚本由bestoa修改提供;
  • dev分支:开发分支,使用最新版本的strongswan,未进过充分测试,用于尝试和添加一些新的功能,未来可能添加对L2TP的兼容支持,以及对ipv6的支持;

命令说明

  1. # 启动VPN
  2. ipsec start
  3. # 查看VPN状态
  4. ipsec status
  5. # 重启VPN
  6. ipsec restart
  7. # 停止VPN
  8. ipsec stop

开机启动

服务器重启后默认ipsec不会自启动,请命令手动开启,或添加/usr/local/sbin/ipsec start到自启动脚本文件中(如rc.local等):

Centos系统:

  1. chmod +/etc/rc.d/rc.local && echo “/usr/local/sbin/ipsec start” >>/etc/rc.d/rc.local

Ubuntu/Debian系统:

  1. chmod +/etc/rc.local && echo “/usr/local/sbin/ipsec start” >> /etc/rc.local

连上服务器后无法链接外网

打开sysctl文件:

  1. vi /etc/sysctl.conf

找到 net.ipv4.ip_forward=1,删除前面的“#”注释符(按 I键 进入编辑模式),并保存退出(按Esc键 退出编辑模式,然后输入 :wq 保存并退出)。

使用以下指令刷新sysctl:

  1. sysctl p

如遇报错信息,请重新打开/etc/syctl并将报错的那些代码用#号注释,保存后再刷新sysctl直至不会报错为止。

根据留言评论里 @callmeleifeng 的提醒,Openvz因为模板问题,可能会报错:

  1. error: net.bridge.bridgenfcallip6tables is an unknown key
  2. error: net.bridge.bridgenfcalliptables is an unknown key
  3. error: net.bridge.bridgenfcallarptables is an unknown key

给出的解决办法:

  1. # 修复modprobe的:
  2. rm /sbin/modprobe
  3. ln /bin/true /sbin/modprobe
  4. #修复sysctl的:
  5. rm /sbin/sysctl
  6. ln /bin/true /sbin/sysctl

大家如果出现这个问题,可以尝试一下。

添加/修改用户

打开配置文件,并按格式修改。

  1. vi /usr/local/etc/ipsec.secrets

默认配置如下,当然我又添加了一个用户作为示例。

用户名 %any : EAP “用户密码”

  1. : RSA server.pem
  2. : PSK “myPSKkey”
  3. : XAUTH “myXAUTHPass”
  4. myUserName %any : EAP “myUserPass”
  5. Toyo %any : EAP “dou-bi.co”

 

 

  • 我的Telegram
  • 我的TL@oncetwice12
  • weinxin
  • 我的Telegram
  • 我的TL@oncetwice12
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: