我正在編寫一些程式碼來創建帶有用戶憑證的“半公共 Wi-Fi 網路”。
我說半公開是因為它仍然是一個私人 Wi-Fi 網路(所有流量都已加密),但它在 Wi-Fi 介面中設定為公開,以便無需 Wi-Fi 密碼即可連接。
在我的伺服器/路由器端,我需要攔截每個資料包,檢查其權限,然後重新分派或丟棄它。為此,我使用了 IOCTL 並設置了一個(“中間路由器”)tap 接口,該接口捕獲每個子網路上的資料包並根據需要轉發或丟棄它們。這非常有效:一個子網路上的資料包如果不經過我的程式碼處理就無法傳送到另一個子網路。但我無法阻止應用程式向網路發送未經授權和未加密的資料包(無需在 iptables 中設定規則以將除 API 本身之外的所有內容重定向到我的 Tap 介面?)。
但我認為這種方式似乎是一種「hack」。我想做的是讓核心呼叫我的程式碼來執行路由步驟。