简介
VICI(Versatile IKE Configuration Interface)是strongSwan 5.2.0以后版本引入的编程接口,用于与charon IKE守护进程进行通信。它是一个基于Unix socket的客户端-服务器架构、面向消息的协议。
-
主要用途:通过程序(如
swanctl命令行工具、自定义应用)动态管理IPsec VPN连接、加载证书和密钥、监控连接状态,无需重启服务。 -
优势:相比之前的Stroke接口,VICI支持更丰富的操作和异步事件,是strongSwan目前推荐使用的接口。
协议
VICI 协议是基于消息的简单协议,客户端通过 Unix 套接字向服务器(charon)发送请求消息。服务器处理请求并发送响应消息。消息由类型化的键值对和节(包含嵌套消息)组成。
协议支持请求-响应模式以及事件订阅,客户端可以订阅特定事件并在事件发生时接收通知消息。
实现
服务器
VICI 插件在 charon 中实现服务器端,默认启用。它监听 /var/run/charon.vici 套接字(可使用 vici.socket 配置选项更改)。插件注册了一个 vici 凭据集,允许通过接口加载凭据。
客户端
strongSwan 源代码树中包含几个客户端实现:
-
libvici:C 库,简化与 VICI 服务器的通信
-
swanctl:基于 libvici 的命令行控制工具
-
govici:Go 语言绑定
-
pythonic:Python 绑定(在
src/pythonic中)
命令
VICI 支持多个命令,包括:
-
version:获取服务器版本
-
stats:获取统计信息
-
reload-settings:重新加载设置
-
get-conns:列出加载的连接
-
list-conns:列出加载连接的名称
-
load-conn:加载连接配置
-
unload-conn:卸载连接配置
-
list-sas:列出已建立的 SA
-
terminate:终止 SA
-
initiate:启动连接
事件
客户端可以订阅的事件包括:
-
ike-up/down:IKE SA 建立/拆除
-
child-up/down:CHILD SA 建立/拆除
-
alert:警报事件
-
log:日志事件
-
control:控制事件
配置
VICI 插件支持以下配置选项:
-
vici.socket:套接字路径(默认:/var/run/charon.vici)
-
vici.allow_peer_identities:是否允许对等身份验证