Strongswan是一种开源的多平台IPSec实现。这是基于IPSec的VPN解决方案,专注于强大的身份验证机制。Strongswan支持IKEv1和IKEv2密钥交换协议,基于X.509证书或预共享密钥的身份验证以及安全的IKEv2 EAP用户身份验证。
在本教程中,我将向您展示如何使用Strongswan安装IPSec VPN服务器。我们将创建一个具有“ EAP-MSCHAPv2”身份验证的IKEv2 VPN服务器,并在CentOS 8服务器上使用Letsencrypt证书。
先决条件
- CentOS 8服务器
- 根特权
我们要做什么?
- 在CentOS 8上安装Strongswan
- 生成SSL Letsencrypt
- 配置Strongswan
- 启用NAT防火墙
- 启用端口转发
- 测试中
第1步-在CentOS 8上安装Strongswan
在第一步中,我们将安装Strongswan IPsec实施软件以及EPEL存储库中所需的所有软件包。
在安装strongswan软件包之前,必须将EPEL存储库添加到CentOS 8系统。
为CentOS 8服务器添加EPEL存储库。
sudo dnf install epel-release
之后,使用下面的dnf命令从EPEL存储库中安装strongswan软件包。
sudo dnf install strongswan
等待strongswan软件包安装。
第2步-使用“加密”生成SSL证书
在本指南中,我们将使用域名“ vpn.hakase-labs.io”创建IKEv2 VPN服务器,并使用letencrypt生成的证书。
在此步骤中,我们将手动安装letsencrypt工具“ certbot”,并为服务器域名“ vpn.hakase-labs.io”生成证书。
使用下面的wget命令从GitHub下载certbot二进制文件。
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
之后,通过更改文件的权限使其可执行。
chmod +x /usr/local/bin/certbot-auto
并且已经安装了用于生成Letsencrypt证书的certbot工具。
在生成Letsencrypt证书之前,我们需要使用firewall-cmd打开服务器的HTTP和HTTPS端口。
通过运行下面的firewall-cmd命令,将HTTP和HTTPS服务添加到firewalld服务列表中。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
现在,我们可以使用Letencrypt工具certbot-auto生成新的SSL证书文件。
自行更改电子邮件地址和域名,然后运行下面的“ certbot-auto”命令。
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email hakase@gmail.com -d vpn.hakase-labs.io
完成后,您将获得如下结果。
您域名的所有证书都会生成到“ /etc/letsencrypt/live/domain.com”目录中。
接下来,我们需要将证书文件“ fullchain.pem”,“ privkey.pem”和“ chain.pem”复制到“ /etc/strongswan/ipsec.d/”目录中。
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
已生成名为“ vpn.hakase-labs.io”的所有Strongswan VPN的letsencrypt证书,并将其复制到“ /etc/strongswan/ipsec.d”目录中。
tree /etc/strongswan/ipsec.d/
步骤3-配置Strongswan
转到“ / etc / strongswan”目录并备份默认的“ ipsec.conf”配置文件。
cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli
使用vim编辑器创建一个新的“ ipsec.conf”。
vim ipsec.conf
并粘贴以下配置。
config setup
uniqueids=never # allow multiple connections per user
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
fragmentation=yes
closeaction=restart
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=yes
dpddelay=35s
lifetime=3h
ikelifetime=12h
ike=aes256gcm16-prfsha512-ecp384!
esp=aes256gcm16-ecp384!
left=%any
leftid=@vpn.linuxcreatures.com
leftcert=fullchain.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.15.1.0/24
rightdns=1.1.1.1,8.8.8.8
rightsendcert=never
eap_identity=%identity
conn ikev2-pubkey
auto=add
保存并退出。
接下来,我们需要编辑“ ipsec.secrets”文件以定义RSA服务器私钥和EAP用户密码凭据。
编辑“ ipsec.secrets”文件。
vim ipsec.secrets
粘贴下面的配置。
: RSA "privkey.pem"
hakase : EAP "hakase321@"
tensai : EAP "tensai321@"
保存并退出。
并且Strongswan IPSec配置已完成。将Strongswan服务添加到启动引导时间,然后启动该服务。
systemctl enable strongswan
systemctl start strongswan
Strongswan服务已启动并正在CentOS 8服务器上运行,请使用以下命令进行检查。
systemctl status strongswan
netstat -plntu
结果将显示如下。
步骤4-在Firewalld中启用NAT
在此步骤中,我们将启用NAT伪装,并使用“丰富规则”配置在Firewalld上添加IPSec协议身份验证标头(AH)和封装安全有效载荷(ESP)。
将用于身份验证和加密协议的“ AH”和“ ESP”添加到firewalld。
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
添加ipsec UDP端口和服务。
firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"
现在,启用NAT模式伪装并重新加载firewalld配置规则。
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
在firewalld上启用了NAT模式,请使用以下命令进行检查。
firewall-cmd --list-all
以下是结果。
第5步-启用端口转发
要启用端口转发,我们需要编辑“ sysctl.conf”文件。
使用vim编辑器编辑“ /etc/sysctl.conf”文件。
vim /etc/sysctl.conf
将以下配置粘贴到此处。
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
保存并退出,现在使用下面的sysctl命令重新加载。
sysctl -p
端口转发已启用。现在重新启动Strongswan服务。
systemctl restart strongswan
步骤6-测试Strongswan IPSec VPN
在这种情况下,我们将在MacOS X和android手机上进行测试。
在MacOS上
-打开“系统偏好设置”,然后单击“网络”菜单。
单击“ +”按钮创建新的VPN连接。
-
- 接口:“ VPN”
- VPN类型:“ IKEv2”
- 服务名称:’IKEv2-vpn
-在“服务器地址”和“远程ID”上,输入VPN域名“ ikev2.hakase-labs.io”。
-点击“身份验证设置”。
-使用“用户名”进行身份验证。
-输入用户名“ tensai”,密码为“ tensai321 @ ” 。-
单击“确定”,然后单击“应用”。
客户端上已创建新的IKEv2 VPN连接。现在单击连接按钮。
客户端已连接到Strongswan VPN服务器,并具有内部/专用IP地址10.15.1.1。
在Android上
-从Google-Play下载并安装原生的Strongswan Android应用程序。
-添加新的VPN配置文件
-键入服务器域名“ ikev2.hakase-labs.io”,然后使用IKEv2 EAP用户名和密码身份验证。
以下是我们连接到VPN服务器时的结果。
已在CentOS 8服务器上使用Strongswan和Letsencrypt创建了基于IKEv2 IPSec的VPN服务器。