共用方式為


IPV6_PROTECTION_LEVEL

IPV6_PROTECTION_LEVEL通訊端選項可讓開發人員對 IPv6 通訊端進行存取限制。 這類限制可以讓應用程式在私人 LAN 上執行,簡便又穩當地強化應用程式對外部攻擊的抵禦。 IPV6_PROTECTION_LEVEL通訊端選項會擴大或縮小接聽通訊端的範圍,視需要啟用來自公用和私人使用者的不受限制存取,或視需要限制對相同網站的存取。

IPV6_PROTECTION_LEVEL目前有三個定義的保護層級。

保護等級 描述
PROTECTION_LEVEL_UNRESTRICTED
由設計為跨網際網路運作的應用程式使用,包括利用 Windows (Teredo 內建 IPv6 NAT 周遊功能的應用程式,例如) 。 這些應用程式可能會略過 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     */

這些值互斥,而且無法在單一 setockopt 函式呼叫中合併。 保留此通訊端選項的其他值。 這些保護層級僅適用于連入連線。 設定此通訊端選項不會影響輸出封包或連線。

在 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_EDGERESTRICTEDPROTECTION_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 防火牆。 無論IPV6_PROTECTION_LEVEL設定的值為何,Windows 防火牆都是邊緣周遊感知 (Teredo 感知) ,如果 IPV6_PROTECTION_LEVEL是PROTECTION_LEVEL_UNRESTRICTED,就會忽略。 因此,有效值取決於防火牆原則。 停用 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 實作。

 

getsockopt

透過 Teredo 接收要求流量

setsockopt