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连接,实现远程访问、分支机构互连和跨网络通信等应用场景。它被广泛应用于企业网络和个人用户之间的安全通信,为数据传输提供了可靠的保护。
实验拓扑图
![image-20240111104546180](https://i-blog.csdnimg.cn/blog_migrate/127d668c92c8204c490d31e04c67f338.png)
实验思路
武汉公司在阿里云拥有一个专有网络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地址
![image-20240111111516361](https://i-blog.csdnimg.cn/blog_migrate/7baa1c05f97f46ae86bb2d19dce03f4c.png)
安装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加密套件
![image-20240111111914536](https://i-blog.csdnimg.cn/blog_migrate/de4e896fbfefa7a9c0bd4fb9918f4b93.png)
配置IPSec预共享密钥
vim /etc/ipsec.secrets
![image-20240111113222928](https://i-blog.csdnimg.cn/blog_migrate/b432f4c0ee2629c969417cb2d063c030.png)
将strongswan服务加入到开机自启中
systemctl enable strongswan-starter #将strongswan-starter服务加入到开机自启中
systemctl restart strongswan-starter #重启strongswan-starter服务
systemctl status strongswan-starter #查看strongswan-starter服务启动状态
![image-20240111113922149](https://i-blog.csdnimg.cn/blog_migrate/13c3e6f9478b5e3697e35e3542518029.png)
重启ipsec
ipsec reload
![image-20240111114202422](https://i-blog.csdnimg.cn/blog_migrate/511073b2000d3097b88fab9abdeac82a.png)
重新启动ipsec
ipsec restart
![image-20240111114248181](https://i-blog.csdnimg.cn/blog_migrate/cd5adf58c39c1eb70def54f712b00361.png)
启动ipsec
ipsec up ipsecvpn #这里暂时未启动,因为另一边没有配置
![image-20240111114517873](https://i-blog.csdnimg.cn/blog_migrate/6320a396ec1e53c02595f8b1c3a24795.png)
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加密套件
![image-20240111124300263](https://i-blog.csdnimg.cn/blog_migrate/759de3b1e9193a71454932d918fcbd63.png)
配置IPSec预共享密钥
vim /etc/ipsec.secrets
![image-20240111124355090](https://i-blog.csdnimg.cn/blog_migrate/73611ede5c5d130d9e746ac37e8b3440.png)
将strongswan服务加入到开机自启中
systemctl enable strongswan-starter #将strongswan-starter服务加入到开机自启中
systemctl restart strongswan-starter #重启strongswan-starter服务
systemctl status strongswan-starter #查看strongswan-starter服务启动状态
![image-20240111124435695](https://i-blog.csdnimg.cn/blog_migrate/760abaa01ae34eba4a01b0577d880e03.png)
重启ipsec
ipsec reload
![image-20240111124452866](https://i-blog.csdnimg.cn/blog_migrate/b56342d06c33be2cbb99f470c0ff5f0e.png)
重新启动ipsec
ipsec restart
![image-20240111124511410](https://i-blog.csdnimg.cn/blog_migrate/eabc76be79b223723518c69c66dd7120.png)
启动ipsec
ipsec up ipsecvpn #启动成功
![image-20240111124535530](https://i-blog.csdnimg.cn/blog_migrate/889d33df1c2cbd5440cedfdf8b1fc965.png)
wh-router如果一直运行ipsec up ipsecvpn这个命令,就会一直检测对端是否启动ipsec,如果启动,它们自己连接成功
![image-20240111124654174](https://i-blog.csdnimg.cn/blog_migrate/a14ab4a3f68d35699f2fb52ec4c617d5.png)
验证
wh-router查看ipsec状态
ipsec statusall
![image-20240111124838784](https://i-blog.csdnimg.cn/blog_migrate/d506062206f94c8f3d88f14af493aa46.png)
bj-router查看ipsec状态
ipsec statusall
![image-20240111125252956](https://i-blog.csdnimg.cn/blog_migrate/2e1c9e521bbe5859818cd8e160c24283.png)
wh-router ping bj-router
ip a #查看公网是哪一张网卡
ping -I ens36 192.168.20.1 #使用外网网卡ping对端地址或者直接使用ping 192.168.20.1,这里不需要开启转发
![image-20240111125516873](https://i-blog.csdnimg.cn/blog_migrate/0df9f3cc57492c480e2dc0126da67df9.png)
bj-router ping bj-router
ip a #查看公网是哪一张网卡
ping -I ens36 192.168.10.1 #使用外网网卡ping对端地址或者直接使用ping 192.168.10.1,这里不需要开启转发
![](https://i-blog.csdnimg.cn/blog_migrate/dee2c2de3a0cc7977f32b74ae158fe6a.png)