阶段 #1 ( IKE ) 成功,没有任何问题(在目标主机上验证)。
然而,阶段 #2 ( IPSec ) 在某些时候是错误的(显然是由于 localhost 上的错误配置)。
这应该是仅IPSec连接。我在Debian上使用OpenSwan。错误日志内容如下(远程端点的实际 IP 地址已被修改):
pluto[30868]:“x”#2:启动快速模式 PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK {using isakmp#1 msgid:5ece82ee proposal=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]
冥王星[30868]:“x” #3:他们:222.222.222.222<222.222.222.222>[+S=C]===10.196 .0.0 /17
冥王星 [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 哈希有效负载的下一个有效负载类型具有未知值:97 X pluto[30868]:“x” #3:数据包
pluto中格式错误的有效负载[30868]:| IV 后有效载荷畸形
我在NAT后面,这一切都来自wlan2。以下是详细信息:
默认通过 192.168.1.254 dev wlan2 proto static
169.254.0.0/16 dev wlan2 scope link metric 1000
192.168.1.0/24 dev wlan2 proto kernel scope link src 192.168.1.76 metric 2
ipsec 验证的输出:
检查您的系统以查看 IPsec 是否已正确安装和启动:
版本检查和 ipsec on-path [OK]
Linux Openswan U2.6.37/K3.2.0-24-generic (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel支持 [N/A]
NETKEY:测试 XFRM 相关的 proc 值 [OK]
[OK]
[OK]
检查 pluto 是否正在运行 [OK]
Pluto 在 udp 500 上侦听 IKE [OK]
Pluto 在 udp 4500 上侦听 NAT-T [好的]
找到两个或多个接口,检查 IP 转发 [OK]
检查 NAT 和 MASQUERADEing [OK]
检查 'ip' 命令 [OK]
检查 /bin/sh 不是 /bin/dash [WARNING]
检查 'iptables' 命令 [OK ] ]
机会加密支持[已禁用]
这是我运行ipsec auto --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 payload [XAUTH]
003“x”#1:NAT-Traversal:使用 RFC 3947(NAT-Traversal)的结果:我是 NATed
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: initiate
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 --status的更多调试信息:
000 使用内核接口:netkey
000 interface lo/lo ::1
000 interface wlan2/wlan2 192.168.1.76
000 interface wlan2/wlan2 192.168.1.76
000 %myid = (none)
000 debug raw+crypt+parsing+emitting+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 统计数据 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;未路由;eroute 所有者:#0
000 "x": myip=unset; hisip=未设置;
000“x”:ike_life:28800s;ipsec_life: 28800s; rekey_margin:540s;rekey_fuzz:100%;keyingtries: 3
000 "x": policy: PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; 优先级: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
来自/var/log/auth.log的更多调试信息 ( plutodebug="all" ) :
冥王星[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: peer proposed: 0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
pluto[26439]: | 从 x
pluto [26439] 开始的 find_client_connection: | 寻找 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
pluto[26439] 的具体检查:| match_id a=222.222.222.222
冥王星[26439]: | b=222.222.222.222
冥王星[26439]: | 结果与
pluto[26439] 匹配: | trusted_ca 用 a=(empty) b=(empty) 调用
冥王星[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) 不在 our_net (0.0.0.0/0)
pluto[26439]: | fc_try 以无 [0]
pluto [26439] 结束: | fc_try x 没有给出
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”
我相应地在ipsec.conf中启用了NAT遍历。以下是与相关连接相关的设置:
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
local ident1 (addr/mask/prot/port): (10.196.0.0/255.255.128.0/0/0)
local ident2 (addr/mask/prot/port) : (10.241.0.0/255.255.0.0/0/0)
remote ident (addr/mask/prot/port): (xxxx/xxxx/0/0) (internal network or localhost)
Security association lifetime: 4608000 千字节/3600 秒
PFS:DH组2
那么,最后,我遇到的问题的原因可能是什么?谢谢你。
您还需要让远程端在其连接端启用 NAT-T。
IPSec 通信对整个数据包进行加密签名——对 IP 标头的任何更改都会使该签名无效。NAT 通过重写源和/或目标 IP 字段来工作;在连接的两端都有 NAT 意味着每个数据包在传输过程中都会更改标头;源在离开
192.168
网络的数据包上发生变化,目标在入站数据包上发生变化。NAT-T 通过将整个 ESP 数据包封装在一个新的 UDP 数据包中来抵消这种情况。UDP 数据包可以安全地将其标头修改为满足任何 NAT 设备的要求,而 ESP 有效负载将使整个行程保持不变。远程节点将需要启用此功能以保护他们发送给您的数据包免受 NAT 修改,并且您都需要允许 UDP 端口 4500。
这可能不是 VPN 隧道配置中的唯一问题,但肯定可以解释格式错误的有效负载消息;试一试,如果出现任何其他问题,请告诉我们!
在 ISAKMP 的前两条消息中检测到对 NAT 穿越的支持。如果两个设备都支持 NAT-T,则在 ISKAMP 主模式消息三和四中执行 NAT-发现。因为你是过去的 ISAKMP 交换。我认为这不是 NAT-T 的问题。
如这里所见:
从 IPsec 日志来看,它似乎是 *Swan 版本或启动器网关设备中的错误。
入站 SA 已安装。请注意,在快速模式消息 2 的末尾,隧道已准备就绪,可供使用。响应者正在等待最终确认(消息 3)。最后一条消息是检查响应者的活跃度。这只是为了通知响应者之前的消息已被正确接收和处理。