公司领导的苹果电脑想用自带的VPN客户端连接公司内网网络,查看了下最新版本的MAC OS有l2tp,ipsec,IKEV2的VPN连接方式。

  一开始打算搭建strongswan来提供IKEV2的vpn服务,供mac os使用,但是由于客户端的证书以及认证方式没搞明白,一直没连接成功,后来尝试用ipsec的方式,以psk方式认证,vpn连接成功了。

  故这里把搭建的过程记录下来。方便以后参考。


部署:

 1:下载,解压strongswan包:

# wget http://download.strongswan.org/strongswan.tar.gz 
# tar -zxvf strongswan.tar.gz
# cd strongswan-5.5.1

 


 2:编译,安装strongswan:

# ./configure --prefix=/opt/apps/strongswan --sysconfdir=/opt/apps/strongswan/etc  --enable-openssl --enable-nat-transport --disable-mysql --disable-ldap  --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2  --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls
# make && make install

 


 3:跟正常的IKEV2需要制作证书不一样,ipsec psk认证方式是用密码方式认证的,所以可以省略制作证书的步骤,如果需要制作证书,可以按如下步骤:

制作ca证书
# /opt/apps/strongswan/bin/pki --gen --outform pem > ca.pem  
# /opt/apps/strongswan/bin/pki --self --in ca.pem --dn "C=com, O=myvpn, CN=SZSH CA" --ca --outform pem >ca.cert.pem

制作服务端证书
# /opt/apps/strongswan/bin/pki --gen --outform pem > server.pem
# /opt/apps/strongswan/bin/pki --pub --in server.pem | /opt/apps/strongswan/bin/pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=myvpn, CN=SZSH" --san="你的外网地址" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem    

制作客户端证书
# /opt/apps/strongswan/bin/pki --gen --outform pem > client.pem  
# /opt/apps/strongswan/bin/pki --pub --in client.pem |  /opt/apps/strongswan/bin/pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=myvpn, CN=SZSH Client" --outform pem > client.cert.pem
# openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "SZSH CA"  -out client.cert.p12  

把证书安装到相关的目录下
# cp -rf ca.cert.pem /opt/apps/strongswan/etc/ipsec.d/cacerts/
# cp -rf server.cert.pem /opt/apps/strongswan/etc/ipsec.d/certs/
# cp -rf server.pem /opt/apps/strongswan/etc/ipsec.d/private/
# cp -rf client.cert.pem /opt/apps/strongswan/etc/ipsec.d/certs/
# cp -rf client.pem /opt/apps/strongswan/etc/ipsec.d/private/
# cp -rf client.pem /opt/apps/strongswan/etc/ipsec.d/certs/

 本例子由于搭建的是ipsec psk认证方式,上述制作和安装证书的步骤可以省略!!!

 


 4:strongswan相关配置:

  配置VPN服务连接方式,这里只配置一种连接方式,即XAUTH_PSK认证方式。

# vim /opt/apps/strongswan/etc/ipsec.conf
config setup
    uniqueids=never 
conn xauth_psk
    keyexchange=ikev1
    left=%defaultroute
    leftauth=psk
    leftsubnet=0.0.0.0/0
    right=%any
    rightauth=psk
    rightauth2=xauth
    rightsourceip=10.0.0.0/24
    auto=add

  

  配置认证文件,可配置psk认证秘钥与你指定的用户密码:

# vim /opt/apps/strongswan/etc/ipsec.secrets
: RSA server.pem
: PSK "xxxxx"
user : XAUTH "password"

  user和password就是你登录时需要输入的用户密码,如果需要多个用户密码,可多写几行。PSK "xxxxx"为ipsec PSK的秘钥,登录时需要。

 

  最后配置strongswan的相关事项,调试日志与DNS等:

# vim strongswan.conf 
charon {
        load_modular = yes
        duplicheck.enable = no
        compress = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        dns1 = 114.114.114.114
        nbns1 = 114.114.114.114
   
        filelog {
               /opt/apps/strongswan/strongswan.charon.log {
                   time_format = %b %e %T
                   default = 2
                   append = no
                   flush_line = yes
               }
}
}
include strongswan.d/*.conf



 5:防火墙开放相关strongswan所需端口,开启路由转发以及策略。

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A INPUT -p udp --dport 500 -j ACCEPT
# iptables -A INPUT -p udp --dport 4500 -j ACCEPT
# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
# iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT

  10.0.0.0/24为ipsec.conf中配置的VPN分配网段。



  6:开启服务

# /opt/apps/strongswan/sbin/ipsec start


VPN连接测试:

MAC OS:

  创建VPN连接,选择cisco ipsec:

 wKioL1gtI3CgCRv6AACEQD6dGAw606.jpg

  填写你的服务器地址,与你所配置的用户密码:

 wKiom1gtI3HxV4bKAACEmPzTGGk056.jpg

 点击“鉴定设置”,在密钥栏填写你的PSK秘钥:

 wKioL1gtI3GR6pbaAACLlbHu4rM275.jpg

 配置完以上,就可以连接上我们配置的VPN服务器了。



后记:

 使用strongswan的配置IKEV2的VPN服务,一直连接不成功。我以为可能是我客户端的使用方法有问题,不知道有没有大神可以指教一下。