如何在 CentOS/RHEL 8 上使用 Strongswan 设置基于 IPsec 的 VPN
StrongSwan 是一个开源、多平台、现代且完整的基于 IPsec 的 Linux VPN 解决方案,为 Internet 密钥交换(IKEv1 和 IKEv2)在两个对等方之间建立安全关联 (SA)。它功能齐全,采用模块化设计,并提供数十个增强核心功能的插件。
相关文章:如何在 Debian 和 Ubuntu 上使用 Strongswan 设置基于 IPsec 的 VPN
在本文中,您将了解如何在 CentOS/RHEL 8 服务器上使用 strongSwan 设置站点到站点 IPsec VPN 网关。这使得对等方能够使用强预共享密钥 (PSK) 相互验证。站点到站点设置意味着每个安全网关背后都有一个子网。
测试环境
在按照指南进行配置时,请不要忘记使用您的真实 IP 地址。
站点 1 网关
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
站点 2 网关
Public IP: 192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24
步骤1:在CentOS 8中启用内核IP转发
1. 首先在两个 VPN 网关上的 /etc/sysctl.conf 配置文件中启用内核 IP 转发功能。
vi /etc/sysctl.conf
在文件中添加这些行。
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
2.保存文件中的更改后,运行以下命令在运行时加载新的内核参数。
sysctl -p
3. 接下来,在两个安全网关上的文件 /etc/sysconfig/network-scripts/route-eth0 中创建永久静态路由。
vi /etc/sysconfig/network-scripts/route-eth0
在文件中添加以下行。
#Site 1 Gateway
10.20.1.0/24 via 192.168.56.7
#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6
4. 然后重新启动网络管理器以应用新的更改。
systemctl restart NetworkManager
步骤2:在CentOS 8中安装strongSwan
5. strongswan 软件包在 EPEL 存储库中提供。要安装它,您需要启用 EPEL 存储库,然后在两个安全网关上安装 Strongwan。
dnf install epel-release
dnf install strongswan
6. 要检查两个网关上安装的 strongswan 版本,请运行以下命令。
strongswan version
7. 接下来,启动strongswan服务并使其在系统启动时自动启动。然后验证两个安全网关上的状态。
systemctl start strongswan
systemctl enable strongswan
systemctl status strongswan
注意:CentOS/REHL 8中最新版本的strongswan同时支持swanctl (strongSwan 5.2.0 中引入的一种新的便携式命令行实用程序,用于使用 vici 插件配置、控制和监控 IKE 守护进程 Charon)和 starter 使用已弃用的中风插件的(或ipsec)实用程序。
8. 主要配置目录是/etc/strongswan/,其中包含两个插件的配置文件:
ls /etc/strongswan/
在本指南中,我们将使用 IPsec 实用程序,该实用程序通过 strongswan 命令和笔画界面调用。所以我们将使用以下配置文件:
- /etc/strongswan/ipsec.conf – StrongSwan IPsec 子系统的配置文件。
- /etc/strongswan/ipsec.secrets – 机密文件。
步骤 3:配置安全网关
9. 在此步骤中,您需要使用 /etc/strongswan/ipsec.confstrongswan 配置文件在每个站点的每个安全网关上配置连接配置文件。
配置站点 1 连接配置文件
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
将以下配置复制并粘贴到文件中。
config setup
charondebug="all"
uniqueids=yes
conn ateway1-to-gateway2
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.7
leftsubnet=10.10.1.1/24
right=192.168.56.6
rightsubnet=10.20.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
配置站点 2 连接配置文件
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
将以下配置复制并粘贴到文件中:
config setup
charondebug="all"
uniqueids=yes
conn 2gateway-to-gateway1
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.6
leftsubnet=10.20.1.1/24
right=192.168.56.7
rightsubnet=10.10.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
我们简单描述一下上面的各个配置参数:
- 配置设置 – 定义适用于所有连接的 IPSec 常规配置信息。
- charondebug – 指定应记录多少 Charon 调试输出。
- uniqueids – 定义特定参与者 ID 是否应保持唯一。
- conn gateway1-to-gateway2 – 用于设置连接名称。
- type – 定义连接类型。
- 自动 – 用于声明在 IPSec 启动或重新启动时如何处理连接。
- keyexchange – 声明要使用的 IKE 协议版本。
- authby – 指定对等点应如何相互验证。
- left – 声明左侧参与者的公共网络接口的 IP 地址。
- leftsubnet – 声明左侧参与者后面的私有子网。
- right – 声明右侧参与者的公共网络接口的 IP 地址。
- rightsubnet – 声明左侧参与者后面的私有子网。
- ike – 用于声明要使用的 IKE/ISAKMP SA 加密/身份验证算法列表。请注意,这可以是逗号分隔的列表。
- esp – 指定用于连接的 ESP 加密/身份验证算法列表。
- aggressive – 声明是否使用 Aggressive 模式或 Main 模式。
- keyingtries – 声明协商连接时应尝试的次数。
- ikelifetime – 指定连接的密钥通道在重新协商之前应持续的时间。
- 生命周期 – 指定连接的特定实例应持续多长时间,从成功协商到到期。
- dpddelay – 声明将 R_U_THERE 消息/信息交换发送到对等方的时间间隔。
- dpdtimeout – 用于声明超时间隔,在此之后,如果不活动,则删除与对等点的所有连接。
- dpdaction – 指定如何使用失效对等检测 (DPD) 协议来管理连接。
您可以通过阅读ipsec.conf手册页找到strongSwan IPsec子系统所有配置参数的描述。
man ipsec.conf
步骤 4:配置 PSK 进行点对点身份验证
10. 接下来,您需要生成一个强 PSK,供对等方用于身份验证,如下所示。
head -c 24 /dev/urandom | base64
11. 在两个安全网关上的 /etc/strongswan/ipsec.conf 文件中添加 PSK。
vi /etc/strongswan/ipsec.secrets
在文件中输入以下行。
#Site 1 Gateway
192.168.56.7 192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
#Site 1 Gateway
192.168.56.6 192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
12.然后启动strongsan服务并检查连接状态。
systemctl restart strongswan
strongswan status
13. 通过运行 ping 命令测试是否可以从任一安全网关访问私有子网。
ping 10.20.1.1
ping 10.10.1.1
14.最后但并非最不重要的一点是,要了解更多strongswan命令来手动打开/关闭连接等,请参阅strongswan帮助页面。
strongswan --help
目前为止就这样了!要与我们分享您的想法或提出问题,请通过下面的反馈表与我们联系。要了解有关新 swanctl 实用程序和新的更灵活的配置结构的更多信息,请参阅strongSwan 用户文档。