gpt4 book ai didi

linux - 如何在加密之前在 tcpdump 中查看传出的 ESP 数据包

转载 作者:IT王子 更新时间:2023-10-29 00:12:47 24 4
gpt4 key购买 nike

我有一个在两个终端系统之间有 Ipsec 隧道的设置。当我在传出接口(interface)(例如 eth0)上捕获数据包时,我只能看到从我的系统发出的加密 ESP 数据包。我必须去查看接收端以查看实际传输的内容,即在接收端我可以看到解密后的数据包。接收方发送的 ack 也类似。它在 linux 内核中实际上是如何工作的?有没有办法在加密之前在 tcpdump 中查看发送方的数据包?

最佳答案

你的问题有3个问题:

  1. 如何在加密前在 tcpdump 中查看传出的 ESP 数据包?
  2. 它在 linux 内核中实际是如何工作的?
  3. 有没有办法在加密之前在 tcpdump 中查看发送方的数据包?

第三个问题的答案是

这取决于您的内核和您使用的实现。如果您在 2.4 内核中使用 KLIPS 作为任何 *swan 解决方案的一部分,那么是。

否则,如果您使用的是使用 KAME/*BSD 模型的 2.6 内核

不,除非您更改 Ipssec 或 iptables 配置,以便将数据包发送到另一个未加密的接口(interface),然后将未加密的数据包转发到将在其上加密的接口(interface)。

第一个问题的答案是更改您的 iptables 配置和 IPSec 配置。

  1. 将数据从一个接口(interface)发送到同一主机上的另一个接口(interface)。
  2. 设置从第二个接口(interface)到目的地的数据转发
  3. 在安全策略中配置第二个接口(interface)的ip地址,在第二个接口(interface)上创建隧道。

这种方式可以在加密数据之前在加密接口(interface)上进行 tcpdump 而无需更改任何内容。

对于 KLIPS 和 2.4 内核,它就像使用 -i 开关将 tcpdump 中的接口(interface)指定为 ipsec0 一样简单。

查看未加密数据的其他选项包括使用带有 -E 标志和相关参数 (see man page) 的 tcpdump,它在数据加密后解密数据,或者使用 tcpdump 捕获加密数据,然后在 Wireshark 中解密(更多有关 Wireshark 中 IPSec 的 ESP 解密的信息位于 here )。

或者,您可以在源代码中使用 printk 或 printk_times 将检测放置到 xfrmesp_input .

关于第二个问题,有几张图片解释了它如何在高层次上工作,包括解释 Solaris 实现作为 Oracle's System Administration Guide: IP Services 的一部分的图片。和 Linux's Foundation Network Flow through the kernel diagram .

另见以下 reference .基本上,无论是使用 setkey 的手动配置还是使用用户空间中的 IKE 守护进程的自动配置,都会将信息传递给 XFRM,然后 XFRM 在数据包到达 netfilter 预路由之前对其进行转换。

参见 here有关 KLIPS 和 KAME 历史的更多信息。

关于linux - 如何在加密之前在 tcpdump 中查看传出的 ESP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com