如何在 Debian 和 Ubuntu 上使用 Strongswan 设置基于 IPsec 的 VPN
StrongSwan 是一种开源、跨平台、功能齐全且广泛使用的基于 IPsec 的 VPN(虚拟专用网络)实现,可在 Linux、FreeBSD、OS X、Windows、Android 和 iOS 上运行。它主要是一个密钥守护进程,支持互联网密钥交换协议(IKEv1和IKEv2)来建立安全关联(SA)两个对等点之间。
本文介绍如何在 Ubuntu 和 Debian 服务器上使用 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
就这样!在本文中,我们描述了如何在 Ubuntu 和 Debian 服务器上使用 strongSwan 设置站点到站点 IPSec VPN,其中两者安全网关配置为使用PSK相互验证。如果您有任何问题或想法要分享,请通过下面的反馈表与我们联系。