strongSwan 是一个开源的、跨平台的、功能齐全的、广泛使用的基于 IPsec 的 VPN(虚拟专用网络)实现,它可以在 Linux、FreeBSD、OS X、Windows、Android 和 iOS 上运行。它主要是一个密钥管理守护程序,支持 Internet 密钥交换协议 (IKEv1 和 IKEv2),用于在两个对等节点之间建立安全关联 (SA)。
本文介绍了如何在 Ubuntu 和 Debian 服务器上使用 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

如果您启用了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

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
就是这样!在本文中,我们描述了如何在Ubuntu和Debian服务器上使用strongSwan设置站点到站点IPSec VPN,其中两个安全网关都配置为使用PSK相互认证。如果您有任何问题或想法要分享,请通过下面的反馈表与我们联系。
Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/