这货配了很多次了,但是每次都要去网上找真是不爽……所以还是做个备忘吧,以免再次陷入如此蛋疼的境地……

P.S. 这个是在 Debian Wheezy 下完成的,所以其他平台概不负责:P

####下载、编译

其他貌似还好,只要到 StrongSwan 官网上弄最新的版本就好了……只是编译的配置是比较蛋疼的,虽说只是自用而已,但貌似这个可以用 Radius 的……所以看起来这个是比较适合我的:

./configure --sysconfdir=/etc --enable-eap-identity --enable-eap-mschapv2 --enable-md4 --enable-integrity-test --enable-test-vectors --disable-sql --disable-mysql --enable-xauth-eap --enable-eap-radius --enable-eap-md5 --prefix=/usr --enable-openssl --enable-shared --enable-eap-peap --enable-dhcp

后来的事情就比较简单了,直接去做 make && make install 就可以了。当然,如果在 configure 过程中出现错误提示只要根据提示去 apt-get 就好了。

####StrongSwan配置

这个就是关键问题了……由于本人使用的习惯,采用了针对iOS使用证书+PSK、对其他平台采用 XAUTH PSK 的方式,由于 Windows 几乎不使用,所以暂时没有添加 ikev2。至于证书,为了方便,直接使用 StartSSL 提供的免费证书,然后以下为配置文件:

ipsec.conf

config setup
    uniqueids=never 

conn iOS_cert
    keyexchange=ikev1
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=pubkey
    rightauth2=xauth
    rightsourceip=10.0.0.0/24
    rightcert=client.cert.pem
    auto=add

# also supports iOS PSK and Shrew on Windows
conn android_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

strongswan.conf

# strongswan.conf - strongSwan configuration file
charon {
       duplicheck.enable = no

       dns1 = 208.67.222.222
       dns2 = 208.67.220.220

       # for Windows only
       nbns1 = 208.67.222.222
       nbns2 = 208.67.220.220

       filelog {
               /var/log/strongswan.charon.log {
                   time_format = %b %e %T
                   default = 2
                   append = no
                   flush_line = yes
               }
               stderr {  
         			# more detailed loglevel for a specific subsystem, overriding the  
         			# default loglevel.  
         			ike = 3  
         			knl = 3  
         			# prepend connection name, simplifies grepping  
         			ike_name = yes  
       			}  
       }
}

ipsec.secrets

#
# ipsec.secrets
#
# This file holds the RSA private keys or the PSK preshared secrets for
# the IKE/IPsec authentication. See the ipsec.secrets(5) manual page.
#
: RSA server.key.pem
: PSK "PSK password"
username : XAUTH "user password"

剩下的就是把各种证书倾倒到 /etc/ipsec.d 下的 cacertscertsprivate中了。然后执行 ipsec start --nofork,查看是否能够正常运行。如若能运行的话,那么基本就没什么问题了。

####配置 iptables 这个就非常简单了,可以说就是一句话

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

地址和接口根据自己实际情况修改即可。

当然,一个非常重要的事情,就是千万不要忘记对/etc/sysctl.conf的修改,开启 ip_forward,然后做一次 sysctl -p 以令更改生效。

其余的就没什么了,享受科学上网吧!

同时感谢以下来源的帮助:

[1] 使用 Strongswan 架设 Ipsec VPN

[2] 使用openswan搭建{ikev1,ikev2,l2tp} VPN w/Radius {auth,accounting}

[3] 使用StrongSwan搭建 IKEv1 IKEv2 VPN服务器