quericy / one-key-ikev2-vpn

A bash script base on Centos or Ubuntu help you to create IKEV2/L2TP vpn.
GNU General Public License v3.0
2.08k stars 707 forks source link
ikev2 ikev2-vpn ssl ssl-ikev2 strongswan vpn

一键搭建适用于Ubuntu/CentOS的IKEV2/L2TP的VPN


Author [Platform]() GitHub stars GitHub license

使用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证书的支持,安装时可选使用证书颁发机构签发的证书还是生成自签名证书;

服务端安装说明

  1. 下载脚本:

    wget --no-check-certificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh
    • 注:如需使用其他分支的脚本,请将上述url中的master修改为分支名称,各分支区别详见本页的分支说明节点
  2. 运行脚本:

    chmod +x one-key-ikev2.sh
    bash one-key-ikev2.sh
  3. 等待自动配置部分内容后,选择vps类型(OpenVZ还是Xen、KVM),选错将无法成功连接,请务必核实服务器的类型。输入服务器ip或者绑定的域名(连接vpn时服务器地址将需要与此保持一致,如果是导入泛域名证书这里需要写*.域名的形式);

  4. 选择使用使用证书颁发机构签发的SSL证书还是生成自签名证书:

    • 如果选择no,使用自签名证书(客户端如果使用IkeV2方式连接,将需要导入生成的证书并信任)则需要填写证书的相关信息(C,O,CN),为空将使用默认值(default value),确认无误后按任意键继续,后续安装过程中会出现输入两次pkcs12证书的密码的提示(可以设置为空)

    • 如果选择yes,使用SSL证书(如果证书是被信任的,后续步骤客户端将无需导入证书)请在继续下一步之前,将以下文件按提示命名并放在脚本相同的目录下(SSL证书详细配置和自动续期方案可见https://quericy.me/blog/860/ ):

      1. ca.cert.pem 证书颁发机构的CA,比如Let‘s Encrypt的证书,或者其他链证书;
      2. server.cert.pem 签发的域名证书;
      3. server.pem 签发域名证书时用的私钥;
  5. 是否使用SNAT规则(可选).默认为不使用.使用前请确保服务器具有不变的静态公网ip,可提升防火墙对数据包的处理速度.如果服务器网络设置了NAT(如AWS的弹性ip机制),则填写网卡连接接口的ip地址(参见KinonC提供的方案:#36).

  6. 防火墙配置.默认配置iptables(如果使用的是firewall(如CentOS7)请选择yes自动配置firewall,将无视SNAT并跳过后续的补充网卡接口步骤).补充网卡接口信息,为空则使用默认值(Xen、KVM默认使用eth0,OpenVZ默认使用venet0).如果服务器使用其他公网接口需要在此指定接口名称,填写错误VPN连接后将无法访问外网)

  7. 看到install Complete字样即表示安装完成。默认用户名密码将以黄字显示,可根据提示自行修改配置文件中的用户名密码,多用户则在配置文件中按格式一行一个(多用户时用户名不能使用%any),保存并重启服务生效。

  8. 将提示信息中的证书文件ca.cert.pem拷贝到客户端,修改后缀名为.cer后导入。ios设备使用Ikev1无需导入证书,而是需要在连接时输入共享密钥,共享密钥即是提示信息中的黄字PSK.

客户端配置说明

卸载方式

  1. 进入脚本所在目录的strongswan文件夹执行:

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

  3. 卸载后记得检查iptables配置.

分支说明

部分问题解决方案

如有其他疑问请戳本人博客:https://quericy.me/blog/699/