Linux kernel Linux内核中的IPsec-如何找出';发生什么事了
我正在为微控制器编写一个IPsec实现,我想使用运行Debian Lenny的标准Linux设备对其进行测试。这两个设备应在隧道模式下使用IPsec ESP保护它们之间的通信。使用Linux kernel Linux内核中的IPsec-如何找出';发生什么事了,linux-kernel,ipsec,Linux Kernel,Ipsec,我正在为微控制器编写一个IPsec实现,我想使用运行Debian Lenny的标准Linux设备对其进行测试。这两个设备应在隧道模式下使用IPsec ESP保护它们之间的通信。使用setkey手动设置按键。在处理IPsec数据包时没有(或者至少应该没有)用户空间程序。现在我想看看Linux内核如何处理我创建的数据包。要查看原始数据包,我使用tcpdump捕获它们,并使用wireshark分析它们 获取有关IPsec处理的调试信息的最佳方法是什么 我如何判断内核是否接受了数据包 如何查看数据包被
setkey
手动设置按键。在处理IPsec数据包时没有(或者至少应该没有)用户空间程序。现在我想看看Linux内核如何处理我创建的数据包。要查看原始数据包,我使用tcpdump
捕获它们,并使用wireshark
分析它们
- 获取有关IPsec处理的调试信息的最佳方法是什么
- 我如何判断内核是否接受了数据包
- 如何查看数据包被丢弃的原因
ipv4/esp.c
)内核代码,以便在正确的位置打印调试消息
例如,在net/ipv4/esp.c
中存在一个函数esp_input()
,该函数有一些错误情况,但您将看到最有趣的内容是xfrm/*.c
代码
也就是说,我在与Linux互操作自定义IPSec时没有遇到问题。遵循43xx规范并通过wireshark验证数据包是否正确输出似乎做得很好。如果您遇到问题并且不想对内核进行测试,那么您可以设置iptables规则并计算每个点上(各种类型)的数据包数量
最后,确保您实际添加了安全策略(SP)和安全关联(SA),并正确设置了防火墙规则