【问题标题】:IPsec in Linux kernel - how to figure out what's going onLinux内核中的IPsec - 如何弄清楚发生了什么
【发布时间】:2011-10-28 22:11:44
【问题描述】:

我正在为微控制器编写 IPsec 实现,我想使用运行 Debian Lenny 的标准 Linux 机器对其进行测试。两个设备都应在隧道模式下使用 IPsec ESP 保护它们之间的通信。使用setkey 手动设置密钥。处理 IPsec 数据包不涉及(或至少应该不涉及)用户空间程序。现在我想看看我创建的数据包是如何被 Linux 内核处理的。要查看原始数据包,我使用tcpdump 捕获它们并使用wireshark 分析它们。

  • 获取有关 IPsec 处理的调试信息的最佳方法是什么?
  • 如何判断数据包是否被内核接受?
  • 如何查看丢包的原因?

【问题讨论】:

    标签: linux-kernel ipsec


    【解决方案1】:

    您可以检测 XFRM(或者可能是 ipv4/esp.c)内核代码,以便在正确的位置打印出调试消息。

    例如,在net/ipv4/esp.c 中有一个函数esp_input() 有一些错误情况,但你会看到最有趣的东西在xfrm/*.c 代码中。

    也就是说,我没有遇到与 Linux 互操作自定义 IPSec 的问题。遵循 43xx 规范并通过wireshark 验证数据包是否正确输出似乎做得很好。如果您遇到问题并且不想检测内核,那么您可以设置 iptables 规则并计算每个点的(各种类型)数据包的数量。

    最后,请确保您确实添加了安全策略 (SP) 以及安全关联 (SA) 并正确设置了防火墙规则。

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多