如何在 Rocky Linux 9 上使用 StrongSwan 和 Let's Encrypt 设置 IKEv2 IPSec VPN
如果您正在寻找客户端到站点 VPN 解决方案,那么与 OpenVPN 或 Wireguard 相比,您可能更喜欢 IKEv2 EAP 解决方案。如果您经常出差并且需要一个无需下载客户端或不需要密钥即可轻松连接的 VPN 解决方案,那么这样的解决方案将非常有用。 StrongSwan 是一个基于 IPSec 的开源跨平台 VPN,在这种情况下非常有用。它可以提供基于X.509证书的身份验证或安全的IKEv2 EAP用户身份验证。
在本教程中,您将了解如何使用strongSwan 设置 IKEv2 IPSec VPN,使用 EAP-MSCHAPv2
身份验证以及 Rocky Linux 9 服务器上的 Let's Encrypt SSL 证书。您还将了解如何使用 Windows、macOS、Linux 和 Android 客户端连接到 VPN。
先决条件
运行Rocky Linux 9的服务器。根据连接的用户数量,您必须升级服务器规格。
具有 sudo 权限的非 root 用户。
完全限定域名 (FQDN),例如 vpn.example.com
。
确保一切都已更新。
$ sudo dnf update
您的系统需要的软件包很少。
$ sudo dnf install wget curl nano unzip yum-utils -y
其中一些软件包可能已经安装在您的系统上。
第 1 步 - 配置网络和防火墙
在内核选项中启用 IP 数据包转发。
$ echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf
$ sudo sysctl -p
将 IPSec 服务添加到 Firewalld 防火墙。
$ sudo firewall-cmd --permanent --add-service=ipsec
我们还需要 HTTP 和 HTTPS 端口才能运行。打开它们。
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
允许 NAT 数据包转发,也称为 IP 伪装。
$ sudo firewall-cmd --permanent --add-masquerade
重新加载防火墙以应用更改。
$ sudo firewall-cmd --reload
第 2 步 - 安装 SSL
我们需要安装 Certbot 来生成 SSL 证书。
为此,我们将使用 Snapd 软件包安装程序。由于 Rocky Linux 未附带,因此请安装 Snapd 安装程序。它需要 EPEL 存储库才能工作。
$ sudo dnf install -y epel-release
安装快照。
$ sudo dnf install -y snapd
启用并启动 Snap 服务。
$ sudo systemctl enable snapd --now
安装 Snap 核心包,并确保您的 Snapd 版本是最新的。
$ sudo snap install core && sudo snap refresh core
创建 Snapd 工作所需的链接。
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
发出以下命令来安装 Certbot。
$ sudo snap install --classic certbot
使用以下命令确保可以通过创建到 /usr/bin
目录的符号链接来运行 Certbot 命令。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
验证安装。
$ certbot --version
certbot 2.3.0
运行以下命令生成 SSL 证书。
$ sudo certbot --key-type rsa certonly --standalone --agree-tos --no-eff-email --preferred-challenges http -m [email -d vpn.example.com
上述命令会将证书下载到服务器上的 /etc/letsencrypt/live/vpn.example.com
目录中。
要检查 SSL 续订是否正常工作,请试运行该过程。
$ sudo certbot renew --dry-run
如果没有看到任何错误,则一切都已准备就绪。您的证书将自动更新。
第 3 步 - 安装strongSwan
StrongSwan 需要 EPEL 存储库进行安装,但由于我们已经在上一步中安装了它,因此您可以跳过它。使用以下命令安装strongSwan。
$ sudo dnf install strongswan
在 /etc/strongswan/swanctl
目录中为证书创建符号链接。
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/fullchain.pem /etc/strongswan/swanctl/x509
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/privkey.pem /etc/strongswan/swanctl/private
$ sudo ln -s /etc/letsencrypt/live/vpn.example.com/chain.pem /etc/strongswan/swanctl/x509ca
创建一个strongSwan配置文件并打开它进行编辑。
$ sudo nano /etc/strongswan/swanctl/conf.d/my_vpn.conf
将以下代码粘贴到其中。
connections {
ikev2-eap-mschapv2 {
version = 2
proposals = aes256-sha256-modp4096,aes256-sha256-modp2048,aes256gcm16-sha256-modp1024
rekey_time = 0s
pools = pool-ipv4
fragmentation = yes
dpd_delay = 30s
send_cert=always
unique = never
local {
id = vpn.example.com
certs = fullchain.pem
}
remote {
auth = eap-mschapv2
eap_id = %any
}
children {
ikev2-eap-mschapv2 {
local_ts = 0.0.0.0/0
rekey_time = 0s
dpd_action = clear
esp_proposals = aes256-sha256-sha1
}
}
}
}
pools {
pool-ipv4 {
addrs = 10.1.1.0/24
dns = 1.1.1.1, 8.8.8.8
}
}
secrets {
eap-User1 {
id = username1
secret = "password1"
}
}
完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
如果您希望通过 VPN 隧道传输 IPv4 和 IPv6,则需要分配 IPv6 池、DNS 和本地子网。将变量 local_ts
、addrs
和 dns
的值替换为以下值。
local_ts = 0.0.0.0/0,::/0
....
addrs = 10.1.1.0/24,2a00:1450:400c:c05::/112
dns = 8.8.8.8,2001:4860:4860::8888
禁用 OpenSSL 插件,因为 Rocky Linux 9 上的 OpenSSL 不允许使用 SHA-1 的 RSA 签名,从而导致身份验证失败。
$ sudo sed -i "s/load = yes/load = no/" /etc/strongswan/strongswan.d/charon/openssl.conf
启用并启动strongSwan 服务。
$ sudo systemctl enable strongswan
$ sudo systemctl start strongswan
第 4 步 - 通过 Windows 连接
打开“设置”应用程序并选择网络和互联网菜单选项。选择 VPN 菜单,然后单击添加 VPN 连接按钮。
单击保存按钮,然后选择您添加的VPN并单击连接按钮启动VPN。
第 5 步 - 通过 macOS 连接
打开系统偏好设置>>网络,然后单击右上角的加号 (+) 添加新服务。
选择VPN作为接口,IKEv2作为VPN类型,并为您的服务命名。单击创建按钮继续。
输入您的域名作为服务器地址和远程 ID。将本地 ID 字段留空。单击身份验证设置按钮打开一个新的弹出窗口。
选择用户名作为身份验证设置,然后输入之前创建的凭据。单击确定按钮保存设置。单击底部的应用按钮保存设置。然后单击连接按钮连接到 VPN。
添加后,macOS 将在菜单栏上创建 VPN 的快捷方式。您可以从那里直接连接到 VPN。
第 6 步 - 通过 Android 连接
打开 Android 设置 >> 网络和互联网 >> VPN 菜单。单击屏幕右上角的加号 (+) 以添加 VPN 配置文件。
为连接命名。选择 IKEv2/IPSec MSCHAPv2 作为 VPN 类型。输入您的域作为服务器地址。提供任意随机字符串作为 IPSec 标识符。输入您之前提供的用户名和密码。单击保存按钮完成。
选择连接名称并单击连接开始使用VPN。
第 7 步 - 通过 iOS 连接
打开 iOS 设置,然后单击“常规”菜单。单击 VPN 菜单,您将看到如下所示的类似菜单。选择 IKEv2 作为 VPN 类型。
为您的 VPN 提供描述。输入您的域名作为服务器和远程 ID 字段的值。将本地 ID 字段留空。选择用户身份验证作为用户名并输入您的凭据。完成后选择完成,然后点击开关以连接到 VPN。
结论
关于在 Rocky Linux 9 服务器上使用 StrongSwan 和 Let's Encrypt SSL 设置 IKEv2 VPN 的教程到此结束。您还使用多个客户端连接到 VPN。如果您有任何疑问,请在下面的评论中发表。