使用 Proxy 連線追蹤
Windows 8 和更新版本的 Windows 支援 Proxy 連線追蹤。
此 WFP 功能可協助追蹤從連線的初始重新導向到目的地最終連線的重新導向「記錄」。 WFP 也允許擴充程序驅動程式重新導向連線。
代理連線追蹤
由於存在多個代理(例如,由不同的獨立軟體供應商開發),一方用來與最終目的地通訊的連線可能會被第二方重新導向;而原始一方也可以將這個新的連線再次重新導向。 如果沒有連線追蹤,原始連線可能無法到達其最終目的地,因為它卡在無限 Proxy 迴圈中。
支援連線追蹤的數據欄位識別元新增專案包括:
FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Proxy 連線之原始應用程式的完整路徑。 如果應用程式尚未進行 Proxy 處理,則此路徑與xxx_ALE_APP_ID相同。
FWPS_FIELD_Xxx_PACKAGE_ID
套件標識碼是識別相關聯 AppContainer 程式的安全性識別碼 (SID)。
重新導向連線
圖說驅動程式會呼叫 FwpsRedirectHandleCreate0 函式,以建立可用來重新導向 TCP 連線的控制代碼。
本節包含下列主題:
使用重新導向句柄
查詢重新導向狀態
使用重新導向功能
在 ALE 連線重新導向呼叫可以將連線重新導向至本機程序之前,必須先使用 FwpsRedirectHandleCreate0 函式取得重新導向句柄,並將句柄放在 FWPS_CONNECT_REQUEST0 結構中。 註解會修改 ALE 連接轉向層之 classifyFn 中的結構。
FWPS_CONNECT_REQUEST0 結構包含以下用於重新導向的成員:
術語 | 描述 |
---|---|
localRedirectHandle |
由呼叫 FwpsRedirectHandleCreate0 函數所建立的插入驅動程式的重新導向控制代碼。 |
localRedirectContext |
由呼叫 ExAllocatePoolWithTag 函式配置的回呼驅動程式內容區域。 |
localRedirectContextSize |
提供的標記內容區域的大小,以位元組為單位。 |
在註標驅動程式使用重新導向句柄完成之後,它必須呼叫 FwpsRedirectHandleDestroy0 函式來終結句柄。
查詢重新導向狀態
轉接驅動程式會呼叫 FwpsQueryConnectionRedirectState0 函數,以取得連線的重新導向狀態。 FWPS_CONNECTION_REDIRECT_STATE 列舉是呼叫 FwpsQueryConnectionRedirectState0 函式的傳回類型。
如果重新導向狀態是 FWPS_CONNECTION_NOT_REDIRECTED,ALE_CONNECT_REDIRECT 呼叫可以繼續代理連線。
如果重新導向狀態為FWPS_CONNECTION_REDIRECTED_BY_SELF,ALE_CONNECT_REDIRECT呼叫點應該會傳回FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE。
如果重新導向狀態是 FWPS_CONNECTION_REDIRECTED_BY_OTHER,若 ALE_CONNECT_REDIRECT 呼叫不信任其他檢查器的結果,可以代理該連接。
如果重新導向狀態為FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF,即使無法接受其他偵測器的結果,ALE_CONNECT_REDIRECT呼叫項仍不得執行重新導向。 在此情況下,它必須允許或封鎖連線(在 ALE_AUTH_CONNECT 層)。