strongSwan 5.9.5 配置参数详解

strongSwan 5.9.5 双配置体系参数详解:swanctl.conf 连接/children/认证/流量选择器/pools 与 strongswan.conf 守护进程参数逐项讲解,默认值取自发行包官方模板,两台网关真实站点到站点隧道逐项实测验证,含内核 XFRM 证据面与 FAQ 排障。

strongSwanVPN网络配置2026/10/20

strongSwan 5.9.5 配置参数详解

目标:把 strongSwan 的两套配置文件——swanctl.conf(连接/凭据/地址池)与 strongswan.conf(守护进程全局设置)——的常用参数逐一讲透:每个参数的语义、默认值、实测验证方式与踩坑点。所有默认值摘自 Ubuntu 22.04 发行包自带的官方注释模板,所有验证回显均在两台 5.9.5 网关的真实站点到站点隧道上实测采集。安装过程见《Ubuntu 22.04 安装 strongSwan 指南》,命令全集见《strongSwan 5.9.5 常用 CLI 命令详解》。

一、环境信息

  • 实测时间:2026-10-20;软件版本:strongSwan 5.9.5-2ubuntu2.8(Ubuntu 22.04 jammy 官方源)
  • 实测拓扑(站点到站点,证书认证主线 + PSK 扩展线):
    • 网关 moon:10.89.57.11,受保护网段 192.168.30.0/24,身份 moon.quzuo.lab
    • 网关 sun:10.89.57.12,受保护网段 192.168.40.0/24,身份 sun.quzuo.lab
    • CA:C=CN, O=quzuo Lab, CN=quzuo Lab Root CA(自签,RSA 2048,有效期 3650 天)
    • 节点证书:RSA 2048,有效期 1200 天,SAN 含身份与地址
  • 配置落位:/etc/swanctl/conf.d/site2site.conf(主线连接)、/etc/swanctl/conf.d/psk.conf(PSK 扩展)、/etc/swanctl/{x509ca,x509,private}(凭据)、/etc/strongswan.conf(日志)
  • 双版本口径:本篇以 5.9.5 实测为准;6.1.0 的差异点(version 默认值、IKEv1 默认禁用等)在涉及处标注,总体差异见《strongSwan 6.1.0 介绍与选型指南》。

二、配置体系总览

2.1 双配置体系分工

