strongswan IKE 的两种维护方式

strongswan IKE 的维护方式有两种:

  1. ipsec (ipsec.conf)
  2. vici (swanctl.conf)

在 ipsec.conf 的使用场景中,所有 ipsec connection 都在一个配置文件中,每当有 connection 变更,都需要重启一次服务。这在云服务场景,是无法维护的。不可能用户为一个新的站点,添加了一个新的 ipsec conn,服务都需要重启一下,这样所有连接都需要重连一次。

比如我有一个中心 IPSec vpn 网关, 那这个网关是不能重启的,所以中心网关上,不能用一个 ipsec.conf 来提供服务。所以中心网关必须使用一种面向每一个 ipsec connection 能够用逐个处理的架构。

strongswan 实现了这个新的架构,叫做 vici

那么我们来详细了解一下 StrongSwan Vici 的全称、架构设计,以及它在整个 StrongSwan 系统中的作用。

1. Vici 的全称:

Vici 的全称是 Versatile IKE Configuration Interface,中文可以翻译为"通用 IKE 配置接口"。

2. 架构设计:

Vici 的架构设计基于客户端-服务器模型,主要包含以下几个组件:

  • Vici Server (Charon): Vici Server 是 StrongSwan 的 IKE 守护进程 (Charon) 的一部分。 它监听 Unix 域套接字 (Unix domain socket),等待客户端连接,并处理来自客户端的配置和控制请求。 无论是 strongswan-charon 还是 charon-systemd,都包含了 Vici Server 的功能。

  • Vici Client (swanctl): Vici Client 是一个独立的命令行工具,用于通过 Vici 接口与 Vici Server 进行通信。 它允许用户加载配置、启动/停止连接、查看状态等。 swanctl 是 StrongSwan 提供的官方 Vici Client。

  • Vici 协议: Vici 协议定义了客户端和服务器之间通信的消息格式和交互流程。 它基于简单的文本格式,易于解析和实现。

Vici 的工作流程:

  1. 客户端发起连接: Vici Client (例如 swanctl) 通过 Unix 域套接字连接到 Vici Server (Charon)。

  2. 客户端发送请求: 客户端使用 Vici 协议将配置或控制请求发送到服务器。 例如,客户端可以发送一个 load-conn 请求来加载一个新的 VPN 连接配置。

  3. 服务器处理请求: Vici Server 接收到请求后,会对请求进行解析和处理。 如果请求是合法的,服务器会执行相应的操作,例如加载配置、启动连接、停止连接等。

  4. 服务器发送响应: 服务器将处理结果以 Vici 协议格式发送回客户端。 响应可以包含成功或失败的状态码,以及其他相关信息。

  5. 客户端接收响应: 客户端接收到响应后,会对响应进行解析,并根据结果采取相应的行动。 例如,如果连接加载成功,客户端可能会显示一条成功消息。

Vici 架构图:

lua 复制代码
+---------------------+     +---------------------+
|   Vici Client       |     |   Vici Server       |
|   (e.g., swanctl)    |     |   (Charon Daemon)   |
+---------------------+     +---------------------+
         |                      |
         | Unix Domain Socket   |
         ---------------------->|
         |                      |
         | Vici Protocol        |
         <----------------------|
         |                      |
+---------------------+     +---------------------+

3. Vici 在 StrongSwan 系统中的作用:

Vici 在 StrongSwan 系统中扮演着关键的角色,它实现了以下功能:

  • 动态配置: Vici 允许在 StrongSwan 运行时动态地加载、修改和删除 VPN 连接配置,而无需重启 StrongSwan 服务。 这对于需要频繁更改配置的场景非常有用。

  • 细粒度控制: Vici 允许对每个 VPN 连接进行精细化控制,例如启动、停止、重新协商连接,查看连接状态等。

  • 远程管理: Vici 可以通过 Unix 域套接字进行远程管理,这意味着你可以通过网络连接到 StrongSwan 服务器,并使用 swanctl 命令来管理 VPN 连接。

  • 可编程性: Vici 协议是基于文本的,易于解析和实现。 这使得你可以使用任何编程语言编写自定义的 Vici 客户端,从而实现 StrongSwan 的自动化管理。

总结:

Vici (Versatile IKE Configuration Interface) 是 StrongSwan 的通用 IKE 配置接口。 它基于客户端-服务器模型,通过 Unix 域套接字和 Vici 协议实现动态配置、细粒度控制、远程管理和可编程性。 Vici 在 StrongSwan 系统中扮演着关键的角色,使得 StrongSwan 能够适应各种复杂的 VPN 部署场景。

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙3 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发3 天前
软件工程SOLID 五大设计原则
后端·软件工程