第五节:Centos7配置strongswan(yum)

本节主要内容为:在Centos7上安装strongswan( VPN服务器软件)、strongswan生成证、strongswan配置文件修改、strongswan对接freeradius

通过源码安装与配置strongswan

说明:本文通过源码安装,通过yum安转也是可以的,可以参见本教程

1、安装基础包

yum -y install pam-devel openssl-devel make gcc curl wget

2、获取strongswan,并通过源码的形式安装,版本为5.5.3

yum -y install strongswan strongswan-libipsec strongswan-tnc-imcvs

3、配置证书脚本文件

注意:将下面的$public_ip替换为实际ip地址,如果是IP地址影射,替换为映射后的公网地址

cd /root/
vi zhengshu.sh
#证书制作脚本文件
strongswan pki --gen --outform pem > ca.key.pem
strongswan pki --self --in ca.key.pem --dn "C=CN, O=Huayu, CN=Huayu CA" --ca --lifetime 3650 --outform pem > ca.cert.pem
strongswan pki --gen --outform pem > server.key.pem
strongswan pki --pub --in server.key.pem --outform pem > server.pub.pem
strongswan pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --in server.pub.pem --dn "C=CN, O=Huayu, CN=$public_ip" --san="$public_ip" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem
strongswan pki --gen --outform pem > client.key.pem
strongswan pki --pub --in client.key.pem --outform pem > client.pub.pem
strongswan pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --in client.pub.pem --dn "C=CN, O=Huayu, CN=$public_ip" --outform pem > client.cert.pem
openssl pkcs12 -export -inkey client.key.pem -in client.cert.pem -name "Huayu Client Cert" -certfile ca.cert.pem -caname "Huayu CA" -out client.cert.p12 -password pass:
cp -r ca.key.pem /etc/strongswan/ipsec.d/private/
cp -r ca.cert.pem /etc/strongswan/ipsec.d/cacerts/
cp -r server.cert.pem /etc/strongswan/ipsec.d/certs/
cp -r server.key.pem /etc/strongswan/ipsec.d/private/
cp -r client.cert.pem /etc/strongswan/ipsec.d/certs/
cp -r client.key.pem /etc/strongswan/ipsec.d/private/
cat ca.cert.pem >> /etc/raddb/certs/ca.pem
cat server.cert.pem >> /etc/raddb/certs/server.pem
cat server.key.pem >> /etc/raddb/certs/server.key
cat /etc/raddb/certs/server.key >> /etc/raddb/certs/server.pem
chmod +x /root/zhengshu.sh
/root/zhengshu.sh

说明:在执行证书生成的过程中可以配置证书导入密码,密码可以为空

4、strongswan 配置文件修改

注意:下面的 10.0.0.0/24 为分配给vpn客户端的地址,$public_ip为网卡ip地址,如果是NAT映射的,请修改为映射后的公网地址,可以复制整个配置文件内容替换原来的配置文件内容

vi /etc/strongswan/ipsec.conf
config setup
    uniqueids=never          
conn %default
     keyexchange=ike              #ikev1 或 ikev2 都用这个
     ike=aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
     esp=aes256-sha256,aes256-sha1,3des-sha1!
     auto=start
     closeaction = clear
     dpddelay = 60s        #每60秒向客户发送数据包以检测用户是否在线,不在线则断开!
     dpdtimeout = 120s   #120秒内没收到用户发回的数据包则强制断开! 
     inactivity = 30m  #30分钟内用户与服务器没有数据交互则强制断开!
     ikelifetime = 8h   #每次连接的最长有效期,超过有效期则自动重新连接
     keyingtries = 3   #连接最大尝试数
     lifetime=1h
     margintime = 5m   #ikelifetime 超时前5分钟重新协商连接,以免被强制断开!
     dpdaction = clear   #清除不响应用户的所有缓存、安全信息,Dead Peer Detection
     left=%any                    #服务器端标识,%any表示任意
     leftsubnet=0.0.0.0/0         #服务器端虚拟ip, 0.0.0.0/0表示通配.
     right=%any                   #客户端标识,%any表示任意
conn IKE-BASE
    leftca=ca.cert.pem           #服务器端 CA 证书
    leftcert=server.cert.pem     #服务器端证书
    rightsourceip=10.0.0.0/24    #分配给客户端的虚拟 ip 段,格式为:单个IP或1.1.1.1-1.1.1.5或1.1.1.0/24
 
