Total Pageviews

Tuesday, 13 August 2013

Strongswan 5上配置IKEv1 vpn+Radius

在网上无意中发现Strongswan自从5.0开始就支持IKEv1的XAUTH+Radius的认证了,虽然是通过比较奇特的一个方式:

(以下摘自Strongswan的Mailist)

[ 客户端: Xauth ] <--IKEv1--> [ 服务器: Xauth -> EAP-MD5 -> EAP-RADIUS ] <--RADIUS--> [ AAA ]

简而言之是服务器把收到的XAUTH认证信息发送给Eap-Radius去验证,而Eap-radius是给IKEv2编写的Radius插件。

目前Debian即使是unstable里面都没有Strongswan 5.x,所以要自己编译。编译平台Debian 6.0.7 x86

首先

apt-get build-dep strongswan
然后从strongswan的官网上拖源码包,最新的是5.0.45.1.0。用以下选项编译安装:

./configure --prefix=/usr --sysconfdir=/etc --enable-eap-identity --enable-eap-mschapv2 --enable-md4 --enable-integrity-test --enable-xauth-radius --enable-eap-radius --enable-eap-md5 --enable-radattr
其中xauth-eap和eap-radius必须有。

5.0的配置文件和之前的稍有不同,直接用4.x的配置文件会提示有一堆options deprecated,删掉就可以了,不影响。

然后在ipsec.conf里面加上:
05/05更新:感谢铁牛兄的技术贴,详见:http://bao3.blogspot.com/2013/05/racoonstrongswanvpn.html

05/08更新:精简配置,添加PFS支持

08/09更新:新版本5.1.0编译参数改为--enable-xauth-radius,配置文件中rightauth2=xauth-eap改为rightauth2=xauth-radius即可

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        rekey=no
        keyingtries=3
        left=server.ip.address
        leftsubnet=0.0.0.0/0
        right=%any

conn IKEv1
        keyexchange=ikev1
        auto=add
        aggressive=yes
        compress=yes
        dpdaction=clear
        type=tunnel
        esp=aes128-sha1-modp2048 # 添加PFS(完全正向保密)支持,dh group选择group 14
        leftauth=psk
        leftid=ipsecgroupid
        rightsourceip=vpn.client.ip.address/24
        rightauth=psk
        rightauth2=xauth-radius
并且在strongswan中需加入:

eap-radius {
        ...
        accounting = yes
        ...
}
基本不需要解释吧。VPN客户端IP范围格式是x.x.x.0/24,比如说我想把客户端允许的IP设为192.168.1.1-255,那么就是192.168.1.0/24。iptables里面的转发设置的范围要一致。

psk和L2TP的psk一样,是同一个pre-shared key。

测试在iOS 4.2、Android 2.3 (VPNC Widget)、Windows (Shrew VPN Client)、webOS (2.1.2)和Blackberry OS 5上通过。

参考:
https://lists.strongswan.org/pipermail/users/2012-June/007726.html
https://lists.strongswan.org/pipermail/users/2012-November/008464.html
------

https://github.com/vincentbernat/vpnoo