网站搜索

如何在 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 用户文档。