首页/网络/BGP 与广域网速查/strongSwan:swanctl.conf 配置结构
IPsec VPN60 条

strongSwan:swanctl.conf 配置结构

strongSwan 5.7 起以 swanctl 为主:connections 定义隧道与提案,children 定义子 SA 与流量选择符,secrets 存 PSK;加载后即可查看运行态。

BGP 与广域网速查网络更新于 2026-10-13

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/ 下按站点拆分文件
connectionsIKE 版本、地址、提议与认证方式
children子 SA 的流量选择符与 ESP 提议
secretsPSK 与私钥存放区
加载与查看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 命令不共用配置,升级后迁移要整份重写;两套配置同时存在会让排障出现「改了不生效」的错觉。

易错点

  • 把 ESP 提议写进 connections 或把 IKE 提议写进 children:配置能加载但协商失败,报错不明显
  • 流量选择符写得过宽(0.0.0.0/0):与对端不一致时协商通过但流量不匹配,表现为单向不通
  • 加载配置后未查看解析结果:命令报错被忽略,运行态仍是旧配置
  • PSK 放在 secrets 时未与连接身份关联:多站点场景下选错密钥导致认证失败
  • 同时保留旧版配置目录:两套配置互相干扰,排障时看到的现象与实际文件不符

数据来源与参考

  • strongSwan 文档:swanctl.conf
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