2011-10-28 32 views
3

我正在爲一個微控制器編寫一個IPsec實現,我想用一個運行Debian Lenny的標準Linux機器來測試它。這兩種設備都應該在隧道模式下使用IPsec ESP來確保它們之間的通信。鑰匙使用setkey手動設置。在處理IPsec數據包時沒有(或者至少不應該是)用戶空間程序。現在我想看看我的創建數據包是如何被Linux內核處理的。要查看原始數據包,我使用tcpdump捕獲它們,並使用wireshark分析它們。Linux內核中的IPsec - 如何弄清楚發生了什麼

  • 獲取有關IPsec處理的調試信息的最佳方法是什麼?
  • 如何判斷數據包是否被內核接受?
  • 如何查看數據包丟失的原因?

回答

2

您可以測試XFRM(或者可能是ipv4/esp.c)內核代碼以在正確的位置打印調試消息。

例如,在net/ipv4/esp.c中有一個函數esp_input(),它有一些錯誤情況,但您會看到最有趣的東西在xfrm/*.c代碼中。

這就是說,我沒有將定製的IPSec與Linux互操作的問題。遵循43xx規範並通過wireshark驗證數據包是否正確無誤。如果你有問題而不想測試內核,那麼你可以設置iptables規則並計算每個點上(各種類型)數據包的數量。

最後,請確定您確實已經添加了安全策略(SP)以及安全關聯(SA)並正確設置了防火牆規則。

相關問題