在网上无意中发现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
(以下摘自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