首页/网络/BGP 与广域网速查/strongSwan 运行态:状态与日志查看
IPsec VPN60 条

strongSwan 运行态:状态与日志查看

strongSwan 排错三板斧:swanctl --list-sas 看连接与子 SA,swanctl --stats 看全局计数,日志按服务过滤查看协商事件。

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

运行态怎么查

strongSwan 排错的核心是分清「配置加载了什么」与「运行时实际建立了什么」,这两者不一致是很多问题的来源。swanctl 的查看命令按这个区分组织:list-conns 展示从配置文件解析出来的连接定义,如果这项缺失或内容不符,说明配置根本没被正确加载;list-sas 展示实际运行的安全联盟,包括已建立的子 SA、流量计数与重协商时间,这项缺失说明协商没有成功;stats 给出全局计数,配合日志能判断是否存在被丢弃的报文。日志方面按服务过滤查看协商事件,能还原完整的握手时间线。

基本信息

配置视图swanctl --list-conns 查看解析结果
运行视图swanctl --list-sas 查看已建立的 SA
全局计数swanctl --stats 查看统计信息
日志journalctl -u strongswan 或查看 charon 日志
旧版命令ipsec statusall(对应旧配置体系)
过滤技巧按连接名并配合时间范围筛选日志

典型使用场景

  • 隧道不通:先确认配置是否被加载,再确认 SA 是否建立
  • 子 SA 缺失:连接存在但没有 children,说明流量选择符或提议不匹配
  • 排查重协商:观察 SA 的剩余时间与重建记录
  • 确认流量计数:判断业务流量是否真的走了隧道
  • 升级或重启后核对:确认服务恢复后 SA 是否自动重建

常用命令

常用命令
# 配置解析结果
swanctl --list-conns
# 运行态 SA 与流量
swanctl --list-sas
# 更细的原始输出,便于脚本处理
swanctl --list-sas --raw
# 全局统计
swanctl --stats
# 按时间范围过滤日志
journalctl -u strongswan --since '10 min ago'
# 旧版命令对照
ipsec statusall

输出判读

观察结果含义下一步
list-conns 无内容配置未加载或路径错误检查配置文件与加载命令
有 conns 无 sas协商失败查看日志中的提议与认证错误
有 sas 无子 SA阶段二未成功核对流量选择符与 ESP 提议
子 SA 计数不增长流量未匹配隧道检查路由与选择符范围
SA 频繁重建重协商或 DPD 触发查看日志时间线
swanctl 与旧版 ipsec 命令查看的是不同体系的状态:迁移过程中用错命令会看到「什么都没有」,先确认使用哪套配置。
事件时间线比单点状态更有价值:把日志与业务故障时间点对齐,能快速区分是协商失败还是流量被丢弃。

易错点

  • 只看运行态不看配置加载结果:无法判断问题出在配置解析还是协商阶段
  • 用旧版命令查 swanctl 配置:输出为空被误读为服务未运行
  • 忽略子 SA 的流量计数:SA 存在但计数不增长说明流量根本没走隧道
  • 日志过滤范围过窄:漏掉了协商初期的错误信息
  • 在服务重启后不核对状态:SA 未自动重建而业务已恢复,属于假象

数据来源与参考

  • strongSwan 文档:swanctl 命令
  • strongSwan 文档:日志配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