我们正在尝试针对 Juniper 盒子建立持久的 VPN 连接。然而,存在一些配置错误。当我们启动 StrongSwan 服务时,隧道已开通,所有交通均正常。但是,一旦几秒钟内没有流量,连接就会断开,并且必须重新启动服务。当我们在后台对 VPN 目标 IP 地址运行无限 ping 循环时,连接会继续存在。我们相信,这是某种与保活相关的问题。有人看到任何可能的配置不一致吗?
规格表 - 两个站点都同意以下 IPSec 设置:
第 1 阶段(密钥交换):
加密 {3DES、AES256}:AES256
数据完整性 {MD5,SHA1,SHA2}:SHA256
Diffie-Hellman {MD5,SHA1,SHA2}:5
重新协商 IKE SA {秒}:86400
第 2 阶段(数据传输):
IPSec:ESP
加密 {3DES、AES256}:AES256
数据完整性 {MD5、SHA1、SHA2}:SHA256
PFS:是
Diffie-Hellman:5
SA 生命周期{秒}:3600
IP 压缩:否
相关配置文件如下。
ipsec.conf:
config setup
charondebug="ike 4, knl 4, cfg 4, net 4, esp 4, dmn 4, mgr 4"
conn %default
type=tunnel
authby=secret
ikelifetime=86400
lifetime=3600
keyexchange=ikev1
compress=no
dpdaction=restart
dpddelay=10s
dpdtimeout=500s
conn otto-105-183
also=otto
rightsubnet=10.108.105.183/32
conn otto-100-34
also=otto
rightsubnet=10.108.100.34/32
conn otto-100-35
also=otto
rightsubnet=10.108.100.35/32
conn otto
auto=start
ike=aes256-sha2_256-modp1536!
esp=aes256-sha2_256-modp1536!
left=%defaultroute
leftsubnet=10.107.54.33/32
leftfirewall=yes
right=my_public_IP_address ; redacted
卡戎.conf:
charon {
keep_alive = 20s
crypto_test {
}
host_resolver {
}
leak_detective {
}
processor {
priority_threads {
}
}
start-scripts {
}
stop-scripts {
}
tls {
}
x509 {
}
}
答案1
VPN掉线、掉线似乎是一个(经常)超时协商的问题。
我建议更改设备上的 dpd 超时VPN 两端至 30 秒。两者必须具有相同的值。
在Linux端定义就足够了
dpdtimeout=30s
在某些情况下,在处理第 3 方硬件时,根据我的经验,选择较低的死对等超时似乎会更成功。
失效对等点检测 (DPD) 是网络设备用来验证其他对等设备当前是否存在和可用性的方法。
设备通过向对等方发送加密的 IKE 第 1 阶段通知有效负载(RU-THERE 消息)并等待来自对等方的 DPD 确认(RU-THERE-ACK 消息)来执行 DPD 验证。仅当设备在指定的 DPD 时间间隔内未收到来自对等方的任何流量时,才会发送 RU-THERE 消息。如果设备在此时间间隔内收到来自对等方的 RU-THERE-ACK 消息,则认为对等方处于活动状态。如果设备在隧道上收到来自对等方的流量,则会重置该隧道的 RU-THERE 消息计数器,从而开始新的间隔。如果设备在该时间内没有收到RU-THERE-ACK消息,则认为对端已死亡。