swanctl 配置结构
strongSwan 从 5.7 版本起以 swanctl 为主流配置接口,配置文件按功能分三段组织:connections 描述一条连接,包含 IKE 版本、本地与远端地址、IKE 提议,以及双方的认证方式;children 描述这条连接下的子 SA,也就是真正保护业务流量的那部分,其中定义流量选择符与 ESP 提议;secrets 单独存放 PSK 和私钥。这种分层与 IPsec 的两阶段模型一一对应,理解 connections 相当于阶段一、children 相当于阶段二,写配置时就不容易把参数放错地方。加载后用 swanctl 命令查看运行态即可验证是否生效。
基本信息
| 适用版本 | strongSwan 5.7 及以上,swanctl 取代旧的 ipsec.conf |
|---|---|
| 配置目录 | /etc/swanctl/conf.d/ 下按站点拆分文件 |
| connections | IKE 版本、地址、提议与认证方式 |
| children | 子 SA 的流量选择符与 ESP 提议 |
| secrets | PSK 与私钥存放区 |
| 加载与查看 | swanctl --load-all 后 swanctl --list-sas |
典型使用场景
- Linux 云主机与云上 VPN 网关对接站点到站点隧道
- 多分支集中器:connections 与 children 按站点拆分管理
- 与硬件设备联调:先确认两端提议与流量选择符一致
- 容器或虚拟机自动化部署:配置文件可模板化并纳入版本管理
- 排障:用 list-conns 确认配置解析是否与预期一致
配置与加载
配置与加载
# /etc/swanctl/conf.d/site2site.conf
connections {
site2site {
version = 2
local_addrs = 198.51.100.1
remote_addrs = 203.0.113.2
proposals = aes256-sha256-modp2048
local { auth = psk }
remote { auth = psk }
children {
net {
local_ts = 10.1.1.0/24
remote_ts = 10.2.2.0/24
esp_proposals = aes256-sha256
start_action = trap
}
}
}
}
secrets {
ike-site2site { secret = MySecret }
}
# 加载并查看运行态
# swanctl --load-all
# swanctl --list-sas配置段与阶段对应
| 配置段 | 对应阶段 | 关键参数 |
|---|---|---|
| connections | 阶段一 | 版本、地址、IKE 提议、认证方式 |
| children | 阶段二 | 流量选择符、ESP 提议、启动动作 |
| secrets | 凭据 | PSK 或私钥,按身份关联 |
| local 与 remote | 身份 | 认证方式与身份标识 |
start_action 决定隧道何时建立:trap 在有匹配流量时触发,start 则主动发起;排障时用 trap 更接近实际业务行为。
swanctl 与旧版 ipsec.conf 命令不共用配置,升级后迁移要整份重写;两套配置同时存在会让排障出现「改了不生效」的错觉。