第五节:Centos7配置strongswan
更新日期:2018年4月23日
本节主要内容为:在Centos7上安装strongswan( VPN服务器软件)、strongswan生成证、strongswan配置文件修改、strongswan对接freeradius
通过源码安装与配置strongswan
说明:本文通过源码安装,通过yum安转也是可以的,如果您希望通过yum安装,可以查看centos7配置strongswan-yum/
但本系列教程均是源码安装,如果通过yum安装,strongswan的路径会有所不同,命令也有所不同
1、安装基础包
yum -y install pam-devel openssl-devel make gcc curl wget
2、获取strongswan,并通过源码的形式安装,版本为5.5.3
cd /root/ wget --no-check-certificate https://download.strongswan.org/strongswan-5.5.3.tar.gz tar xzvf strongswan-5.5.3.tar.gz cd strongswan-5.5.3 ./configure --enable-eap-identity --enable-eap-md5 --enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap --enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap --enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity --enable-certexpire --enable-radattr --enable-swanctl --enable-openssl --disable-gmp make && make install
3、配置证书脚本文件
注意:将下面的ip地址192.168.0.107替换为实际ip地址,如果是IP地址影射,填写映射后的公网地址
cd /root/ vi zhengshu.sh
#证书制作脚本文件 ipsec pki --gen --outform pem > ca.key.pem ipsec pki --self --in ca.key.pem --dn "C=CN, O=Huayu, CN=Huayu CA" --ca --lifetime 3650 --outform pem > ca.cert.pem ipsec pki --gen --outform pem > server.key.pem ipsec pki --pub --in server.key.pem --outform pem > server.pub.pem ipsec pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --in server.pub.pem --dn "C=CN, O=Huayu, CN=192.168.0.107" --san="192.168.0.107" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem ipsec pki --gen --outform pem > client.key.pem ipsec pki --pub --in client.key.pem --outform pem > client.pub.pem ipsec pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --in client.pub.pem --dn "C=CN, O=Huayu, CN=192.168.0.107" --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 cp -r ca.key.pem /usr/local/etc/ipsec.d/private/ cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/ cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/ cp -r server.key.pem /usr/local/etc/ipsec.d/private/ cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/ cp -r client.key.pem /usr/local/etc/ipsec.d/private/ echo "ok" 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客户端的地址,192.168.0.107为网卡ip地址,如果是NAT映射的,请修改为映射后的公网地址,可以只用复制整个配置文件替换原来的内容
vi /usr/local/etc/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! 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 #供 android, linux, os x 使用 conn IPSec-IKEv2 also=IKE-BASE keyexchange=ikev2 leftauth=pubkey rightauth=pubkey rightcert=client.cert.pem auto=add #供 windows 7+ 使用, win7 以下版本需使用第三方 ipsec vpn 客户端连接 conn IPSec-IKEv2-EAP also=IKE-BASE keyexchange=ikev2 rekey=no #服务器对 Windows 发出 rekey 请求会断开连接 leftauth=pubkey rightauth=eap-radius rightsendcert=never #服务器不要向客户端请求证书 eap_identity=%any auto=add 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 dpdaction=clear dpddelay=300s rekey=no left=%defaultroute leftsubnet=0.0.0.0/0 leftauth=pubkey leftcert=server.Cert.pem leftid="C=CN, O=huayu, CN=192.168.0.107" right=%any rightsourceip=10.0.0.0/24 rightauth=eap-radius #使用radius 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 /usr/local/etc/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 /usr/local/etc/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 /usr/local/etc/strongswan.d/charon/xauth-eap.conf
去掉注释 backend = radius
7、配置strongswan共享密钥
说明:其中的huayu为共享密钥,在vpn客户端配置的时候使用
vi /usr/local/etc/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 调用日志模式,排错时使用 ipsec start –nofork # 将 log 输出到当前终端用于调试.