使用bash脚本一键搭建Ikev2的vpn服务端.
- 服务端要求:Ubuntu或者CentOS-6/7或者Debian
- 客户端:
- iOS/OSX=>ikev1,ikev2
- Andriod=>ikev1
- WindowsPhone=>ikev2
- 其他Windows平台=>ikev2
- 可使用自己的私钥和根证书,也可自动生成
- 证书可绑定域名或ip
- 要是图方便可一路回车
- 添加SSL证书自动申请自动更新并应用于IKEv2的解决方案,详见这篇博文:SSL证书自动更新并应用到IKEv2, Nginx ;
- 添加对CentOS7的firewall防火墙的支持;
- 使用ip address替换已被废弃的ifconfig;
- 生成单独的sysctl配置文件/etc/sysctl.d/10-ipsec.conf单独加载,用于开启ipv4转发(如以后卸载或需要关闭net.ipv4.ip_forward,请记得删除此文件);
- 升级strongswan版本到5.5.1,解决iOS9和iOS10的兼容性问题(感谢caasiu的提醒#21);
- 添加导入SSL证书的支持,安装时可选使用证书颁发机构签发的证书还是生成自签名证书;
下载脚本:
wget --no-check-certificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh
运行脚本:
chmod +x one-key-ikev2.sh
bash one-key-ikev2.sh
等待自动配置部分内容后,选择vps类型(OpenVZ还是Xen、KVM),选错将无法成功连接,请务必核实服务器的类型。输入服务器ip或者绑定的域名(连接vpn时服务器地址将需要与此保持一致,如果是导入泛域名证书这里需要写*.域名
的形式);
选择使用使用证书颁发机构签发的SSL证书还是生成自签名证书:
如果选择no,使用自签名证书
(客户端如果使用IkeV2方式连接,将需要导入生成的证书并信任)则需要填写证书的相关信息(C,O,CN),为空将使用默认值(default value),确认无误后按任意键继续,后续安装过程中会出现输入两次pkcs12证书的密码的提示(可以设置为空)
如果选择yes,使用SSL证书
(如果证书是被信任的,后续步骤客户端将无需导入证书)请在继续下一步之前,将以下文件按提示命名并放在脚本相同的目录下(SSL证书详细配置和自动续期方案可见https://quericy.me/blog/860/ ):
是否使用SNAT规则(可选).默认为不使用.使用前请确保服务器具有不变的静态公网ip,可提升防火墙对数据包的处理速度.如果服务器网络设置了NAT(如AWS的弹性ip机制),则填写网卡连接接口的ip地址(参见KinonC提供的方案:#36).
防火墙配置.默认配置iptables(如果使用的是firewall(如CentOS7)请选择yes自动配置firewall,将无视SNAT并跳过后续的补充网卡接口步骤).补充网卡接口信息,为空则使用默认值(Xen、KVM默认使用eth0,OpenVZ默认使用venet0).如果服务器使用其他公网接口需要在此指定接口名称,填写错误VPN连接后将无法访问外网)
看到install Complete字样即表示安装完成。默认用户名密码将以黄字显示,可根据提示自行修改配置文件中的用户名密码,多用户则在配置文件中按格式一行一个(多用户时用户名不能使用%any),保存并重启服务生效。
将提示信息中的证书文件ca.cert.pem拷贝到客户端,修改后缀名为.cer后导入。ios设备使用Ikev1无需导入证书,而是需要在连接时输入共享密钥,共享密钥即是提示信息中的黄字PSK.
连接的服务器地址和证书保持一致,即取决于签发证书ca.cert.pem时使用的是ip还是域名;
Android/iOS/OSX 可使用ikeV1,认证方式为用户名+密码+预共享密钥(PSK);
iOS/OSX/Windows7+/WindowsPhone8.1+/Linux 均可使用IkeV2,认证方式为用户名+密码。使用SSL证书
则无需导入证书;使用自签名证书
则需要先导入证书才能连接,可将ca.cert.pem更改后缀名作为邮件附件发送给客户端,手机端也可通过浏览器导入,其中:
powershell #进入ps控制台
get-vpnconnection #检查vpn连接的设置(包括vpn连接的名称)
set-vpnconnection "vpn连接名称" -splittunneling $false #关闭split tunneling
get-vpnconnection #检查修改结果
exit #退出ps控制台
进入脚本所在目录的strongswan文件夹执行:
make uninstall
删除脚本所在目录的相关文件(one-key-ikev2.sh,strongswan.tar.gz,strongswan文件夹,my_key文件夹).
卸载后记得检查iptables配置.
ipsec启动问题:服务器重启后默认ipsec不会自启动,请命令手动开启,或添加/usr/local/sbin/ipsec start到自启动脚本文件中(如rc.local等):
ipsec start
ipsec常用指令:
ipsec start #启动服务
ipsec stop #关闭服务
ipsec restart #重启服务
ipsec reload #重新读取
ipsec status #查看状态
ipsec --help #查看帮助
可连接但是无法访问网络:
vim /etc/sysctl.conf
sysctl -p
如果之前使用的自签名证书,后改用SSL证书,部分客户端可能需要卸载之前安装的自签名证书,否则可能会报Ike凭证不可接受
的错误:
部分vps可能会出现无法连接到https://download.strongswan.org
的情况,此时可以本地下载strongswan文件,然后利用scp
等工具上传至vps相应目录:
wget --no-check-certificate https://download.strongswan.org/strongswan-5.5.1.tar.gz
scp -P your-vps-port /path/to/file account@your-vps-ip:~
如有其他疑问请戳本人博客:https://quericy.me/blog/699/