MAC層抓包

MAC層抓包

我想實作一個類似於 MACsec 的安全解決方案,在中間網路節點(例如基於 Linux 的交換器)捕獲整個資料包(包括 MAC 標頭),對資料包執行一些處理,然後將其發送到中間節點。

請您向我指出可以幫助我做到這一點的適當資源。我目前正在研究需要修改網卡驅動程式的解決方案。還有比這更簡單的解決方案嗎?其他人如何實現MACsec?

請注意,我不想簡單地使用 pcap 和類似方法來捕獲資料包。我正在尋找的是能夠在資料包通過中間節點之前捕獲它,篡改它並將其發送給預期的接收者。

謝謝

答案1

如果您想在 Linux 核心收到資料包時對其進行分析,您將必須編寫核心驅動程序,甚至可能修改核心本身。當介面接收到資料時,處理立即開始。任何註冊為接收下一層的內容都會呼叫其處理程序。由於 MAC 標頭不需要太多處理,因此 IP 層處理程序是第一個開始執行大量處理的處理程序。

如果您想要操作 MAC 標頭並執行自己的操作,則必須在收到 MAC 標頭之後、IP 處理之前立即插入自己。或者你可以寫一個驅動程式作為虛擬網卡。這樣您就可以按照您認為合適的方式處理資料。虛擬網路卡將像真實網路卡一樣看到所有資料。這可能是您最好的選擇,因為您不想開始處理核心並僅為您自己的專案重建它。

我的回答在這裡提供了一些學習 Linux 核心網路的好連結。我還建議閱讀 Rami Rosen 的《Linux 核心網路:實現與理論》。深入了解網路堆疊的絕佳資源。

MACSec 在某個時候將在核心中實作。例如,IPSec 將其安全性策略保留在內核中,而用戶態守護程序則追蹤隧道連線。因此,不幸的是,我相信您必須編寫某種級別的內核程式碼才能執行您想要的操作。

答案2

不久前,我想玩一下資料包,如第 2 層、第 3 層或更高層。我發現了一個很好的工具,基於 python 來做到這一點。這個工具調用 斯卡皮
您可以捕獲和操作資料包。或者您可以根據需要建立基於資料包的過濾器。

相關內容