strongswan简介
StrongSwan是一个开源的IPsec实现,它提供了安全的虚拟私有网络(VPN)解决方案。IPsec(Internet Protocol Security)是一种网络协议套件,用于在Internet上提供安全的IP通信。StrongSwan实现了IPsec的核心协议,包括身份验证、密钥交换、加密和数据完整性保护等功能。
StrongSwan的主要特点包括:
1、安全性:StrongSwan使用强大的加密算法和安全协议来保护通信数据的机密性和完整性。它支持各种加密算法,如AES、3DES和SHA等,以及各种身份验证方法,如证书、预共享密钥和用户名/密码等。
2、灵活性:StrongSwan可以在各种操作系统和平台上运行,包括Linux、Unix、Windows和Android等。它支持多种IPsec部署模式,如站点到站点(Site-to-Site)VPN、远程访问(Remote Access)VPN和公共WiFi安全接入等。
3、可扩展性:StrongSwan具有高度可扩展性,可以支持大规模的VPN部署。它支持动态路由协议,如OSPF和BGP,以便在大型网络中实现自动路由选择。
4、开源和免费:StrongSwan是一个开源项目,遵循GNU通用公共许可证(GPL)的条款。这意味着用户可以自由地使用、修改和分发StrongSwan的源代码,而不需要支付任何费用。
通过配置和管理StrongSwan,用户可以建立安全的VPN连接,实现远程访问、分支机构互连和跨网络通信等应用场景。它被广泛应用于企业网络和个人用户之间的安全通信,为数据传输提供了可靠的保护。
实验拓扑图

实验思路
武汉公司在阿里云拥有一个专有网络VPC(Virtual Private Cloud),bj-VPC网段为192.168.20.0/24,VPC中使用云服务器ECS(Elastic Compute Service)部署了应用服务。同时该公司在本地拥有一个数据中心IDC(Internet Data Center),本地IDC网段为192.168.10.0/24。公司因业务发展,需要本地IDC与云上VPC互通,实现资源互访。该公司计划使用VPN网关产品,在本地IDC与云上VPC之间建立IPsec-VPN连接,实现云上和云下的互通
实验环境
两台Debian 12最小化系统
wh-router有两张网卡,一张网卡是内网网卡(192.168.10.1/24),一张网卡是公网网卡(10.1.1.1/24),其实这里是内网网段的,服务器有限,如果有内网客户端可以在这个配置IPSec VPN上面开启路由转发,然后两边客户端也可以访问
bj-router有两张网卡,一张网卡是内网网卡(192.168.20.1/24),一张网卡是公网网卡(10.1.1.2/24)
wh-router配置
ip a #查看IP地址

安装strongswan
apt install strongswan -y #安装strongswan服务
编辑ipsec主配置文件
vim /etc/ipsec.conf
conn %default #配置ike默认参数
ikelifetime=1440m #ike协议的SA生命周期
keylife=60m #IPSec连接的密钥生命周期为60分钟
rekeymargin=3m #3分钟过后密钥生命周期结束后重新生成密钥
keyingtries=0 #密钥交换期间允许最大的重试次数为0次
keyexchange=ikev1 #IPSec连接使用IKE协议的版本
authby=secret #使用预共享密钥认证方式
conn ipsecvpn #创建ipsecvpn
left=10.1.1.1 #本地网关设备的公网IP地址,如果使用本地网关的私网IP地址建立IPSec-VPN连接,则本项需配置为本地网关设备的私网IP地址
leftid=10.1.1.1 #本地网关设备的标识
leftsubnet=192.168.10.0/24 #本地设备的内网网段
right=10.1.1.2 #远端设备的出口网关的公网IP地址
rightsubnet=192.168.20.0/24 #远端设备的内网网段
auto=start #主模式
type=tunnel #隧道模式
ike=3des-md5-modp1024 #IKE使用3des-md5-modp1024加密套件
esp=3des-md5 #esp使用3des-md5加密套件

配置IPSec预共享密钥
vim /etc/ipsec.secrets

将strongswan服务加入到开机自启中
systemctl enable strongswan-starter #将strongswan-starter服务加入到开机自启中
systemctl restart strongswan-starter #重启strongswan-starter服务
systemctl status strongswan-starter #查看strongswan-starter服务启动状态

重启ipsec
ipsec reload

重新启动ipsec
ipsec restart

启动ipsec
ipsec up ipsecvpn #这里暂时未启动,因为另一边没有配置

bj-router配置
安装strongswan
apt install strongswan -y #安装strongswan服务
编辑ipsec主配置文件
vim /etc/ipsec.conf
conn %default #配置ike默认参数
ikelifetime=1440m #ike协议的SA生命周期
keylife=60m #IPSec连接的密钥生命周期为60分钟
rekeymargin=3m #3分钟过后密钥生命周期结束后重新生成密钥
keyingtries=0 #密钥交换期间允许最大的重试次数为0次
keyexchange=ikev1 #IPSec连接使用IKE协议的版本
authby=secret #使用预共享密钥认证方式
conn ipsecvpn #创建ipsecvpn
left=10.1.1.2 #本地网关设备的公网IP地址,如果使用本地网关的私网IP地址建立IPSec-VPN连接,则本项需配置为本地网关设备的私网IP地址
leftid=10.1.1.2 #本地网关设备的标识
leftsubnet=192.168.20.0/24 #本地设备的内网网段
right=10.1.1.1 #远端设备的出口网关的公网IP地址
rightsubnet=192.168.10.0/24 #远端设备的内网网段
auto=start #主模式
type=tunnel #隧道模式
ike=3des-md5-modp1024 #IKE使用3des-md5-modp1024加密套件
esp=3des-md5 #esp使用3des-md5加密套件

配置IPSec预共享密钥
vim /etc/ipsec.secrets

将strongswan服务加入到开机自启中
systemctl enable strongswan-starter #将strongswan-starter服务加入到开机自启中
systemctl restart strongswan-starter #重启strongswan-starter服务
systemctl status strongswan-starter #查看strongswan-starter服务启动状态

重启ipsec
ipsec reload

重新启动ipsec
ipsec restart

启动ipsec
ipsec up ipsecvpn #启动成功

wh-router如果一直运行ipsec up ipsecvpn这个命令,就会一直检测对端是否启动ipsec,如果启动,它们自己连接成功

验证
wh-router查看ipsec状态
ipsec statusall

bj-router查看ipsec状态
ipsec statusall

wh-router ping bj-router
ip a #查看公网是哪一张网卡
ping -I ens36 192.168.20.1 #使用外网网卡ping对端地址或者直接使用ping 192.168.20.1,这里不需要开启转发

bj-router ping bj-router
ip a #查看公网是哪一张网卡
ping -I ens36 192.168.10.1 #使用外网网卡ping对端地址或者直接使用ping 192.168.10.1,这里不需要开启转发
