ip xfrm monitor

ip xfrm 只有三个命令:

ip xfrm

Usage: ip xfrm XFRM-OBJECT { COMMAND | help } where XFRM-OBJECT := state | policy | monitor

我这里有一个 strongswan 的环境

bash 复制代码
# ss -tunlp | grep cha
udp   UNCONN 2560   0                                0.0.0.0:68         0.0.0.0:*    users:(("charon-systemd",pid=580419,fd=22))
udp   UNCONN 0      0                                0.0.0.0:500        0.0.0.0:*    users:(("charon-systemd",pid=580419,fd=15))
udp   UNCONN 0      0                                0.0.0.0:4500       0.0.0.0:*    users:(("charon-systemd",pid=580419,fd=16))
udp   UNCONN 0      0                                   [::]:500           [::]:*    users:(("charon-systemd",pid=580419,fd=13))
udp   UNCONN 0      0                                   [::]:4500          [::]:*    users:(("charon-systemd",pid=580419,fd=14))


# ip xfrm policy
src 10.22.166.0/24 dst 2.2.168.0/24
	dir out priority 375423 ptype main
	tmpl src 10.251.174.200 dst 10.22.255.89
		proto esp spi 0x7b50acd6 reqid 1 mode tunnel
src 2.2.168.0/24 dst 10.22.166.0/24
	dir fwd priority 375423 ptype main
	tmpl src 10.22.255.89 dst 10.251.174.200
		proto esp reqid 1 mode tunnel
src 2.2.168.0/24 dst 10.22.166.0/24
	dir in priority 375423 ptype main
	tmpl src 10.22.255.89 dst 10.251.174.200
		proto esp reqid 1 mode tunnel
src 10.251.137.0/24 dst 2.2.168.0/24
	dir out priority 375423 ptype main
	tmpl src 10.251.174.200 dst 10.22.255.89
		proto esp spi 0x58ab6718 reqid 2 mode tunnel
src 2.2.168.0/24 dst 10.251.137.0/24
	dir fwd priority 375423 ptype main
	tmpl src 10.22.255.89 dst 10.251.174.200
		proto esp reqid 2 mode tunnel
src 2.2.168.0/24 dst 10.251.137.0/24
	dir in priority 375423 ptype main
	tmpl src 10.22.255.89 dst 10.251.174.200
		proto esp reqid 2 mode tunnel
src 0.0.0.0/0 dst 0.0.0.0/0
	socket in priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket out priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket in priority 0 ptype main
src 0.0.0.0/0 dst 0.0.0.0/0
	socket out priority 0 ptype main
src ::/0 dst ::/0
	socket in priority 0 ptype main
src ::/0 dst ::/0
	socket out priority 0 ptype main
src ::/0 dst ::/0
	socket in priority 0 ptype main
src ::/0 dst ::/0
	socket out priority 0 ptype main
        
        
# ip xfrm state
src 10.251.174.200 dst 10.22.255.89
	proto esp spi 0x7b50acd6 reqid 1 mode tunnel
	replay-window 0 flag af-unspec
	auth-trunc hmac(sha256) 0xf6d3113242b5dbfe2e05148d82e415d702880fb356944d140959ae2b33638a44 128
	enc cbc(aes) 0x3f532990b6a5cf065cee93171d4177b2b272a10b20f56c9de1cb40d6e8dd6e6e
	encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
	anti-replay context: seq 0x0, oseq 0x1, bitmap 0x00000000
src 10.22.255.89 dst 10.251.174.200
	proto esp spi 0xc02c9b0d reqid 1 mode tunnel
	replay-window 32 flag af-unspec
	auth-trunc hmac(sha256) 0x95b250d026b20b912fc27df276aa0792d8bc7952b876962ca3682566e5fec2ee 128
	enc cbc(aes) 0xf310438c0eb1911a22885422c942aa35fb567a1eb3c11f00ae8ee818e827931b
	encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
	anti-replay context: seq 0x1, oseq 0x0, bitmap 0x00000001
src 10.251.174.200 dst 10.22.255.89
	proto esp spi 0x58ab6718 reqid 2 mode tunnel
	replay-window 0 flag af-unspec
	auth-trunc hmac(sha256) 0x229c267b29bd73c4e45027b6d3b50fa9df4ee516c10cb200373254ca5a21c21e 128
	enc cbc(aes) 0x868d22558232840d4e4986f2614d33fc74e1436a0b8bc4b9e5c899ab4a527a6b
	encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
	anti-replay context: seq 0x0, oseq 0x9, bitmap 0x00000000
src 10.22.255.89 dst 10.251.174.200
	proto esp spi 0xc9e59a30 reqid 2 mode tunnel
	replay-window 32 flag af-unspec
	auth-trunc hmac(sha256) 0x60ce287bfbb7db9014101ee4a97f4ca66274e0abeadeba76ea61300fcec9c402 128
	enc cbc(aes) 0xa8679801cd6bbda22f88404ba37ca6b8f5a09c0ff6d9babd7c1446116cd97f04
	encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
	anti-replay context: seq 0x8, oseq 0x0, bitmap 0x000000ff
        

观察 ipsec 封包前,经过 ip xfrm

