下圖爲 TCP/IP 協議驅動程序 (Tcpip.sys) 及其用於在 Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1

 下圖爲 TCP/IP 協議驅動程序 (Tcpip.sys) 及其用於在 Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1 中處理 IP 數據包的相關組件的簡要示意圖。

下列組件可處理 IP 數據包:

IP 轉發 爲發送或轉發的數據包確定下一躍點接口和地址。

TCP/IP 篩選 允許按 IP 協議、TCP 端口或 UDP 端口,指定可爲傳入的本地主機流量(發往主機的數據包)所接受的流量類型。可以在“網絡連接”文件夾中,從 Internet 協議 (TCP/IP) 組件高級屬性的“選項”選項卡,配置 TCP/IP 篩選。

篩選器掛鉤驅動程序 該 Windows 組件可使用篩選器掛鉤 API,篩選傳入和傳出的 IP 數據包。在運行 Windows Server 2003 的計算機上,篩選器掛鉤驅動程序爲 Ipfltdrv.sys,屬於“路由和遠程訪問”的一個組件。啓用後,“路由和遠程訪問”允許用戶使用路由和遠程訪問管理單元,對每個接口配置單獨的入站和出站 IP 數據包篩選器。Ipfltdrv.sys 會同時檢查本地主機和中轉 IP 流量(不發往主機的數據包)。

防火牆掛鉤驅動程序 該 Windows 組件可使用防火牆掛鉤 API,檢查傳入和傳出的數據包。在運行 Windows XP 的計算機上,防火牆掛鉤驅動程序爲 Ipnat.sys,由 Internet 連接共享和 Windows 防火牆雙方共享。Internet 連接共享是一種基礎網絡地址轉換器 (NAT)。Windows 防火牆是一種基於主機的狀態防火牆。Ipnat.sys 可同時檢查本地主機和中轉 IP 流量。

IPsec組件(Ipsec.sys) 是 IPsec 在 Windows 中的實現,可對 IP 流量提供加密保護。Ipsec.sys 可同時檢查本地主機和中轉 IP 流量,並可允許、阻止或保護流量。

數據包處理路徑

下面幾節介紹了針對以下流量的具體的數據包處理路徑:

源流量 由基於 Windows 的發送主機發起。

目標流量 達到最終的基於 Windows 的目標主機。

中轉流量 由基於 Windows 的 IP 路由器轉發。

這裏只討論 Windows Server 2003 或 Windows XP 所附帶的組件,不涉及 Windows 套接字分層服務提供程序或 NDIS 中間微型端口驅動程序。

源流量

源流量的數據包處理路徑如下圖所示。

Figure 2


1.

IP 數據包形成後,Tcpip.sys 就會將其傳遞給防火牆掛鉤驅動程序 (lpnat.sys) 進行處理。

Windows 防火牆檢查該流量是否屬於所要阻止的特定的 Internet 控制消息協議 (ICMP) 消息類型。如果 ICMP 消息被阻止,Windows 防火牆就將丟棄該數據包。

Windows 防火牆檢查該流量是否屬於點對點隧道協議 (PPTP) 隧道維護流量。如果屬於的話,Windows 防火牆將分析該流量,確定用於識別特定 PPTP 隧道的通用路由封裝 (GRE) 調用 ID,從而允許 PPTP 隧道的基於 GRE 的傳入流量。

如果需要,Windows 防火牆會在例外列表中添加一個動態項目,來允許響應流量。

處理完後,lpnat.sys 會將該 IP 數據包傳回給 Tcpip.sys,而後者會使用 IP 轉發組件,確定下一躍點 IP 地址和接口。

2.

Tcpip.sys 將數據包傳遞給篩選器掛鉤驅動程序 (Ipfltdrv.sys) 進行處理。

Ipfltdrv.sys 根據下一躍點接口,將該數據包與已配置的出站 IP 數據包篩選器進行對比。

