测试平台 :DigitalOcean VPS ubuntu14.04 x64, strongswan5.2.2
运行以下命令请使用root权限
一:安装strongswan
由于ubuntu软件仓库中strongswan版本较低,因此从官网源码编译安装
apt-get install build-essential #编译环境
aptitude install libgmp10 libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev #编译所需要的软件
- strongswan官网
- 5.2.2版本地址
- 注:对于更新的版本,不排除该教程某些地方有失效的可能,请灵活处理
wget http://download.strongswan.org/strongswan-5.2.2.tar.bz2
tar -jxvf strongswan-5.2.2.tar.bz2 && cd strongswan-5.2.2
./configure --prefix=/usr --sysconfdir=/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
二:生成、安装证书
win7+和Android、wp8.1等平台的VPN客户端走ikev2协议,需要制作相应的证书
- 1.先生成根证书
ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "C=CN, O=strongSwan, CN=strongSwan CA" --ca --outform pem > caCert.pem
- 2.然后是服务器端的证书
ipsec pki --gen --outform pem > serverKey.pem
ipsec pki --pub --in serverKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=strongSwan, CN=VPS的公网ip或域名" --san="VPS的公网ip或域名" --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem
- 3.客户端的证书
ipsec pki --gen --outform pem > clientKey.pem
ipsec pki --pub --in clientKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=strongSwan, CN=client" --outform pem > clientCert.pem
生成的客户端证书 clientCert.pem 不能直接导入到win7+或Anroid设备中,需先转换为.p12格式。执行后会提示要设置证书使用密码,可以设置一下密码也可以直接回车(密码为空)
openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out clientCert.p12
- 4.安装证书
cp caCert.pem /etc/ipsec.d/cacerts/
cp serverCert.pem /etc/ipsec.d/certs/
cp serverKey.pem /etc/ipsec.d/private/
客户端安装caCert.pem与clientCert.pem(clientCert.p12),下载文件可使用ftp软件,或使用
cat caCert.pem
及cat clientCert.pem
命令,将打印出的内容直接复制到本地即可。
三:配置strongswan
- 1: /etc/ipsec.conf
config setup
strictcrlpolicy = yes
cachecrls = yes
uniqueids = yes #允许多设备同时在线
conn %default
left=%any
leftsubnet=0.0.0.0/0
right=%any
rightsourceip=10.11.1.0/24
rightdns=8.8.8.8,8.8.4.4
conn ikev1
keyexchange=ikev1
leftauth=psk
rightauth=psk
rightauth2=xauth
auto=add
conn windows7
keyexchange=ikev2
ike=aes256-sha1-modp1024!
rekey=no
leftauth=pubkey
leftcert=server.cert.pem
rightauth=eap-mschapv2
rightsourceip=10.31.2.0/24
rightsendcert=never
rightdns=8.8.8.8,8.8.4.4
eap_identity=%any
auto=add
- 2: /etc/ipsec.secrets
: RSA server.pem
: PSK "foo" #设置的证书密码
username : XAUTH "passwd"
username2 : EAP "passwd" #windows用户
对于windowsphone8.1,在客户端输入的用户名发送到服务器显示为
设备名称\用户名
的形式,故认证需加上设备名称,设备名称在设置-关于-手机信息
中查看
- 3: /etc/strongswan.conf
#加入分配的dns
charon {
dns1 = 8.8.8.8
dns2 = 208.67.222.222
}
四:配置 Iptables 转发
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
#开启转发
vi /etc/sysctl.conf
#打开注释
net.ipv4.ip_forward = 1
#执行
sysctl -p
iptables -t nat -A POSTROUTING -s 10.11.1.0/24 -o eth0 -j MASQUERADE #地址与上面地址池对应
iptables -A FORWARD -s 10.11.1.0/24 -j ACCEPT #同上
#为避免VPS重启后NAT功能失效,可以把如上5行命令添加到 /etc/rc.local 文件中,添加在exit那一行之前即可。
五:启动strongswan
- 后台运行:
ipsec start
- 滚动日志:
ipsec start --nofork
参考链接:
- http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&variant=zh
- http://si-you.com/?p=1167
- http://blog.ltns.info/linux/pure_ipsec_multi-platform_vpn_client_debian_vps/