OpenSwan IPSec 第 2 阶段的复杂性

OpenSwan IPSec 第 2 阶段的复杂性

阶段1 (IKE) 成功,没有任何问题(在目标主机上验证)。
第 2 阶段 (IPSec),但在某些时候是错误的(显然是由于本地主机的配置错误)。

这应该是一个IPSec-仅连接。我正在使用开放的SwanDebian错误日志内容如下(远程端点的实际 IP 地址已被修改):

pluto[30868]: "x" #2: 启动快速模式 PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK {使用 isakmp#1 msgid:5ece82ee 提案=AES(12)_256-SHA1(2)_160 pfsgroup=OAKLEY_GROUP_DH22}
pluto[30868]: "x" #1: 忽略信息负载,类型 NO_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: 我们: 192.168.1.76<192.168.1.76>[+S=C]
pluto[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: 忽略信息有效载荷,类型NO_PROPOSAL_CHOSEN msgid=00000000
pluto[30868]: "x" #1: 已接收并忽略信息性消息
pluto[30868]: "x" #3: ISAKMP Hash Payload 的下一个有效载荷类型具有未知值:97 X pluto[30868]: "x" #3: 数据包中的有效载荷格式错误
pluto[30868]: | IV 之后的有效载荷格式错误

我落后了NAT这一切都来自无线网络2。详情如下:

默认通过 192.168.1.254 dev wlan2 proto 静态
169.254.0.0/16 dev wlan2 范围链接度量 1000
192.168.1.0/24 dev wlan2 proto 内核范围链接 src 192.168.1.76 度量 2

输出ipsec 验证

检查您的系统以查看 IPsec 是否已正确安装并启动:
版本检查和 ipsec 路径 [OK]
Linux Openswan U2.6.37/K3.2.0-24-generic (netkey)
检查内核中的 IPsec 支持 [OK]
SAref 内核支持 [N/A]
NETKEY:测试 XFRM 相关的 proc 值 [OK]
[OK]
[OK]
检查 pluto 是否正在运行 [OK]
Pluto 在 udp 500 上监听 IKE [OK]
Pluto 在 udp 4500 上监听 NAT-T [OK]
发现两个或更多接口,检查 IP 转发 [OK]
检查 NAT 和 MASQUERADEing [OK]
检查“ip”命令 [OK]
检查 /bin/sh 不是 /bin/dash [警告]
检查“iptables”命令 [OK]
机会加密支持 [已禁用]

这就是我跑步时发生的事情ipsec 自动 --up x

104 "x" #1: STATE_MAIN_I1: 启动
003 "x" #1: 收到供应商 ID 负载 [RFC 3947] 方法设置为 = 109
106 "x" #1: STATE_MAIN_I2: 已发送 MI2,期待 MR2
003 "x" #1: 收到供应商 ID 负载 [Cisco-Unity]
003 "x" #1: 收到供应商 ID 负载 [Dead Peer Detection]
003 "x" #1: 忽略未知供应商 ID 负载 [502099ff84bd4373039074cf56649aad]
003 "x" #1: 收到供应商 ID 负载 [XAUTH]
003 "x" #1: NAT-Traversal: 使用 RFC 3947 (NAT-Traversal) 的结果: 我已进行 NAT
108 "x" #1: STATE_MAIN_I3:已发送 MI3,预期为 MR3
004 "x" #1:STATE_MAIN_I4:已建立 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 自动 --状态

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+leasing+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===192.168.1.76[+S=C]...222.222.222.222<222.222.222.222>[+S=C]===10.196.0.0/17; unrouted; eroute Owner: #0
000 "x": myip=unset; hisip=unset;
000 "x": ike_life: 28800s; ipsec_l​​ife:28800s;rekey_margin:540s;rekey_fuzz:100%;keyingtries:3
000“x”:策略:PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD;prio:24,17;接口:wlan2;
000“x”:dpd:动作:清除;延迟:0;超时:0;
000“x”:最新的 ISAKMP SA:#0;最新的 IPsec SA:#0;
000“x”:需要 ESP 算法:AES(12)_256-SHA1(2)_000;pfsgroup=DH22(22);flags=-strict
000“x”:已加载 ESP 算法:AES(12)_256-SHA1(2)_160

更多调试信息(plutodebug="全部") 来自(哪里/var/log/auth.log

pluto[26439]: | 对等客户端子网为 0.0.0.0/0
pluto[26439]: | 对等客户端协议/端口为 0/0
pluto[26439]: | 我们的客户端子网为 0.0.0.0/0
pluto[26439]: | 我们的客户端协议/端口为 0/0
pluto[26439]:“x”#1:对等方提议:0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
pluto[26439]: | find_client_connection 以 x 开头
pluto[26439]: | 正在寻找 0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
pluto[26439]: |针对 sr#0 192.168.1.0/24 -> 10.196.0.0/17 进行具体检查
pluto[26439]: | match_id a=222.222.222.222
pluto[26439]: | b=222.222.222.222
pluto[26439]: | 结果匹配
pluto[26439]: | trust_ca 调用 a=(空) b=(空)
pluto[26439]: | fc_try 尝试 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
pluto[26439]: |我们的客户端(192.168.1.0/24)不在我们的网络(0.0.0.0/0)中
pluto[26439]: | fc_try 以 none 结束 [0]
pluto[26439]: | fc_try x 给出 none
pluto[26439]: | find_host_pair:与 192.168.1.76:500 222.222.222.222:500 比较
pluto[26439]: | 检查主机对 192.168.1.0/24 -> 10.196.0.0/17 未找到
pluto[26439]: | 以 d = none 结束
pluto[26439]: | 使用(某些东西 - 希望是我们或他们通过 NAT 连接到的 IP)进行传输模式连接“x”

我已经启用NAT遍历ipsec配置文件相应地。以下是与所讨论的连接相关的设置:

版本 2.0

配置设置

plutoopts="--perpeerlog"
plutoopts="--interface=wlan2"
dumpdir=/var/run/pluto/
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey

连接 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

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

加密算法:AES(128 或 256 位)
哈希算法:SHA
本地标识 1(地址/掩码/协议/端口):(10.196.0.0/255.255.128.0/0/0)
本地标识 2(地址/掩码/协议/端口):(10.241.0.0/255.255.0.0/0/0)
远程标识(地址/掩码/协议/端口):(xxxx/xxxx/0/0)(内部网络或本地主机)
安全关联生存期:4608000 千字节/3600 秒
PFS:DH 组 2

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

答案1

您还需要让远程端在其连接端启用 NAT-T。

IPSec 通信对整个数据包进行加密签名 - 对 IP 报头的任何更改都将使该签名无效。NAT 通过重写源和/或目标 IP 字段来工作;在连接的任一端使用 NAT 意味着每个数据包的报头在传输过程中都会发生变化;离开网络的数据包的源会发生变化192.168,而入站数据包的目标也会发生变化。

NAT-T 通过将整个 ESP 数据包封装在新的 UDP 数据包中来抵消此影响。UDP 数据包可以安全地修改其标头以满足任何 NAT 设备的要求,而 ESP 有效负载将使整个行程保持不变。远程节点需要启用此功能以保护他们发送给您的数据包免受 NAT 修改的影响,并且您俩都需要允许 UDP 端口 4500。

这可能不是 VPN 隧道配置中的唯一问题,但它肯定可以解释格式错误的有效负载消息;尝试一下,如果出现任何其他问题,请告诉我们!

答案2

在 ISAKMP 的前两条消息中检测到对 NAT 遍历的支持。如果两个设备都支持 NAT-T,则在 ISKAMP 主模式消息三和四中执行 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)。最后一条消息用于检查响应者的活跃度。这只是为了通知响应者先前的消息已被正确接收和处理。

相关内容