OpenSwan IPSec阶段#2并发症

阶段#1( IKE )成功,没有任何问题(在目标主机validation)。
然而,阶段2( IPSec )在某些时候是错误的(显然是由于本地主机configuration错误)。

这应该是一个IPSec连接。 我在Debian上使用OpenSwan 。 错误日志读取以下内容(远程端点的实际IP地址已被修改):

msgstr“5ece82ee proposal = AES(12)_256-SHA1(2)_160 pfsgroup = OAKLEY_GROUP_DH22}”#p#分页标题#
pluto [30868]:“x”#1:忽略信息有效负载,inputNO_PROPOSAL_CHOSEN msgid = 00000000
pluto [30868]:“x”#1:接收并忽略的信息性消息
pluto [30868]:“x”#1:同行提议:0.0.0.0/0:0/0 – > 0.0.0.0/0:0/0
pluto [30868]:“x”#3:响应快速模式提议{msgid:a4f5a81c}
pluto [30868]:“x”#3:us:192.168.1.76 <192.168.1.76> [+ S = C]
冥王星[30868]:“x”#3:他们:222.222.222.222 <222.222.222.222> [+ S = C] === 10.196.0.0/17
pluto [30868]:“x”#3:从状态STATE_QUICK_R0转换到状态STATE_QUICK_R1
pluto [30868]:“x”#3:STATE_QUICK_R1:发送QR1,安装入站IPsec SA,期望QI2
pluto [30868]:“x”#1:忽略信息有效负载,inputNO_PROPOSAL_CHOSEN msgid = 00000000
pluto [30868]:“x”#1:接收并忽略的信息性消息
pluto [30868]:“x”#3:ISAKMP哈希净荷的下一个有效载荷types具有未知值:97 X pluto [30868]:“x”#3:
冥王星[30868]:| IV后有效载荷不正常

我在NAT后面,这全部来自wlan2 。 以下是详细信息:

默认通过192.168.1.254 dev wlan2 proto static
169.254.0.0/16 dev wlan2范围链接度量标准1000
192.168.1.0/24 dev wlan2 proto kernel scope link src 192.168.1.76 metric 2

ipsecvalidation的输出:

检查您的系统以查看IPsec是否安装并正确启动:
版本检查和ipsec on-path [确定]
Linux Openswan U2.6.37 / K3.2.0-24-generic(netkey)
检查内核中的IPsec支持[确定]
SAref内核支持[N / A]
NETKEY:testingXFRM相关的proc值[确定]
[好]
[好]
检查pluto是否正在运行[OK]
冥王星在udp 500上听IKE [OK]
在udp 4500上聆听NAT-T的冥王星[OK]
find两个或多个接口,检查IP转发[确定]
检查NAT和MASQUERADEing [确定]
检查'ip'命令[确定]
检查/ bin / sh不是/ bin / dash [警告]
检查“iptables”命令[确定]
机会encryption支持[DISABLED]

当我运行ipsec auto时,会发生什么–up x

104“x”#1:STATE_MAIN_I1:启动
003“x”#1:收到Vendor ID payload [RFC 3947]方法设置为= 109
106“x”#1:STATE_MAIN_I2:发送MI2,等待MR2
003“x”#1:收到供应商ID有效载荷[Cisco-Unity]
003“x”#1:接收到供应商ID有效载荷[死对等检测]
003“x”#1:忽略未知供应商ID有效载荷[502099ff84bd4373039074cf56649aad]
003“x”#1:收到供应商ID有效负载[XAUTH]
003“x”#1:NAT-遍历:使用RFC 3947(NAT-Traversal)的结果:我是NAT
108“x”#1:STATE_MAIN_I3:发送MI3,期待MR3
004“x”#1:STATE_MAIN_I4:build立了ISAKMP SA {auth = OAKLEY_PRESHARED_KEY cipher = aes_128 prf = oakley_sha group = modp1024}
117“x”#2:STATE_QUICK_I1:发起
010“x”#2:STATE_QUICK_I1:重发; 将等待20秒的回应
010“x”#2:STATE_QUICK_I1:重发; 将等待40秒的回应
031“x”#2:最大重传次数(2)达到STATE_QUICK_I1。 我们的第一个快速模式消息没有可接受的答复:也许同行不喜欢没有提议
000“x”#2:最多3次开始键控尝试2,但是释放重击

来自ipsec auto的更多debugging信息–status

000使用内核接口:netkey
000接口lo / lo :: 1
000接口wlan2 / wlan2 192.168.1.76
000接口wlan2 / wlan2 192.168.1.76
000%myid =(none)
000 debug raw + crypt + parsing + emit + control + lifecycle + klips + dns + oppo + controlmore + pfkey + nattraversal + x509 + dpd + oppoinfo
000
000 virtual_private(%priv):
000 – 允许2个子网:10.196.0.0/17,192.168.1.0/24
000 – 不允许0个子网:
000警告:virtual_private =中的不允许的子网为空。 如果你有
000内部使用的私有地址空间,应该排除!
000
000 stats db_ops:{curr_cnt,total_cnt,maxsz}:context = {0,4,36} trans = {0,4,1536} attrs = {0,4,2048}
000
000“x”:192.168.1.0/24 = 197.268.1.76 [+ S = C] 取消布线; eroute所有者:#0
000“x”:myip = unset; hisip =未设置;
000“x”:ike_life:28800s; ipsec_l​​ife:28800s; rekey_margin:540s; rekey_fuzz:100%; 键位:3
000“x”:policy:PSK + ENCRYPT + PFS + UP + IKEv2ALLOW + SAREFTRACK + lKOD + rKOD; 24岁; 接口:wlan2;
000“x”:dpd:action:clear; 延迟:0; 超时:0;
000“x”:最新的ISAKMP SA:#0; 最新的IPsec SA:#0;
000“x”:想要的ESPalgorithm:AES(12)_256-SHA1(2)_000; pfsgroup = DH22(22); 标志= -strict
000“x”:加载ESPalgorithm:AES(12)_256-SHA1(2)_160

