1.centos 安装依赖:yum install -y gmp-devel
2.下载编译
wget http://download.strongswan.org/strongswan.tar.gz
tar xzf strongswan.tar.gz
cd strongswan-*
./configure --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
错误:make: *** No targets specified and no makefile found. Stop.
(如果编译失败 执行yum groupinstall "Development tools" )
错误:configure: error: OpenSSL libcrypto not found
(如果报错 执行yum install openssl-devel.x86_64 )
3.执行完上述步骤之后,安装完成,其配置文件在/etc目录下
4.签发并安装证书
1)生成CA证书
生成私钥
ipsec pki --gen --outform pem > ca.pem
利用私钥,签名CA证书
ipsec pki --self --in ca.pem --dn "C=com, O=nsshell, CN=Nsshell VPN CA" --ca --outform pem >ca.cert.pem
2)服务器证书
生成私钥
ipsec pki --gen --outform pem > server.pem
用CA证书签发服务器证书
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=nsshell, CN=107.170.71.232" \--san="107.170.71.232" --flag serverAuth --flag ikeIntermediate \
--outform pem > server.cert.pem
注意–dn –san中的域名或者IP地址必须和客户端访问服务器时使用的URL或IP一致,即服务器用于服务的URL或IP
3)客户端证书
生成私钥
ipsec pki --gen --outform pem > client.pem
利用CA签名客户端证书
ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=nsshell, CN=Nsshell VPN Client" --outform pem > client.cert.pem
4)生成pkcs12证书
openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "Nsshell VPN CA" -out client.cert.p12
5)安装证书
cp -r ca.cert.pem /etc/ipsec.d/cacerts/
cp -r server.cert.pem /etc/ipsec.d/certs/
cp -r server.pem /etc/ipsec.d/private/
cp -r client.cert.pem /etc/ipsec.d/certs/
cp -r client.pem /etc/ipsec.d/private/
注意,本章节创建和签名证书的过程中,使用的DN除CN外其他必须一致,例如,–dn “C=com, O=nsshell, CN=Client…”,创建p12证书时使用的caname需要和ca证书的CN值一致。
将上面得到的ca证书(ca.cert.pem)、客户证书(client.pem, client.cert.pem)、p12证书(client.cert.p12)打包发给客户端用户安装、建立VPN链接。
5.配置/etc/ipsec.conf 配置文件
config setup
strictcrlpolicy=yes
uniqueids = no
conn windows7
keyexchange=ikev2
ike=aes256-sha1-modp1024!
rekey=no
leftdns = 8.8.8.8,8.8.4.4
rightdns = 8.8.8.8,8.8.4.4
left=%defaultroute
leftauth=pubkey
leftsubnet=0.0.0.0/0
leftca = "C=com, O=nsshell, CN=Nsshell VPN CA"
leftcert=server.cert.pem
leftid=104.236.76.215
right=%any
rightauth=eap-radius
rightsourceip=10.0.0.0/24(自己分配内存池,但该内存池要加到服务器的路由表)
rightsendcert=never
eap_identity=%any
auto=add
说明:
conn位于配置文件的全局区,后面紧紧跟的是该VPN服务器的
名称,
keyexchange=ikev2: 指定使用的密钥交换协议是ikev1
left=%defaultroute: 远端服务器的ip地址是任意的
leftauth=pubkey : 表示远程服务器数据加密方式是证书
leftca = "C=com, O=nsshell, CN=Nsshell VPN CA":是CA证书dn后的内容
leftcert=server.cert.pem:服务器的证书
leftid=104.236.76.215:VPN 服务器的IP 地址或域名
right=psk 表示本地客户端的数据加密方式的预共享密钥
right=%any: 表示客户端的ip地址是任意的
rightauth=eap-radius:表示客户端的认证方式是radius 认证方式
rightsourceip=10.0.0.0/24: 为客户端分配ip地址池,可以指定
fragmentation=yes:开启对 iOS 拆包的重组支持。
eap_identity=%any:表示客户端的名字是任意的
auto 定义 strongswan 启动时该连接的行为start 是启动; route 是添加路由表,有数据通过就启动; add 是添加连接类型但不启动; ignore 是当它不存在。默认是 ignore。看起来似乎是 route 比较好,但问题是我们服务器端不能预分配虚拟 IP,所以服务器端一般用的都是 add。而客户端文本配置可以选择 start。
注意:(conn 关键字的所在的内容与配置的真正内容即(keyexchange所在的内容不对齐,最好(keyexchange开头一下的内容起始行用TAB键补齐)))
6.配置/etc/strongswan.conf 文件
charon{
load_modular=yes
duplicheck.enable=no
compress=yes
ipsec_use_ip_as_domain=true
filelog{
/var/log/strongswan.charon.log{
time_format=%b %e %T
default=2
append=no
flush_line=yes
}
}
plugins{
include strongswan.d/charon/*.conf
eap-radius{
class_group=yes
eap-start=no
servers{
103.195.150.156{
address=103.195.150.156(radius 服务器ip地址)
secret=654321(radius 服务器密码)
nas_identifer=ipsec-gateway
sockets=20
}
}
}
dns1=8.8.8.8
dns2=8.8.4.4
nbns1=8.8.8.8(for windows)
nbns2=8.8.4.4(for windows)
}
7.配置/etc/ipsec.secrets
vi /etc/ipsec.secrets
# /etc/ipsec.secrets - strongSwan IPsec secrets file
: RSA server.pem
保存退出
8.配置 /etc/strongswan.d/charon-logging.conf
vi /etc/strongswan.d/charon-logging.conf
charon {
# Section to define file loggers, see LOGGER CONFIGURATION in
# strongswan.conf(5).
filelog {
# is the full path to the log file.
# {
# Loglevel for a specific subsystem.
# =
# If this option is enabled log entries are appended to the existing
# file.
# append = yes
append = no
# Default loglevel.
# default = 1
default =2
# Enabling this option disables block buffering and enables line
# buffering.
# flush_line = no
flush_line =yes
# Prefix each log entry with the connection name and a unique
# numerical identifier for each IKE_SA.
ike_name = yes
# Prefix each log entry with a timestamp. The option accepts a
# format string as passed to strftime(3).
time_format =%b %e %T
}
}
# Section to define syslog loggers, see LOGGER CONFIGURATION in
# strongswan.conf(5).
syslog {
# Identifier for use with openlog(3).
# identifier =
# is one of the supported syslog facilities, see LOGGER
# CONFIGURATION in strongswan.conf(5).
{
# Loglevel for a specific subsystem.
# =
# Default loglevel.
default = 2
# Prefix each log entry with the connection name and a unique
# numerical identifier for each IKE_SA.
ike_name =yes
}
}
}
日志信息在/var/log,查看日志信息 tail -200 strongswan.charon.log
首次启动: ipsec start
以后启动: ipsec restart
二.系统配置
打开你系统的转发功能,修改/etc/sysctl.conf文件
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding=1
保存退出,执行下面命令:
sysctl –p
配置防火墙
iptables 配置方法
将下面几条规则加入 iptables 规则中, 适当使用 -I 参数替换 -A 参数, 确保所有的项目位置都在拒绝项前面.
#开放端口
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
#启用ip伪装
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
#添加转发
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT(10.0.0.0/24为为客户端分配的ip地址池)
#保存规则
service iptables save
#重启服务
service iptables restart
2.双击client.cert.p12 文件
选择本机计算机,并选择下一步
选择证书,并点击下一步
输入密码,选择下一步
按上图操作点击确定
注意:上述步骤图1,选择当前用户再执行一次,其余步骤都一样
3.点击完成,证书安装完毕
4.如下图所示为电脑配置图:
1).配置IKEV2
打开设置—>选择网络和Internet 在左菜单里面选择VPN—>添加VPN
点击报存
2)打开控制面板->网络共享中心->更改适配器
选择配置的VPN 右键选择属性
选择红色标书内容,并确定,点击链接遍成功
建立连接之后无法访问网络,还需要设置
网络控制面板->网络和Internet->网络和共享中心->更改适配器
双击创建的VPN 选择属性
选择上面红色标志区域,点击属性