若出站 IP 數據包篩選器不允許該數據包,Ipfltdrv.sys 就會在不給出提示的情況下,丟棄該數據包。若出站 IP 數據包篩選器允許該數據包,Ipfltdrv.sys 就會將該數據包傳回給 Tcpip.sys。

3.

Tcpip.sys 將該數據包傳遞給 Ipsec.sys 進行處理。

Ipsec.sys 根據 IPsec 篩選器組,決定是否允許、阻止或保護該數據包。若允許的話,Ipsec.sys 會在不修改該數據包的情況下,將其發回給 Tcpip.sys。若阻止的話,Ipsec.sys 會在不發出任何提示的情況下,丟棄該數據包。若要進行保護的話,Ipsec.sys 會在將數據包傳回給 Tcpip.sys 之前,對其添加適當的 IPsec保護。Tcpip.sys 隨後會通過下一躍點接口,將該數據包發送到下一躍點 IP 地址。

目標流量

目標流量的數據包處理路徑如下圖所示。

Figure 3


1.

接收到 IP 數據包後,Tcpip.sys 會將其傳遞給 Ipsec.sys 進行處理。

若數據包帶有 IPsec 保護(指示驗證頭 [AH] 或封裝式安全措施負載 [ESP] 的 IP 協議字段值),將對其進行處理並加以移除。若對計算機應用了“Windows 防火牆:允許已驗證的 IPSec 跳過”組策略設置,Ipsec.sys 將設置一個與該數據包相關聯的 IPsec Bypass 標記。Ipsec.sys 將結果數據包傳回給 Tcpip.sys。

若數據包不帶有 IPsec 保護,Ipsec.sys 就會根據 IPsec 篩選器組,決定是否允許、阻止或保護該數據包。若允許的話,Ipsec.sys 會在不修改該數據包的情況下,將其發回給 Tcpip.sys。若數據包被阻止或需要保護,Ipsec.sys 就會在不發出任何提示的情況下,丟棄該數據包。

2.

Tcpip.sys 將該數據包傳遞給 Ipfltdrv.sys 進行處理。

Ipfltdrv.sys 根據接收數據包的接口,將該數據包與已配置的入站 IP 數據包篩選器進行對比。

若入站 IP 數據包篩選器不允許該數據包,Ipfltdrv.sys 就會在不給出提示的情況下,丟棄該數據包。 若入站 IP 數據包篩選器允許該數據包,Ipfltdrv.sys 就會將該數據包傳回給 Tcpip.sys。

3.

Tcpip.sys 將該數據包傳遞給 lpnat.sys 進行處理。

若啓用了 Internet 連接共享或 NAT/基本防火牆,並且接收數據包的接口是連接到 Internet 的公共接口,lpnat.sys 就會將該數據包與其 NAT 轉換表進行對比。若找到了匹配項,就將轉換該 IP 數據包,並將結果數據包視爲源流量。

Windows 防火牆檢查與該數據包相關聯的 IPsec Bypass 標記。若設置了 IPsec Bypass 標記,Windows 防火牆就會將該數據包傳回給 Tcpip.sys。

若未設置 IPsec Bypass 標記,Windows 防火牆就會將該數據包與其例外列表進行對比。若數據包與某個例外匹配,lpnat.sys 就會將該 IP 數據包傳回給 Tcpip.sys。若不匹配,lpnat.sys 會在不發出提示的情況下,丟棄該 IP 數據包。

4.

Tcpip.sys 將 IP 數據包與已配置的 TCP/IP 篩選允許的那組數據包進行對比。

若 TCP/IP 篩選不允許該數據包,Tcpip.sys 將在不發出提示的情況下,丟棄該數據包。若 TCP/IP 篩選允許該數據包,Tcpip.sys 將繼續對其進行處理,並最終將該數據包有效負載傳遞給 TCP、UDP 或其它上層協議。

中轉流量

中轉流量的前半部分路徑如下圖所示。

Figure 4

1.

接收到 IP 數據包後,Tcpip.sys 會將其傳遞給 Ipfltdrv.sys 進行處理。