更多来自/var/log/auth.log的debugging信息( plutodebug =“all” ):

冥王星[26439]:| 对等客户端是子网0.0.0.0/0
冥王星[26439]:| 对等客户端协议/端口是0/0
冥王星[26439]:| 我们的客户端是子网0.0.0.0/0
冥王星[26439]:| 我们的客户端协议/端口是0/0
冥王星[26439]:“x”#1:同伴提议:0.0.0.0/0:0/0 – > 0.0.0.0/0:0/0
冥王星[26439]:| 以x开头的find_client_connection
冥王星[26439]:| 寻找0.0.0.0/0:0/0 – > 0.0.0.0/0:0/0
冥王星[26439]:| 具体检查sr#0 192.168.1.0/24 – > 10.196.0.0/17
冥王星[26439]:| match_id a = 222.222.222.222
冥王星[26439]:| B = 222.222.222.222
冥王星[26439]:| 结果匹配
冥王星[26439]:| trusted_ca用a =(空)调用b =(空)
冥王星[26439]:| fc_try trying x:0.0.0.0/0:0/0 – > 0.0.0.0/0:0/0 vs x:192.168.1.0/24:0/0 – > 10.196.0.0/17:0/0
冥王星[26439]:| 我们的客户端(192.168.1.0/24)不在our_net(0.0.0.0/0)
冥王星[26439]:| fc_try结束于none [0]
冥王星[26439]:| fc_try x不给
冥王星[26439]:| find_host_pair:比较192.168.1.76:500 222.222.222.222:500
冥王星[26439]:| 检查主机对192.168.1.0/24 – > 10.196.0.0/17未find
冥王星[26439]:| 以d =无结论
冥王星[26439]:| 使用(某些东西 – 希望我们或他们被NAT的IP)用于传输模式连接“x”

我已经在ipsec.conf中启用了NAT遍历。 以下是相关连接的相关设置:

版本2.0

configuration设置

plutoopts = “ – perpeerlog”
plutoopts = “ – 接口= WLAN2”
DUMPDIR =的/ var /运行/冥王星/
nat_traversal = YES
virtual_private =%V4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
OE =关
protostack = NETKEY

conn x

authby=secret pfs=yes auto=add phase2alg=aes256-sha1;dh22 keyingtries=3 ikelifetime=8h type=transport left=192.168.1.76 leftsubnet=192.168.1.0/24 leftprotoport=0/0 right=222.222.222.222 rightsubnet=10.196.0.0/17 rightprotoport=0/0 

以下是第二阶段必须满足的另一端提供的规格:

encryptionalgorithm:AES(128或256位)
散列algorithm:SHA
本地ident1(addr / mask / prot / port):(10.196.0.0/255.255.128.0/0/0)
本地ident2(addr / mask / prot / port):(10.241.0.0/255.255.0.0/0/0)
远程身份validation(addr /掩码/ prot /端口):(xxxx / xxxx / 0/0)(内部networking或本地主机)
安全联盟生存期:4608000千字节/ 3600秒
PFS:DH组2

那么,最后,我所遇到的问题可能是什么原因呢? 谢谢。

您将希望获得远程端以在连接结束时启用NAT-T。

IPSec通信以encryption方式对整个数据包进行签名 – 对IP头的任何更改都将使签名无效。 NAT通过重写源和/或目的IP字段来工作; 在连接的任一端都具有NAT意味着每个数据包在传输中都具有改变的报头; 在离开您的192.168networking的数据包中源发生更改,并且在入站数据包上更改目的地。

NAT-T通过将整个ESP数据包封装在新的UDP数据包中来抵消这一点。 UDP数据包可以安全地将其报头改为任何NAT设备,而ESP有效载荷将使整个行程不变。 远程节点将需要启用这个function来保护他们从NAT修改中发送的数据包,并且您都需要允许UDP端口4500。

这可能不是VPN隧道configuration中的唯一问题,但它肯定会解释一个格式错误的有效负载消息; 给它一个镜头,让我们知道如果有进一步的问题出现!

在ISAKMP的前两个消息中检测到对NAT Traversal的支持。 如果两个设备都支持NAT-T,则在ISKAMP主模式消息3和4中执行NAT发现。 既然你已经过去了ISAKMP交换。 我不认为这是NAT-T的问题。

如这里所见:

 003 "x" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): i am NATed 004 "x" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_PRESHARED_KEY cipher=aes_128 prf=oakley_sha group=modp1024} 

从IPsec日志看来,它似乎是* Swan版本或启动器网关设备中的一个错误。

 pluto[30868]: "x" #3: STATE_QUICK_R1: sent QR1, inbound IPsec SA installed, expecting QI2 

入站SA已安装。 请注意,在快速模式消息2结束时, 隧道即可使用 。 响应者正在等待最后的确认(信息3)。 最后一条消息是检查响应者的活力。 这只是为了通知响应者以前的消息已被正确接收和处理。