bash 复制代码
# ping -c 3 2.2.168.254
PING 2.2.168.254 (2.2.168.254): 56 data bytes
64 bytes from 2.2.168.254: icmp_seq=0 ttl=255 time=0.637 ms
64 bytes from 2.2.168.254: icmp_seq=1 ttl=255 time=0.550 ms
64 bytes from 2.2.168.254: icmp_seq=2 ttl=255 time=0.305 ms
--- 2.2.168.254 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.305/0.497/0.637/0.141 ms


# ip xfrm monitor
Async event  (0x10)  replay update
	src 10.251.174.200 dst 10.22.255.89  reqid 0x2 protocol esp  SPI 0x58ab6718
Async event  (0x10)  replay update
	src 10.22.255.89 dst 10.251.174.200  reqid 0x2 protocol esp  SPI 0xc9e59a30
Async event  (0x20)  timer expired
	src 10.22.255.89 dst 10.251.174.200  reqid 0x2 protocol esp  SPI 0xc9e59a30
Async event  (0x20)  timer expired
	src 10.251.174.200 dst 10.22.255.89  reqid 0x2 protocol esp  SPI 0x58ab6718
Async event  (0x20)  timer expired
	src 10.22.255.89 dst 10.251.174.200  reqid 0x2 protocol esp  SPI 0xc9e59a30
Async event  (0x20)  timer expired
	src 10.251.174.200 dst 10.22.255.89  reqid 0x2 protocol esp  SPI 0x58ab6718

提供的输出来自 ip xfrm monitor 命令,这是用来监视 Linux IPsec 内核中与 XFRM(IPsec 相关的协议)相关的事件的工具。让我逐条解释这些输出。

1. 数据流解释

Async event (0x10) replay update
plaintext 复制代码
Async event  (0x10)  replay update
	src 10.251.174.200 dst 10.22.255.89  reqid 0x2 protocol esp  SPI 0x58ab6718
  • Async event (0x10) : 表示这是一个异步事件,事件类型是 0x10,用于处理重放攻击的相关更新。
  • src 10.251.174.200: 来源地址,对应 VPN 网络的一侧。
  • dst 10.22.255.89: 目的地址,表示流量要发送到的 IP。
  • reqid 0x2: 请求 ID,用于标识安全关联(SA)上下文,帮助跟踪流量。
  • protocol esp : 使用的协议,为 ESP(Encapsulating Security Payload)协议,它负责在数据包中增加加密和认证信息。
  • SPI 0x58ab6718: 安全参数索引(Security Parameter Index),用来唯一标识此 ESP 关联的安全通道。

重放更新是指网络收到了新的数据包,这些数据包必须与原始的数据包重放保护机制进行比对,以确认它们不是旧的、可能被攻击者重播的数据包。


Async event (0x20) timer expired
plaintext 复制代码
Async event  (0x20)  timer expired
	src 10.22.255.89 dst 10.251.174.200  reqid 0x2 protocol esp  SPI 0xc9e59a30
  • Async event (0x20) : 表示这是一个超时事件,类型是 0x20,通常与安全关联的生存期(Lifespan)相关。
  • src 10.22.255.89: 来源地址,通常指远端网关。
  • dst 10.251.174.200: 目的地址,表示流量的到达目标。
  • reqid 0x2: 请求 ID,同样用于标识此安全关联(SA)。
  • protocol esp: 使用的 ESP 协议。
  • SPI 0xc9e59a30: 安全参数索引,唯一标识此通道。

超时事件表示该 SA 可能经历了最大生命期(LIFETIME)或重传次数达到上限,因此被系统标记为超时。此时,内核可能会清除该 SA 或尝试重新建立新的 SA,以维持 VPN 的连接。

多次的超时事件

您在输出中看到多个超时事件是常见现象,表明在不同时间段,多个连接的超时事件被触发。这可能因为:

  • 并发的流量。
  • 确保 SA 是多路复用的。
  • 由于 network conditions, the SA may require frequent reconnections.

小结

整体来看,您看到的输出反映了 VPN 安全关联的状态,通过重放保护机制和动力更新方式来保持连接的安全性和有效性。这些信息对于诊断 VPN 性能和连接稳定性具有重要意义。能够捕获这些事件使网络管理员能及时调整与管理 IPsec 的配置,确保在发生重播攻击或超时的场景下,连接的可靠性。不幸的是,超时可能造成连接中断,您可能需要定期观察该情况,并在必要时调整 SA 的配置。

相关推荐
uhakadotcom1 小时前
Python 量化计算入门:基础库和实用案例
后端·算法·面试
小萌新上大分1 小时前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
uhakadotcom2 小时前
使用Python获取Google Trends数据:2025年详细指南
后端·面试·github
uhakadotcom2 小时前
使用 Python 与 Google Cloud Bigtable 进行交互
后端·面试·github
直视太阳3 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
追逐时光者3 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
后端·.net
灼华十一3 小时前
Golang系列 - 内存对齐
开发语言·后端·golang
兰亭序咖啡3 小时前
学透Spring Boot — 009. Spring Boot的四种 Http 客户端
java·spring boot·后端
Asthenia04123 小时前
深入解析Pandas索引机制:离散选择与聚合选择的差异及常见误区
后端