星期四, 十二月 01, 2016

letsencrypt + strongswan 配置的IKEv2 VPN

系统环境:
1.  安装 strongswan 5.5.1
./configure --enable-dnscert --enable-ccm --enable-chapoly --enable-ctr --enable-gcm --enable-rdrand --enable-aesni --enable-vici --enable-swanctl --disable-ikev1 --enable-newhope --enable-mgf1 --enable-sha3 --enable-eap-identity --enable-eap-mschapv2 --enable-md4
make
make install

2.  letsencypt
使用acme.sh 来获取letsencypt 的证书
#  ./acme.sh --issue --standalone -d vpn.mydomain.com  --keylength 4096
会在当前目录下生成目录 vpn.mydomain.com ,有几个重要的文件
1. ca.cer   LetsEncypt中间证书  
2. fullchain.cer   签发的域名证书
3. vpn.mydomain.com.key  跟域名证书对应的密钥文件

安装相关文件到对应目录
# cp ca.cert    /etc/ipsec.d/cacerts/acme.ca.cer
# cp fullchain.cer  /etc/ipsec.d/certs/
# cp vpn.mydomain.com.key  /etc/ipsec.d/private/

3.  配置strongswan
1. /etc/ipsec.conf
config setup
  uniqueids=never

conn myvpn
  keyexchange=ikev2
  left=%defaultroute
  leftauth=pubkey
  leftsubnet=0.0.0.0/0
  leftfirewall=yes
  leftcert=fullchain.cer
  leftid=vpn.mydomain.com
  leftsendcert=always
  right=%any
  rightauth=eap-mschapv2
  rightsourceip=10.8.0.0/24
  rightsendcert=never
  eap_identity=%any
  mobike=yes
  compress=yes
  auto=add

2.  /etc/ipsec.secrets
: RSA vpn.mydomain.com.key
user : EAP "userpasswd"

3.  /etc/sysctl.conf
net.ipv4.ip_forward = 1  
net.ipv4.conf.all.accept_redirects = 0  
net.ipv4.conf.all.send_redirects = 0  

4. 启用strongswan
应用sysctl 规则
#  sysctl -p  
启动strongswan
# ipsec start

5. 配置VPN 客户端
android 版本的strongswan
新建一个Profile
Server:  vpn.mydomain.com
VPN Type: IKEv2 EAP(Username / Password)
Username 和 Password 填 ipsec.secrets里的内容

测试下,能否正常
NOTE: 必须保证对应的服务器上打开了 500 和 4500 UDP 端口
还需要应用以下iptable 规则
iptables -A INPUT -p udp --dport 500 --j ACCEPT
iptables -A INPUT -p udp --dport 4500 --j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE






没有评论: