当 Windows 8 尝试连接到我的 Strongswan VPN 时,我收到以下错误,
错误 13843:收到无效的有效负载。
我不知道如何解决它或是什么原因造成的。我的 charon 日志中有这个,
15[IKE] IKE_SA roadwarrior[2] established between 10.0.10.81[DNREDACTED1]...75.108.226.117[DNREDACTED2]
15[IKE] scheduling reauthentication in 9771s
15[IKE] maximum IKE_SA lifetime 10311s
15[IKE] sending end entity cert "REDACTED GW CERT"
15[IKE] peer requested virtual IP %any
15[IKE] no virtual IP found, sending INTERNAL_ADDRESS_FAILURE
15[IKE] configuration payload negotiation failed, no CHILD_SA built
15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH N(AUTH_LFT) N(MOBIKE_SUP) N(NO_ADD_ADDR) N(INT_ADDR_FAIL) ]
15[NET] sending packet: from 10.0.10.81[4500] to 75.108.226.117[4500]
16[NET] received packet: from 75.108.226.117[4500] to 10.0.10.81[4500]
16[ENC] parsed INFORMATIONAL request 2 [ D ]
16[IKE] received DELETE for IKE_SA roadwarrior[2]
16[IKE] deleting IKE_SA roadwarrior[2] between 10.0.10.81[DNREDACTED1]...75.108.226.117[DNREDACTED2]
16[IKE] IKE_SA deleted
16[ENC] generating INFORMATIONAL response 2 [ ]
16[NET] sending packet: from 10.0.10.81[4500] to 75.108.226.117[4500]
ipsec配置文件
conn %default
dpdaction=clear
dpddelay=300s
keyexchange=ikev2
auto=add
conn roadwarrior
keyexchange=ikev2
auto=add
left=%defaultroute
leftcert=gw-cert.pem
leftsubnet=10.0.10.0/24
right=%any
rightsubnet=192.168.1.1/24
strongswan.conf
charon {
threads = 16;
# Two defined file loggers. Each subsection is either a file
# in the filesystem or one of: stdout, stderr.
filelog {
/var/log/charon.log {
# add a timestamp prefix
time_format = %b %e %T
# loggers to files also accept the append option to open files in
# append mode at startup (default is yes)
append = no
# the default loglevel for all daemon subsystems (defaults to 1).
default = 1
# flush each line to disk
flush_line = yes
}
stderr {
# more detailed loglevel for a specific subsystem, overriding the
# default loglevel.
ike = 2
knl = 3
# prepend connection name, simplifies grepping
ike_name = yes
}
}
# And two loggers using syslog. The subsections define the facility to log
# to, currently one of: daemon, auth.
syslog {
# optional identifier used with openlog(3), prepended to each log message
# by syslog. if not configured, openlog(3) is not called, so the value will
# depend on system defaults (usually the program name)
identifier = charon-custom
# default level to the LOG_DAEMON facility
daemon {
}
# very minimalistic IKE auditing logs to LOG_AUTHPRIV
auth {
default = -1
ike = 0
}
}
dns1=4.2.2.1
dns2=4.2.2.2
}
答案1
在你的ipsec.conf
日志中你有
右子网=192.168.1.1/24
那应该是
rightosourceip=192.168.1.1/24
left/rightsubnet 记录为,
左|右子网 = [[]][,...]
左侧参与者后面的私有子网,以网络/网络掩码表示;如果省略,则基本上假定为左/32|128,表示连接的左|右端仅通向左|右参与者。对等方配置的子网可能不同,协议将其缩小到最大的公共子网。自 5.0.0 起,IKEv1 也这样做了,但由于这可能会导致其他实现出现问题,请确保在此类配置中配置相同的子网。IKEv2 支持以逗号分隔的多个子网,IKEv1 仅解释此类定义的第一个子网,除非启用了 Cisco Unity 扩展插件(自 5.0.1 起可用)。
自 5.1.0 起,每个子网后面用方括号括起来的可选部分指定一个协议/端口,以限制该子网的选择器。示例:leftsubnet=10.0.0.1[tcp/http],10.0.0.2[6/80] 或 leftsubnet=fec1::1[udp],10.0.0.0/16[/53]。除了省略任一值外,还可以使用 %any 来达到相同的效果,例如 leftsubnet=fec1::1[udp/%any],10.0.0.0/16[%any/53]
端口值也可以采用 RFC 4301 OPAQUE 选择器的值 %opaque,或采用 1024-65535 形式的数值范围。目前没有任何内核后端支持不透明或端口范围,而是使用 %any 进行策略安装。
可以使用 %dynamic 代替指定子网,将其替换为 IKE 地址,效果与完全省略 left|rightsubnet 相同。使用 %dynamic 可以定义多个动态选择器,每个选择器可能具有不同的协议/端口定义。
鉴于rightsourceip
记录为,
rightsourceip = %config | / | %池名称
远程对等体隧道中使用的内部源 IP。如果响应方配置了该值,发起方必须提出一个地址,然后回显该地址。还支持以 / 表示的地址池或使用 %poolname 的外部 IP 地址池,其中 poolname 是用于查找的 IP 地址池的名称(有关详细信息,请参阅虚拟 IP)。自 5.0.1 起,接受以逗号分隔的 IP 地址/池列表,例如,定义不同地址系列的池。