IPV6_PROTECTION_LEVEL
IPV6_PROTECTION_LEVEL套接字選項可讓開發人員對IPv6套接字設定存取限制。 這類限制可讓在私人 LAN 上執行的應用程式,針對外部攻擊簡單且強固地強化本身。 IPV6_PROTECTION_LEVEL套接字選項會擴大或縮小接聽套接字的範圍、在適當情況下從公用和私人使用者啟用不受限制的存取,或視需要限制對相同網站的存取。
IPV6_PROTECTION_LEVEL目前有三個定義的保護層級。
保護層級 | 描述 |
---|---|
PROTECTION_LEVEL_UNRESTRICTED |
由設計用來跨因特網運作的應用程式使用,包括利用 Windows 內建的 IPv6 NAT 周遊功能的應用程式(例如 Teredo)。 這些應用程式可能會略過 IPv4 防火牆,因此必須強化應用程式,以防範導向已開啟埠的因特網攻擊。 |
PROTECTION_LEVEL_EDGERESTRICTED |
由設計用來跨因特網運作的應用程式使用。 此設定不允許使用 Windows Teredo 實作的 NAT 周遊。 這些應用程式可能會略過 IPv4 防火牆,因此必須強化應用程式,以防範導向已開啟埠的因特網攻擊。 |
PROTECTION_LEVEL_RESTRICTED |
由未實作因特網案例的內部網路應用程式使用。 這些應用程式通常不會針對因特網樣式的攻擊進行測試或強化。 此設定會將接收的流量限制為僅限連結本機。 |
下列程式代碼範例提供每個定義的值:
#define PROTECTION_LEVEL_UNRESTRICTED 10 /* for peer-to-peer apps */
#define PROTECTION_LEVEL_EDGERESTRICTED 20 /* Same as unrestricted, except for Teredo */
#define PROTECTION_LEVEL_RESTRICTED 30 /* for Intranet apps */
這些值互斥,而且無法在單一 setsockopt 函數調用中合併。 保留此套接字選項的其他值。 這些保護層級僅適用於連入連線。 設定此套接字選項不會影響輸出封包或連線。
在 Windows 7 和 Windows Server 2008 R2 上,未指定IPV6_PROTECTION_LEVEL的預設值,且 PROTECTION_LEVEL_DEFAULT 定義為 -1,這是IPV6_PROTECTION_LEVEL的不合法值。
在 Windows Vista 和 Windows Server 2008 上,IPV6_PROTECTION_LEVEL的預設值是 PROTECTION_LEVEL_UNRESTRICTED,PROTECTION_LEVEL_DEFAULT 定義為 -1,這是IPV6_PROTECTION_LEVEL的不合法值。
在 Windows Server 2003 和 Windows XP 上,IPV6_PROTECTION_LEVEL的預設值為 PROTECTION_LEVEL_EDGERESTRICTED,PROTECTION_LEVEL_DEFAULT 定義為 PROTECTION_LEVEL_EDGERESTRICTED。
注意
IPV6_PROTECTION_LEVEL套接字選項應該在套接字系結之前設定。 否則,系結 和 setockopt 呼叫之間收到的封包會符合 PROTECTION_LEVEL_EDGERESTRICTED,而且可能會傳遞至應用程式。
下表描述將每個保護層級套用至接聽套接字的效果。
保護層級
允許的連入流量
相同網站
外部
NAT 周遊 (Teredo)
PROTECTION_LEVEL_RESTRICTED
是的
不
不
PROTECTION_LEVEL_EDGERESTRICTED
是的
是的
不
PROTECTION_LEVEL_UNRESTRICTED
是的
是的
是的
在上表中,[相同網站 ] 數據行 是下列各項的組合:
- 連結本機位址
- 網站本機位址
- 已知屬於相同網站的全域位址(符合網站前置資料表)
在 Windows 7 和 Windows Server 2008 R2 上,未指定IPV6_PROTECTION_LEVEL的預設值。 如果本機計算機上沒有安裝邊緣周遊感知防火牆軟體(Windows 防火牆已停用,或安裝其他忽略 Teredo 流量的防火牆),則只有在您將 [IPV6_PROTECTION_LEVEL 套接字] 選項設定為 PROTECTION_LEVEL_UNRESTRICTED時,才會收到 Teredo 流量。 不過,Windows 防火牆或任何邊緣周遊感知防火牆原則可能會根據防火牆的原則設定來忽略此選項。 將這個套接字選項設定為 PROTECTION_LEVEL_UNRESTRICTED,應用程式會傳達其明確意圖,以接收本機計算機上所安裝主機防火牆的邊緣周遊流量。 因此,如果已安裝邊緣周游感知主機防火牆,則會有接受封包的最終決定。 根據預設,沒有任何套接字選項集:
- o 如果在本機計算機上啟用 Windows 防火牆(或已安裝另一個邊緣周遊感知主機防火牆),則會觀察到它強制執行的任何動作。 一般邊緣周遊感知主機防火牆預設會封鎖 Teredo 流量。 因此,應用程式會觀察預設值,如同 PROTECTION_LEVEL_EDGERESTRICTED。
- o 如果未啟用 Windows 防火牆,而且本機系統上未安裝其他邊緣周遊感知主機防火牆,則預設值會 PROTECTION_LEVEL_EDGERESTRICTED。
在 Windows Vista 和 Windows Server 2008 上,IPV6_PROTECTION_LEVEL的預設值為 PROTECTION_LEVEL_UNRESTRICTED。 但有效值取決於是否啟用 Windows 防火牆。 Windows 防火牆是邊緣周遊感知(Teredo 感知),無論針對IPV6_PROTECTION_LEVEL設定的值為何,如果 PROTECTION_LEVEL_UNRESTRICTEDIPV6_PROTECTION_LEVEL,則會忽略 。 因此,有效值取決於防火牆原則。 停用 Windows 防火牆,且本機電腦上未安裝其他邊緣周遊感知防火牆時,IPV6_PROTECTION_LEVEL的預設值會 PROTECTION_LEVEL_UNRESTRICTED。
在 Windows Server 2003 和 Windows XP 上,IPV6_PROTECTION_LEVEL的預設值為 PROTECTION_LEVEL_EDGERESTRICTED。 除非您已將 [IPV6_PROTECTION_LEVEL套接字] 選項設定為 PROTECTION_LEVEL_UNRESTRICTED,否則不會收到任何 Teredo 流量。
視IPV6_PROTECTION_LEVEL而定,需要來自因特網的未經請求流量的應用程式可能無法接收未經請求的流量。 不過,在 Windows Teredo 介面上接收要求流量時,不需要這些需求。 如需與 Teredo 互動的詳細資訊,請參閱 透過 Teredo 接收請求的流量。
由於設定的保護等級而拒絕連入封包或連線時,會處理拒絕,就好像沒有應用程式在該套接字上接聽一樣。
注意
IPV6_PROTECTION_LEVEL套接字選項不一定會對IPv6套接字設定存取限制,也不一定使用 Windows Teredo 以外的某些方法限制 NAT 周遊,甚至使用其他廠商的另一個 Teredo 實作。
相關主題
-
在 Teredo 接獲請求的交通