Ipfltdrv.sys 根據接收 IP 數據包的接口,將該數據包與已配置的入站 IP 數據包篩選器進行對比。

若入站 IP 數據包篩選器不允許該數據包,Ipfltdrv.sys 就會在不給出提示的情況下,丟棄該 IP 數據包。若入站 IP 數據包篩選器允許該數據包,Ipfltdrv.sys 就會將該 IP 數據包傳回給 Tcpip.sys。

Tcpip.sys 將數據包傳遞給 IP 轉發組件,由後者確定用於轉發該數據包的下一躍點接口和地址。

中轉流量的後半部分路徑如下圖所示。

See full-size

2.

Tcpip.sys 將該數據包傳遞給 lpnat.sys。

若啓用了 Internet 連接共享或 NAT/基本防火牆,並且接收數據包的接口是連接到 Intranet 的專用接口,lpnat.sys就會將該數據包與其 NAT 轉換表進行對比。若 Internet 連接共享或 NAT/基本防火牆找到了匹配項,將轉換該 IP 數據包,並將結果數據包當作源流量。若 Internet 連接共享或 NAT/基本防火牆未找到匹配項,將創建一個新的 NAT 轉換表項,轉換 IP 數據包,並將結果數據包當作源流量。

若未啓用 Internet 連接共享,lpnat.sys就會將 IP 數據包傳回給 Tcpip.sys。

3.

Tcpip.sys 將該數據包傳遞給 Ipfltdrv.sys。

Ipfltdrv.sys 根據下一躍點接口,將該數據包與已配置的出站 IP 數據包篩選器進行對比。

若出站 IP 數據包篩選器不允許該數據包,Ipfltdrv.sys 就會在不給出提示的情況下,丟棄該 IP 數據包。若出站 IP 數據包篩選器允許該數據包,Ipfltdrv.sys 就會將該 IP 數據包傳回給 Tcpip.sys。

4.

Tcpip.sys 將該數據包傳遞給 Ipsec.sys 進行處理。

Ipsec.sys 根據 IPsec 篩選器組,決定是否允許、阻止或保護該數據包。若允許的話,Ipsec.sys 會在不修改該數據包的情況下,將其發回給 Tcpip.sys。 若阻止的話,Ipsec.sys 會在不發出任何提示的情況下,丟棄該數據包。若要進行保護的話,Ipsec.sys 會在將數據包傳回給 Tcpip.sys 之前,對其添加適當的 IPsec保護。

Tcpip.sys 隨後會通過下一躍點接口,將該 IP 數據包發送到下一躍點地址。

對於運行 Windows XP SP2 或 Windows Server 2003 SP1 並採取常規配置的客戶端或服務器計算機(不充當路由器或 NAT,並禁用了 TCP/IP 篩選),源流量的數據包處理路徑涉及以下組件:

1.

Windows 防火牆

2.

IPsec

對於上述採用常規配置的基於 Windows 的計算機來說,目標流量的數據包處理路徑涉及以下組件:

1.

IPsec

2.

Windows 防火牆

若使用了 IPsec,並啓用了 Windows 防火牆,那麼可能需要配置這兩個組件,以允許想要的流量。譬如,要是您正在配置一臺 Web 服務器,並使用 IPsec 保護髮往該服務器的 Web 流量,就必須配置以下項目:

1.

一個 IPsec 規則(要求發往和發自該服務器的 IP 地址和 TCP 端口 80 的安全性)。

2.

一個 TCP 端口 80 的 Windows 防火牆例外。

該 IPsec 規則可確保發往 Web 服務器服務的流量受到保護。該 Windows 防火牆例外可確保 Windows 防火牆不會丟棄未經請求的傳入請求,來通過 TCP 端口 80 創建到 Web 服務器的連接。由於 IPsec 和 Windows 防火牆都作爲單獨的組件處理 IP 數據包,因此必須同時配置這兩個組件。要是不想讓 Windows 防火牆處理受 IPsec 保護的數據包,請配置“Windows 防火牆:允許已驗證的 IPSec 跳過”組策略設置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章