文件管什么生效方式
/etc/swanctl/swanctl.conf + conf.d/*.conf连接(connections)、认证轮(local/remote)、子 SA(children)、凭据(secrets)、地址池(pools)、CA(authorities)swanctl --load-all 热加载,不断链
/etc/strongswan.conf + /etc/strongswan.d/*.conf守护进程全局:线程数、插件开关、日志、VICI 套接字swanctl --reload-settings(支持热更的键)或重启服务
/etc/ipsec.conf + /etc/ipsec.secrets遗留 starter 线的等价物ipsec update / ipsec reload

两套体系可共存(starter 线的 charon 同时装了 stroke 与 vici 插件,swanctl --stats 实测插件清单含 stroke vici),但同一连接不要双写,避免策略冲突。

2.2 发行包默认模板实况

/etc/swanctl/swanctl.conf 出厂即完整注释模板(实测全文 220+ 行),是最权威的参数默认值清单。模板开头(实测):

# Section defining IKE connection configurations.
# connections {

    # Section for an IKE connection named <conn>.
    # <conn> {

        # IKE major version to use for connection.
        # version = 0

        # Local address(es) to use for IKE communication, comma separated.
        # local_addrs = %any
...

💡 实操建议:把这个模板当字典用。本篇第三、四节的参数表默认值全部摘自该模板(5.9.5 包内原文),非官方模板来源的取值不在此列。

配置片段目录 conf.d/ 的加载规则:swanctl --load-all 按字典序读取该目录下所有 .conf,与主文件合并(同名段落合并、同名连接覆盖警告)。实测本环境主文件保持注释态,连接全放片段:

# /etc/swanctl/conf.d/site2site.conf(moon 侧,sun 侧对称)
connections {
    net-30-40 {
        version = 2
        local_addrs = 10.89.57.11
        remote_addrs = 10.89.57.12
        proposals = aes256-sha384-modp2048
        send_cert = always
        dpd_delay = 30s
        local {
            auth = pubkey
            id = moon.quzuo.lab
            certs = moon-cert.pem
        }
        remote {
            auth = pubkey
            id = sun.quzuo.lab
        }
        children {
            net-30-40 {
                local_ts = 192.168.30.0/24
                remote_ts = 192.168.40.0/24
                esp_proposals = aes256gcm16-prfsha384-modp2048
                start_action = none
                dpd_action = restart
                rekey_time = 60m
            }
        }
    }
}

三、connections 连接参数详解

3.1 协议与寻址

参数默认值(模板)作用实测要点
version0(5.9.5:IKEv2 优先、可回退 IKEv1;6.1.0 起默认 2 且 IKEv1 需编译启用)IKE 主版本显式写 version = 2 后,建链日志即 IKEv2 消息序列(实测回显见 3.5)
local_addrs / remote_addrs%any / %any本端/对端 IKE 地址,逗号分隔可多值指定单地址后,charon 只在该地址上发起/应答;实测日志 sending packet: from 10.89.57.11[500] to 10.89.57.12[500]
local_port / remote_port500 / 500IKE 端口NAT 穿越后自动浮动到 4500,无需手改
encapno强制 UDP 封装网络中间设备丢弃 ESP(协议号 50)时设 yes,代价是吞吐下降
mobikeyesMOBIKE 动态地址更新实测建链日志有 peer supports MOBIKE;移动场景保留默认

3.2 算法套件

参数默认值作用实测要点
proposalsdefaultIKE_SA 算法提案写 aes256-sha384-modp2048 后,实测协商结果 selected proposal: IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_2048
esp_proposals(children 内)default子 SA 算法提案写 aes256gcm16-prfsha384-modp2048 后实测 ESP:AES_GCM_16_256/NO_EXT_SEQ

可用算法底座以 swanctl --list-algs 实测输出为准(含 aead: 段的 AES-GCM/GMAC、CHACHA20POLY1305,dh: 段的 MODP_2048/3072、CURVE_25519 等)。写法上用 - 连接加密-完整性-PRF-DH 组,AEAD 算法(GCM)自带完整性,PRF 仍需单列。

3.3 生命周期与可靠性

参数默认值作用实测要点
dpd_delay0s(禁用)死端探测间隔实测设 30s 后,对端失联约 30–90 秒内触发探测与重建
dpd_timeout0sDPD 超时(仅 IKEv1)IKEv2 下不需要,靠消息重传机制
rekey_time(连接级)4hIKE_SA 重协商周期实测日志 scheduling rekeying in 13499s(= 4h 减去随机扰动 10% 窗口)
reauth_time0sIKE 重认证周期0 表示不重认证(只 rekey)
over_time / rand_time10% of rekey_time / = over_time硬超时与随机抖动窗与上面对应:maximum IKE_SA lifetime 14939s
uniqueno连接唯一性策略(never/no/keep/replace)多线接入同一身份重复登录时用 replace
keyingtries1初始建链重试次数建链失败即放弃(远端暂不可达的站点到站点建议配合 start_action = trap)
fragmentationyesIKE 消息分片实测建链时 1416 字节的 IKE_AUTH 被拆成 EF(1/2)、EF(2/2) 两个分片发出,说明分片在 net 大包场景自动生效

3.4 证书交互

参数默认值作用实测要点
send_certifasked发送本端证书的策略(always/never/ifasked)证书认证的站点到站点建议显式 always,实测双方交换证书成功
send_certreqyes是否发送证书请求默认保留;对端多 CA 时用于收敛选择
childlessallowChildless IKE_SA(RFC 6023)allow 表示支持但默认不强制

3.5 建链全过程实测(参数联动证据)

swanctl --initiate --child net-30-40 的完整回显(节选关键路径,逐行与实测日志核对):

[IKE] initiating IKE_SA net-30-40[1] to 10.89.57.12
[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
[NET] sending packet: from 10.89.57.11[500] to 10.89.57.12[500] (464 bytes)
...
[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_2048
[IKE] received cert request for "C=CN, O=quzuo Lab, CN=quzuo Lab Root CA"
[IKE] authentication of 'moon.quzuo.lab' (myself) with RSA_EMSA_PKCS1_SHA2_256 successful
[IKE] sending end entity cert "C=CN, O=quzuo Lab, CN=moon.quzuo.lab"
[IKE] establishing CHILD_SA net-30-40{1}
[ENC] splitting IKE message (1416 bytes) into 2 fragments
...
[IKE] IKE_SA net-30-40[1] established between 10.89.57.11[moon.quzuo.lab]...10.89.57.12[sun.quzuo.lab]
[IKE] scheduling rekeying in 13499s
[IKE] maximum IKE_SA lifetime 14939s
[CFG] selected proposal: ESP:AES_GCM_16_256/NO_EXT_SEQ
[IKE] CHILD_SA net-30-40{1} established with SPIs cc4a9223_i c2b63dc2_o and TS 192.168.30.0/24 === 192.168.40.0/24
[IKE] peer supports MOBIKE
initiate completed successfully

💡 技术拓展:IKE_SA 与 CHILD_SA 是两层对象

对象内容生命周期参数
IKE_SA(父)认证通道与密钥材料(UDP 500/4500)rekey_time(4h)/reauth_time(0)/over_time
CHILD_SA(子)一对 ESP SPI 与流量选择器(TS 192.168.30.0/24 === 192.168.40.0/24)rekey_time(1h)/life_time/rekey_bytes/rekey_packets

一个 IKE_SA 可以承载多个 CHILD_SA(同一对网关的多个网段组合不必重复认证);父 SA rekey 不影响流量,子 SA rekey 才是"隧道换钥匙"。实测日志中 IKE 侧 13499s 与 CHILD 侧 3481s(1h 抖动后)就是两套周期的体现。

四、children 子 SA 与流量选择器

参数默认值(模板)作用实测要点
local_ts / remote_tsdynamic流量选择器,决定"什么流量进隧道"站点到站点写网段(192.168.30.0/24),远程访问本端写 dynamic;多网段逗号分隔
modetunnel隧道模式;transport 为主机到主机加密实测隧道 INSTALLED, TUNNEL
start_actionnone加载后动作:none/start(立即建链)/trap(装陷阱策略等流量触发)/`trapstart`
dpd_actionclear死端动作:clear/trap/restart实测教训见第九节 FAQ-3:restart 会在对端 terminate 后自动重建隧道
close_actionnone本端关闭子 SA 后的动作通常保持 none
rekey_time1h子 SA 重协商周期配合 life_time = rekey_time + 10%(模板默认)
rekey_bytes / rekey_packets0 / 0按流量触发 rekey高吞吐链路可设阈值,按量换钥
updown(空)建链/拆链时执行的外部脚本(防火墙联动)传统 _updown iptables 入口在 /usr/lib/ipsec/_updown
inactivity0s空闲多久自动拆除按需,0 表示不因空闲拆除
tfc_padding0流量填充抗流量分析0 关闭
hw_offloadno硬件卸载有网卡 ESP 卸载能力时开启

流量选择器的内核落点用 ip xfrm policy 直接验证(swanctl --install --child net-30-40 返回 install completed successfully 后):

src 192.168.30.0/24 dst 192.168.40.0/24
        dir out priority 375423
        tmpl src 10.89.57.11 dst 10.89.57.12
                proto esp spi 0xceedd596 reqid 1 mode tunnel
src 192.168.40.0/24 dst 192.168.30.0/24
        dir fwd priority 375423
        tmpl src 10.89.57.12 dst 10.89.57.11
                proto esp reqid 1 mode tunnel
src 192.168.40.0/24 dst 192.168.30.0/24
        dir in priority 375423
        tmpl src 10.89.57.12 dst 10.89.57.11
                proto esp reqid 1 mode tunnel

(out/fwd/in 三条方向各就各位,再往后是系统自带的 socket 策略占位,与隧道无关。)

💡 技术拓展:流量选择器的三种典型写法

写法值示例触发场景
全流量local_ts = 0.0.0.0/0, ::/0远程访问客户端把全部流量拉进隧道
指定网段192.168.30.0/24站点到站点,语义最清晰
动态dynamic本端地址运行时确定(客户端拨入)

两侧选择器必须对称一致(本端 local_ts = 对端 remote_ts),否则 IKE_AUTH 的 TSi/TSr 校验不通过,表现为 NO_PROPOSAL_CHOSEN 或 TS 不匹配断链。

五、认证与凭据

5.1 证书认证线(pubkey)

证书落位(实测目录,文件名任意、内容为准):

/etc/swanctl/x509ca/ca-cert.pem      # CA 证书(信任锚)
/etc/swanctl/x509/moon-cert.pem      # 本端实体证书
/etc/swanctl/private/moon-key.pem    # 本端私钥

认证轮参数(实测主线):

参数值说明
local.auth / remote.authpubkey证书认证;远程访问服务端常见 eap-mschapv2 等
local.id / remote.idmoon.quzuo.lab / sun.quzuo.lab身份,必须与证书的 SAN/DN 可匹配(本系列证书以 SAN 写入)
local.certsmoon-cert.pem使用哪个实体证书(文件在 /etc/swanctl/x509/)
local.round0多认证轮次排序(IKEv2 RFC 4739),单轮不用写

swanctl --load-all 实测回显(moon 侧):

loaded certificate from '/etc/swanctl/x509/moon-cert.pem'
loaded certificate from '/etc/swanctl/x509ca/ca-cert.pem'
loaded RSA key from '/etc/swanctl/private/moon-key.pem'
no authorities found, 0 unloaded
no pools found, 0 unloaded
loaded connection 'net-30-40'
successfully loaded 1 connections, 0 unloaded

对端证书链校验过程在建链日志中完整可见(实测节选):

[IKE] received end entity cert "C=CN, O=quzuo Lab, CN=sun.quzuo.lab"
[CFG]   using certificate "C=CN, O=quzuo Lab, CN=sun.quzuo.lab"
[CFG]   using trusted ca certificate "C=CN, O=quzuo Lab, CN=quzuo Lab Root CA"
[CFG]   reached self-signed root ca with a path length of 0
[CFG] checking certificate status of "C=CN, O=quzuo Lab, CN=sun.quzuo.lab"
[CFG] certificate status is not available
[IKE] authentication of 'sun.quzuo.lab' with RSA_EMSA_PKCS1_SHA2_256 successful

5.2 PSK 认证线(secrets)

secrets 段定义预共享密钥,用 id 把密钥与对端身份绑定(moon 侧实测配置;连接定义落在 conf.d/psk.conf,secrets 段落在 conf.d/site2site.conf 的追加段,sun 侧对称):

connections {
    net-psk {
        version = 2
        local_addrs = 10.89.57.11
        remote_addrs = 10.89.57.12
        local {
            auth = psk
            id = moon.quzuo.lab
        }
        remote {
            auth = psk
            id = sun.quzuo.lab
        }
        children {
            net-psk {
                local_ts = 192.168.30.0/24
                remote_ts = 192.168.40.0/24
                start_action = none
            }
        }
    }
}
secrets {
    ike-quzuo {
        id = sun.quzuo.lab
        secret = q1w2e3r4
    }
}

加载与建链实测(swanctl --load-creds + swanctl --initiate --child net-psk):

loaded ike secret 'ike-quzuo'
[IKE] peer supports MOBIKE
initiate completed successfully

密钥不匹配的失败形态(实测:把 moon 侧 secret 改错后发起):

[NET] received packet: from 10.89.57.12[4500] to 10.89.57.11[4500] (80 bytes)
[ENC] parsed IKE_AUTH response 1 [ N(AUTH_FAILED) ]
[IKE] received AUTHENTICATION_FAILED notify error

⚠️ PSK 排障三板斧:swanctl --load-creds 确认 loaded ike secret 有输出 → 核对两侧 id 与 secrets.<n>.id 完全一致 → 检查 secret 字符串无行尾空格/引号。AUTH_FAILED 只说明"认证失败",不区分密钥错还是身份错,必须两侧比对。

💡 技术拓展:认证方式的取舍

方式参数值适用注意
证书pubkey站点到站点、设备级互信身份必须能匹配证书 SAN/DN;吊销校验另配 CRL/OCSP
预共享密钥psk少量对端、快速打通密钥与身份绑定;不适合大规模
EAP 用户认证eap-mschapv2 等远程访问,配合 RADIUS服务端 remote.auth 通常先 pubkey 后 EAP 双轮

生产站点到站点优先 pubkey:轮换凭据只换证书、支持吊销、可审计,PSK 轮换需要两侧同步改密。

六、地址池(pools)与虚拟 IP

pools 段为远程访问客户端分配虚拟 IP,并可挂属性(如 DNS)。实测(moon 侧,客户端暂未接入,池已注册):

pools {
    rw-pool {
        addrs = 10.3.0.0/24
        dns = 10.89.57.11
    }
}
$ swanctl --load-all
loaded ike secret 'ike-quzuo'
loaded pool 'rw-pool'
successfully loaded 1 pools, 0 unloaded

$ swanctl --list-pools
rw-pool              10.3.0.0                            0 / 0 / 254

--list-pools 输出三段数字为 在线 / 正使用 / 容量。connections.<conn>.pools = rw-pool 引用后,客户端虚拟 IP 从池分配并自动生成对应的主机路由与策略。

七、strongswan.conf 守护进程参数

7.1 结构与内置默认

/etc/strongswan.conf 出厂内容(实测全文):

# strongswan.conf - strongSwan configuration file

charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
}

include strongswan.d/*.conf

要点:load_modular = yes + plugins.include 片段目录机制——每个插件的开关在 /etc/strongswan.d/charon/<插件>.conf,一行 load = yes/no 即可启停插件,不要在主文件堆插件名。swanctl --stats 实测当前加载插件清单(含 stroke vici、kernel-netlink、eap-mschapv2 等)。

线程池默认 16(swanctl --stats 实测 worker threads: 16 total, 11 idle, working: 4/0/1/0),一般无需调整。

7.2 filelog 日志实测

给 charon 配置文件日志(追加到 /etc/strongswan.conf 的 charon 段内):

charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        filelog {
                charon-file {
                        path = /var/log/strongswan-charon.log
                        time_format = %T
                        default = 1
                }
        }
}

重启后验证(实测):

$ ipsec restart
Starting strongSwan 5.9.5 IPsec [starter]...
$ swanctl --initiate --child net-30-40
initiate completed successfully
$ ls -la /var/log/strongswan-charon.log
-rw-r--r-- 1 root root 4096 Oct 20 11:36 /var/log/strongswan-charon.log
$ tail -2 /var/log/strongswan-charon.log
11:36:50 15[IKE] authentication of 'sun.quzuo.lab' with RSA_EMSA_PKCS1_SHA2_256 successful
11:36:50 15[IKE] IKE_SA net-30-40[1] established between 10.89.57.11[moon.quzuo.lab]...10.89.57.12[sun.quzuo.lab]

关键规则(实测踩坑,详见 FAQ-1):filelog 的段名不允许 /、-、. 等字符,文件路径必须写进 path 选项;default = 1 为全局日志级别,调试时临时调到 2(IKE 细节)并记得改回。

7.3 其他常用键

键说明实测备注
charon.dns1 / charon.dns2解析器供 %any 身份解析等场景使用按需
charon.make_before_breakIKE 重认证时先建新 SA 再拆旧移动/双活场景建议 yes
charon.install_routes是否自动安装子 SA 路由路由式 VPN 与自定义路由联动时注意
charon.retransmit_timeout / _jitter / _baseIKE 重传参数跨公网高时延链路调大
swanctl.socketswanctl 客户端连接的 VICI URI默认 unix:///var/run/charon.vici,与 vici 插件的 socket 对应
swanctl.load_warning加载时对未识别键的告警排查配置笔误时打开

改完 strongswan.conf 后:支持热更的键用 swanctl --reload-settings;日志等结构性改动直接 systemctl restart strongswan-starter(或 ipsec restart)。

八、内核证据面(ip xfrm)

strongSwan 把协商结果写进内核 XFRM,ip xfrm state 是最硬核的验证面(实测建链后 moon 侧,AES-GCM 为 AEAD 算法,故只有一条 aead 密钥行):

src 10.89.57.11 dst 10.89.57.12
        proto esp spi 0xc2b63dc2 reqid 1 mode tunnel
        replay-window 0 flag af-unspec
        aead rfc4106(gcm(aes)) 0x1f710a2d9c0e5d1807a88f199943b9ae35f009996ea3cdce5c87faf68814b7ebe097552e 128
        anti-replay context: seq 0x0, oseq 0x0, bitmap 0x00000000
src 10.89.57.12 dst 10.89.57.11
        proto esp spi 0xcc4a9223 reqid 1 mode tunnel
        replay-window 32 flag af-unspec
        aead rfc4106(gcm(aes)) 0xa7f22c841f3318086f7e10dcb74a039db24b861ebad9b560cb39a741c090d1a5bafcf091 128
        anti-replay context: seq 0x0, oseq 0x0, bitmap 0x00000000

(密钥为一次性实验 CA 环境生成的会话密钥,隧道拆除即失效,此处完整保留回显以呈现真实格式。)

要点:reqid 1 与 swanctl --list-sas 中 reqid 1 对应(children 的内核关联号);两条方向相反的 SPI(cc4a9223_i 进向、c2b63dc2_o 出向)与 swanctl 视图完全一致。内核有 SA、隧道不通,去查路由/防火墙;内核没 SA,去查 IKE 日志——这是 IPsec 排障的分水岭。

陷阱策略(trap)实测:swanctl --install --child net-30-40 后 ip xfrm policy 出现 dir out 策略与 proto esp reqid 1 mode tunnel 模板(回显见第四节),swanctl --uninstall --child net-30-40 撤除。start_action = trap 的意义就是把这一步自动化:有流量命中策略才发起协商,适合"平时静默、用时秒起"的分支场景。

九、参数速查表

连接级(connections.<conn>)高频默认值(摘自 5.9.5 包内模板):

参数默认值本篇实测取值
version0(6.1.0 起:2)2
local_addrs / remote_addrs%any / %any10.89.57.11 / 10.89.57.12
proposalsdefaultaes256-sha384-modp2048
send_certifaskedalways
dpd_delay0s30s
rekey_time4h4h(默认)
uniquenono
fragmentationyesyes

子 SA 级(children.<child>):

参数默认值本篇实测取值
local_ts / remote_tsdynamic192.168.30.0/24 / 192.168.40.0/24
esp_proposalsdefaultaes256gcm16-prfsha384-modp2048
start_actionnonenone(trap 用法见第八节)
dpd_actionclearrestart
rekey_time1h60m
modetunneltunnel
updown(空)(空)

十、常见问题(FAQ)

Q1:filelog 段名写成文件路径,ipsec restart 报 unexpected ... at /etc/strongswan.conf:LINE ... abort initialization due to invalid configuration? 实测原因:段名字符集不含 /、-、.。路径改用 path 选项(第七节 7.2 正确写法),段名用纯字母数字(如 charon-file)。

Q2:连接加载报 key 'xxx' is not a valid config key 类告警? 逐字核对 swanctl.conf 键名(官方模板为准);swanctl.load_warning = yes 可让未识别键显式告警,避免静默忽略导致"配置了但没生效"。

Q3:明明 swanctl --terminate --child xxx 拆了隧道,几秒后又自动重建? 实测原因:对端(或本端)dpd_action = restart 在检测到隧道消失后按策略自动重建。这是配置行为不是故障;要真正下线,两侧都改配置再 --load-conns,或临时把 dpd_action 改 clear。

Q4:PSK 认证失败,日志 received AUTHENTICATION_FAILED notify error? 实测排查顺序:swanctl --load-creds 看是否 loaded ike secret → 两侧 local.id/remote.id 与 secrets.<n>.id 逐字比对 → secret 值两侧一致(注意引号与空格)。实测复现案例见第五节 5.2。

Q5:证书认证失败,怎么从日志定位? 按日志链条走:received end entity cert → using trusted ca certificate → reached self-signed root ca → authentication of '...' successful。哪一步断,问题在哪一层(没收到证书 → send_cert;CA 不信 → x509ca 落位;身份不匹配 → id 与 SAN)。

Q6:version 到底写不写? 5.9.5 默认 0(IKEv2 优先、允许回退 IKEv1),显式写 version = 2 可杜绝回退并让排障语义确定;6.1.0 起默认已是 2 且 IKEv1 默认禁用,新连接一律显式 version = 2。

Q7:改了 swanctl.conf 不生效? swanctl --load-all(或 --load-conns)只是"重新读取配置进守护进程",从未建立过的连接立即生效;已建立的 CHILD_SA 不受影响(按 dpd_action/rekey_time 走),需要立即应用就 --terminate 后再 --initiate。

十一、参考链接