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

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

本文介绍了如何在 UbuntuDebian 服务器上使用 strongSwan 配置站点到站点的 IPSec VPN 网关。站点到站点是指每个安全网关后面都有一个子网。此外,对等节点将使用预共享密钥 (PSK) 进行身份验证。

测试环境

请记得将以下 IP 地址替换为您的实际 IP 地址以配置您的环境。

站点 1 网关 (tecmint-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 网关 (tecmint-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 

接下来,通过运行以下命令加载新设置。

$ sudo sysctl -p
Load Sysctl Kernel Settings

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

站点 1 网关(tecmint-devgateway)

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

站点 2 网关(tecmint-prodgateway)

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

一旦防火墙规则添加完毕,然后通过重新启动UFW来应用新更改,如下所示。

$ sudo ufw disable 
$ sudo ufw enable

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

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

$ sudo apt update
$ sudo apt install strongswan 

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

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

第 3 步:配置安全网关

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

站点 1 网关(tecmint-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网关(tecmint-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

以下是每个配置参数的含义:

  • config setup – 指定适用于所有连接的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 – 指定是否使用主动模式或主模式。
  • keyingtries – 指定应尝试协商连接的次数。
  • ikelifetime – 指定连接的密钥通道应持续多长时间,然后重新协商。
  • lifetime – 定义连接的特定实例应持续多长时间,从成功协商到到期。
  • dpddelay – 指定发送到对等端的 R_U_THERE 消息/INFORMATIONAL 交换的时间间隔。
  • dpdtimeout – 指定超时间隔,超过该间隔,如果没有活动,则删除到对等端的所有连接。
  • dpdaction – 定义如何使用 Dead Peer Detection (DPD) 协议管理连接。

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

$ man ipsec.conf

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

8. 在配置了两个安全网关之后,使用以下命令生成用于对等体的安全 PSK

$ head -c 24 /dev/urandom | base64
Generate PSK Key

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
View IPSec Connection Status

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

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

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

$ sudo ipsec stop
$ sudo ipsec start

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

$ ipsec --help

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

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/