#供 ios 使用, 使用客户端证书
conn IPSec-IKEv1
    also=IKE-BASE
    keyexchange=ikev1
    fragmentation=yes         #开启对 iOS 拆包的重组支持
    leftauth=pubkey
    rightauth=pubkey
    rightauth2=xauth-radius  #使用radius
    rightcert=client.cert.pem
    auto=add
 
#供 ios 使用, 使用 PSK 预设密钥
conn IPSec-IKEv1-PSK
    also=IKE-BASE
    keyexchange=ikev1
    fragmentation=yes
    leftauth=psk
    rightauth=psk
    rightauth2=xauth-radius #使用radius
    auto=add
 
#供 使用ikev2 协议连接使用(osx、windows、ios)
conn IPSec-IKEv2
    keyexchange=ikev2
    ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024!
    esp=aes256-sha256,3des-sha1,aes256-sha1!
    rekey=no
    left=%defaultroute
    leftid=$public_ip
    leftsendcert=always
    leftfirewall=yes
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=eap-radius
    rightsourceip=10.0.0.150-10.0.0.254
    eap_identity=%any
    dpdaction=clear
    fragmentation=yes
    auto=add
 
#供 windows 7+ 使用, win7 以下版本需使用第三方 ipsec vpn 客户端连接
conn IPSec-IKEv2-EAP
    also=IKE-BASE
    keyexchange=ikev2
    #ike=aes256-sha1-modp1024!   #第一阶段加密方式
    rekey=no                     #服务器对 Windows 发出 rekey 请求会断开连接
    leftauth=pubkey
    rightauth=eap-radius
    rightsendcert=never          #服务器不要向客户端请求证书
    eap_identity=%any
    auto=add
#l2tp 协议连接
conn L2TP-PSK
    keyexchange=ikev1
    authby=secret
    leftprotoport=17/1701 #l2tp端口
    leftfirewall=no
    rightprotoport=17/%any
    type=transport
    auto=add
#供linux客户端
conn ipke2vpn
    keyexchange=ikev2
    ike=aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha256,aes256-sha1,3des-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    leftid=$public_ip
    right=%any
    rightsourceip=10.0.0.0/24
    authby=secret
    rightsendcert=never
    eap_identity=%any
    auto=add

5、配置strongswan.conf 配置文件

说明:2-5行和DNS的内容,其中dns可以在这里指定,也可以在/usr/local/etc/strongswan.d/charon.conf文件中指定,

threads=16  代表程序开启线程数

i_dont_care_about_security_and_use_aggressive_mode_psk  只对5.0以后的版本有效,使系统在使用IKE模式时,支持aggrisive模式

vi /etc/strongswan/strongswan.conf

内容如下

charon {
        i_dont_care_about_security_and_use_aggressive_mode_psk = yes
        duplicheck.enable = no
        threads = 16
        compress = yes 
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf    
               }
	dns1 = 8.8.8.8
	dns2 = 114.114.114.114
}
include strongswan.d/*.conf

6、配置strongswan 加载radius

说明:这里可以设置多个servers,我们设置了server-a,配置中的secret为radius的共享密钥,是strongswan连接radius时用的,它的密码在/etc/raddb/clients.conf 中进行定义,address 是radius 服务器的ip

vi /etc/strongswan/strongswan.d/charon/eap-radius.conf
1)修改 accounting = yes
2)找到 servers 字段中在括号内加入红色字体内容
servers {
               server-a {
                                address = 127.0.0.1
                                secret = testing123
                             }

    }

6、 配置IPsec插件 xauth-eap,支持IKEv1. 即思科的IPSec模式

vi /etc/strongswan/strongswan.d/charon/xauth-eap.conf
去掉注释
backend = radius

7、配置strongswan共享密钥

说明:其中的huayu为共享密钥,在vpn客户端配置的时候使用

vi /etc/strongswan/ipsec.secrets

内容如下

# ipsec.secrets - strongSwan IPsec secrets file
: RSA server.key.pem #使用证书验证时的服务器端私钥
: PSK "huayu" #使用预设密钥时, 8-63位ASCII字符
: XAUTH "huayu"

8、启动strongswan

systemctl restart strongswan

9、启动radiusd

systemctl restart radiusd

备注:strongswan 调用日志模式,排错时使用 strongswan start –nofork # 将 log 输出到当前终端用于调试.