软件 ipsec 对接 h3c 防火墙 ipsec 对上了一半

对上了一半是指:

  1. 防火墙显示连接已建立,软件 ipsec 显示连接无法建立。这是一半
  2. 软件 ipsec 显示500端口 psk认证成功,但是自适应到 4500端口,认证失败。这是一半

端口和4500端口校验一个成功,一个失败,这两个阶段有什么区别?

bash 复制代码
root@csy-wx-pm-os01-eis-node03:/etc/swanctl#  swanctl --initiate --child net-net  mars-moon
[IKE] initiating IKE_SA mars-moon[16] to 10.22.255.89
[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
[NET] sending packet: from 10.251.174.200[500] to 10.22.255.89[500] (400 bytes)
[NET] received packet: from 10.22.255.89[500] to 10.251.174.200[500] (368 bytes)
[ENC] parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1536
[IKE] faking NAT situation to enforce UDP encapsulation
[IKE] authentication of '10.251.174.200' (myself) with pre-shared key
[IKE] establishing CHILD_SA net-net{23}
[ENC] generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) IDr AUTH SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(ADD_6_ADDR) N(ADD_6_ADDR) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
[NET] sending packet: from 10.251.174.200[4500] to 10.22.255.89[4500] (400 bytes)
[NET] received packet: from 10.22.255.89[4500] to 10.251.174.200[4500] (144 bytes)
[ENC] parsed IKE_AUTH response 1 [ N(NO_PROP) IDr AUTH N(MSG_ID_SYN_SUP) ]
[IKE] authentication of '10.22.255.89' with pre-shared key successful
[IKE] IKE_SA mars-moon[16] established between 10.251.174.200[10.251.174.200]...10.22.255.89[10.22.255.89]
[IKE] scheduling rekeying in 84491s
[IKE] maximum IKE_SA lifetime 86291s
[IKE] received NO_PROPOSAL_CHOSEN notify, no CHILD_SA built
[IKE] failed to establish CHILD_SA, keeping IKE_SA ipsec 

500 端口和4500端口校验一个成功,一个失败,这两个阶段有什么区别?

在 IKE (Internet Key Exchange) 的过程中,使用 500 端口和 4500 端口来处理不同的阶段和内容。下面我们将分别分析这两个阶段的作用和它们之间的区别。

1. IKE 过程概览

  • 500 端口:用于 IKEv1 和 IKEv2 中的初始密钥交换阶段。主要用于加密安全关联 (SA) 的建立。
  • 4500 端口:用于 NAT(网络地址转换) 环境中的UDP封装,以便在 NAT 设备后面进行通信。其作用主要是在 IKEv2 的后续阶段和 CHILD_SA 的建立中。

2. 500 端口的作用

  • 步骤 :在使用 500 端口时,主要处理初步的 IKE SA 初始化请求和响应。这包括:
    • 交换 SA(安全关联)信息。
    • 进行密钥交换。
    • 交换 Nonce(随机数)。
  • 发送和接收数据包 :在你的日志中,sending packet: from 10.251.174.200[500] to 10.22.255.89[500] 和相应的接收响应是在此阶段完成的。
  • 认证:认证通常会在此阶段进行,包括使用预共享密钥(PSK)来验证身份。

3. 4500 端口的作用

  • 步骤:在使用 4500 端口时,主要处理 NAT 情况下的 IKE 消息。这是因为某些 NAT 设备可能会丢失 UDP 500 端口的报文,因此 IKEv2 使用 UDP 4500 来确保可达性。
  • 发送和接收数据包 :例如,sending packet: from 10.251.174.200[4500] to 10.22.255.89[4500] 和接收到对应响应时使用的是 4500 端口。
  • 子安全关联的创建 :在这一步,你尝试建立 CHILD_SA,但根据日志显示 N(NO_PROP),表明双方没有达成一致,无法建立子 SA。

4. 成功与失败的原因

  • 认证成功 :authentication of '10.22.255.89' with pre-shared key successful 表明初始的身份验证成功,并且 IKE SA 在 500 端口的建立是成功的。
  • CHILD_SA 失败 :在使用 4500 端口时,尽管 IKE SA 成功,但在尝试建立 CHILD_SA 时,出现了 NO_PROPOSAL_CHOSEN 的提示。这说明客户端和服务器没有找到匹配的提案,因此子安全关联没有建立。

结论与检查

  1. 检查提案配置:

    • 确保双方的 IKE 和 CHILD_SA ESP 提案(包括加密算法、完整性算法和 DH 组)配置一致。
  2. 流量选择器:

    • 检查 Traffic Selectors(TSi 和 TSr)是否匹配,这将在 CHILD_SA 的构建中起到关键作用。
  3. 协议支持:

    • 确认双方对 NAT 的支持情况,特别是在涉及多个 NAT 设备的网络环境中。

通过确保 IKE 和 CHILD_SA 提案的一致性、流量选择器的正确性,你将能够解决 CHILD_SA 创建失败的问题。

相关推荐
蜗牛互联网6 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
Zhou1411367 小时前
SpringBoot_02_自动配置原理
java·spring boot·后端
子兮曰8 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端
IT_陈寒8 小时前
我花3小时debug,就因为JavaScript这个隐式转换坑
前端·人工智能·后端
程序猿阿越9 小时前
containerd如何拉取镜像
后端·kubernetes·源码阅读
一条小小yu9 小时前
为什么使用springboot
java·spring boot·后端
香瓜子rd9 小时前
MySQL InnoDB 并发控制核心原理:事务、隔离级别、MVCC 与锁机制
数据库·后端
RISCV_Explorer9 小时前
RISC-V RVV向量编程模型机制解析——vsetvl配置、掩码与尾元素策略及长度无关编程
后端·risc-v
对象存储与RustFS9 小时前
升级 RustFS 二进制不停机:一条一条换,留一条退路
后端·rust·开源
hasty9 小时前
限制写了却没生效:OpenTelemetry Go 的 Unicode 截断边界
开发语言·后端·golang