网站搜索

如何在 Debian 和 Ubuntu 上使用 Strongswan 设置基于 IPsec 的 VPN


StrongSwan 是一种开源、跨平台、功能齐全且广泛使用的基于 IPsec 的 VPN(虚拟专用网络)实现,可在 Linux、FreeBSD、OS X、Windows、Android 和 iOS 上运行。它主要是一个密钥守护进程,支持互联网密钥交换协议(IKEv1IKEv2)来建立安全关联(SA)两个对等点之间。

本文介绍如何在 UbuntuDebian 服务器上使用 strongSwan 设置站点到站点 IPSec VPN 网关。所谓站点到站点,是指每个安全网关背后都有一个子网。此外,对等点将使用预共享密钥(PSK)相互验证。

测试环境

请记住将以下 IP 替换为您的真实 IP 以配置您的环境。

站点 1 网关 (howtoing-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

站点 2 网关 (howtoing-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

第1步:启用内核数据包转发

1. 首先,您需要通过在两个安全网关上的 /etc/sysctl.conf 配置文件中添加适当的系统变量来配置内核以启用数据包转发。

sudo vim /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. 接下来,通过运行以下命令加载新设置。

sudo sysctl -p

3.如果您启用了UFW防火墙服务,则需要将以下规则添加到/etc/ufw/before.rules配置文件中的过滤规则之前任一安全网关。

站点 1 网关 (howtoing-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

站点 2 网关 (howtoing-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. 添加防火墙规则后,请通过重新启动 UFW 来应用新的更改,如图所示。

sudo ufw disable 
sudo ufw enable

步骤2:在Debian和Ubuntu中安装strongSwan

5. 更新两个安全网关上的软件包缓存,并使用 APT 软件包管理器安装 strongswan 软件包。

sudo apt update
sudo apt install strongswan 

6.安装完成后,安装程序脚本将启动strongswan服务并使其在系统启动时自动启动。您可以使用以下命令检查其状态以及是否启用。

sudo systemctl status strongswan.service
sudo systemctl is-enabled strongswan.service

步骤 3:配置安全网关

7.接下来,您需要使用/etc/ipsec.conf配置文件配置安全网关。

站点 1 网关 (howtoing-devgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

将以下配置复制并粘贴到文件中。

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

站点 2 网关 (howtoing-prodgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

将以下配置复制并粘贴到文件中。

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/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 prodgateway-to-devgateway – 定义连接名称。
  • type – 定义连接类型。
  • auto – IPSec 启动或重新启动时如何处理连接。
  • keyexchange – 定义要使用的 IKE 协议版本。
  • authby – 定义对等点应如何相互验证。
  • left – 定义左侧参与者的公共网络接口的 IP 地址。
  • leftsubnet – 指明左侧参与者后面的私有子网。
  • right – 指定右侧参与者的公网接口的 IP 地址。
  • rightsubnet – 指明左侧参与者后面的私有子网。
  • ike – 定义要使用的 IKE/ISAKMP SA 加密/身份验证算法的列表。您可以添加逗号分隔的列表。
  • esp – 定义用于连接的 ESP 加密/身份验证算法列表。您可以添加逗号分隔的列表。
  • aggressive – 指明是使用“aggressive”模式还是“主模式”。
  • keyingtries – 指明协商连接时应尝试的次数。
  • ikelifetime – 规定连接的密钥通道在重新协商之前应持续多长时间。
  • 生命周期 – 定义连接的特定实例应持续多长时间,从成功协商到到期。
  • dpddelay – 指定将 R_U_THERE 消息/信息交换发送到对等方的时间间隔。
  • dpdtimeout – 指定超时间隔,在此之后,如果不活动,则删除与对等点的所有连接。
  • dpdaction – 定义如何使用失效对等检测 (DPD) 协议来管理连接。

有关上述配置参数的更多信息,请通过运行命令阅读 ipsec.conf 手册页。

man ipsec.conf

步骤 4:配置 PSK 进行点对点身份验证

8. 配置两个安全网关后,使用以下命令生成供对等方使用的安全 PSK

head -c 24 /dev/urandom | base64

9. 接下来,在两个网关上的 /etc/ipsec.secrets 文件中添加 PSK

sudo vim /etc/ipsec.secrets

复制并粘贴以下行。

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10.重新启动IPSec程序并检查其状态以查看连接。

sudo ipsec restart
sudo ipsec status

11. 最后,验证您是否可以通过运行 ping 命令从任一安全网关访问私有子网。

ping 192.168.0.101
ping 10.0.2.15

12. 此外,您可以如图所示停止和启动 IPSec。

sudo ipsec stop
sudo ipsec start

13. 要了解有关手动建立连接的 IPSec 命令的更多信息,请参阅 IPSec 帮助页面。

ipsec --help

就这样!在本文中,我们描述了如何在 UbuntuDebian 服务器上使用 strongSwan 设置站点到站点 IPSec VPN,其中两者安全网关配置为使用PSK相互验证。如果您有任何问题或想法要分享,请通过下面的反馈表与我们联系。