網路連線的用戶端和伺服器經常沒有直接且開放的通訊路徑。 封包會透過端點機器和網路上的中繼計算機進行篩選、路由、分析及轉換。 網路位址轉換 (NAT) 和防火牆是可以參與網路通訊的中繼應用程式常見範例。
Windows Communication Foundation (WCF) 傳輸和訊息交換模式 (MEP) 會因 NAT 和防火牆的存在而有不同的反應。 本主題描述 NAT 和防火牆如何在一般網路拓撲中運作。 針對WCF傳輸和MEP的特定組合提供建議,可協助讓應用程式對網路上的NAT和防火牆更強固。
NAT 如何影響通訊
已建立 NAT,讓數部計算機共用單一外部 IP 位址。 埠重新映射 NAT 將連接的內部 IP 位址及埠映射到具有新埠號碼的外部 IP 位址。 新的埠號碼可讓 NAT 將傳回流量與原始通訊相互關聯。 許多家庭用戶現在都有一個僅限內部可路由的 IP 位址,並依賴 NAT 來提供封包的全網路路由。
NAT 不提供安全性界限。 不過,常見的 NAT 設定可防止內部電腦直接尋址。 這兩者都會保護內部機器免受某些不必要的連線,並使得難以寫入伺服器應用程式,而伺服器應用程式必須以異步方式將數據傳回用戶端。 NAT 會重寫封包中的位址,使其看起來像連線源自NAT 機器。 這會導致伺服器在嘗試開啟連線回到客戶端時失敗。 如果伺服器使用用戶端的感知位址,它就會失敗,因為用戶端位址無法公開路由。 如果伺服器使用 NAT 位址,它就無法連線,因為電腦上沒有應用程式正在接聽。
某些 NAT 支援轉送規則的設定,以允許外部電腦連線到特定的內部電腦。 設定轉送規則的指示會因不同 NAT 而有所不同,因此不建議大多數應用程式要求終端使用者變更其 NAT 設定。 許多終端用戶無法或不想變更特定應用程式的 NAT 設定。
防火牆如何影響通訊
防火牆是軟體或硬體裝置,會將規則套用至通過的流量,以決定是否允許或拒絕通過。 您可以設定防火牆來檢查傳入和/或連出的流量。 防火牆會在網路邊緣或端點主機上提供網路的安全性界限。 企業用戶傳統上會將其伺服器保留在防火牆後方,以防止惡意攻擊。 自從 Windows XP 中引進個人防火牆後,防火牆背後的家庭用戶數量也大幅增加。 這表明連線的一端或兩端很可能有防火牆在檢查封包。
防火牆在檢查封包的複雜度和功能方面有很大的差異。 簡單的防火牆會根據封包中的來源和目的地位址和埠套用規則。 智慧型防火牆也可以檢查封包的內容,以做出決策。 這些防火牆具有許多不同的組態,而且通常用於特殊化應用程式。
主使用者防火牆的常見設定是禁止連入連線,除非先前已對該計算機進行連出連線。 商務使用者防火牆的常見設定是禁止所有埠上的連入連線,但特定識別的群組除外。 例如,防火牆會禁止埠 80 和 443 以外的所有埠連線,以提供 HTTP 和 HTTPS 服務。 主企業使用者都有受控防火牆,可讓計算機上的受信任用戶或程序變更防火牆設定。 受控防火牆對於沒有公司原則控制網路使用狀況的家庭用戶來說更為常見。
使用 Teredo
Teredo 是一種 IPv6 過渡技術,使得位於 NAT 後面的機器可以直接被尋址。 Teredo 依賴使用可公開且全域路由傳送的伺服器來公告潛在的連線。 Teredo 伺服器會提供應用程式用戶端和伺服器一個常見的會議點,讓他們可以交換連線資訊。 然後,機器會要求暫時的 Teredo 位址,封包會透過現有的網路進行隧道。 要在 WCF 中使用 Teredo 支援,需要在操作系統中啟用 IPv6 和 Teredo 支援。 Windows XP 和更新版本的作系統支援 Teredo。 Windows Vista 和更新版本的作系統默認支援 IPv6,而且只需要使用者啟用 Teredo。 Windows XP SP2 和 Windows Server 2003 需要使用者同時啟用 IPv6 和 Teredo。 如需詳細資訊,請參閱 Teredo 概觀。
選擇傳輸和訊息交換模式
選取傳輸工具和 MEP 是一個三步驟的過程:
分析端點機器的可尋址性。 企業伺服器通常具有直接的可尋址性,而終端使用者通常會讓 NAT 封鎖其可尋址性。 如果兩個端點都位於 NAT 後方,例如在用戶之間的對等網路情境中,那麼您可能需要使用類似 Teredo 的技術來提供可到達性。
分析連接電腦的通訊協定和埠限制。 企業伺服器通常位於封鎖許多埠的強式防火牆後方。 不過,埠 80 經常會開啟以允許 HTTP 流量,而埠 443 則會開啟以允許 HTTPS 流量。 終端使用者不太可能有埠限制,但可能位於只允許連出連線的防火牆後方。 某些防火牆允許端點上的應用程式管理,以選擇性地開啟連線。
計算網路可尋址性和埠限制所允許的傳輸方式和端點管理協議 (MEP)。
常見的用戶端-伺服器應用程式拓撲是將用戶端置於沒有 Teredo 的 NAT 後方,並配置僅允許輸出流量的防火牆,伺服器則具備強大的防火牆並能直接尋址。 在此案例中,具有雙工 MEP 的 TCP 傳輸和具有要求-回復 MEP 的 HTTP 傳輸運作良好。 常見的點對點應用程式拓撲是在 NAT 和防火牆後方各有一個端點。 在此案例中,以及在網路拓撲未知的情況下,請考慮下列建議:
請勿使用雙重傳輸。 雙重傳輸會開啟更多連線,以減少成功連線的機會。
支援透過原始連線建立後端通道。 使用雙工 TCP 等後端通道會開啟較少的連線,這會增加成功連線的機會。
使用可接觸的服務來註冊端點或中繼流量。 使用可連線到的連線服務,例如 Teredo 伺服器,在網路拓撲受到限制或未知時,可大幅增加成功連線的機會。
下表會檢查單向、請求-回復和雙向的 MEP,以及 WCF 中的標準 TCP、具有 Teredo 的 TCP、標準 HTTP 傳輸和雙重 HTTP 傳輸。
可尋址性 | 伺服器直接存取 | 伺服器直接連線與 NAT 穿越 | 伺服器 NAT | 伺服器 NAT 與 NAT 穿透 |
---|---|---|---|---|
用戶端直接 | 任何傳輸和機電工程 (MEP) | 任何傳輸和機電工程 (MEP) | 不支援。 | 不支援。 |
使用 NAT 穿透的客戶端直接連接 | 任何傳輸和 MEP。 | 任何傳輸和 MEP。 | 不支援。 | 使用 Teredo 和任何 MEP 的 TCP。 Windows Vista 具有全機器組態選項,可支援 Teredo 的 HTTP。 |
用戶端 NAT | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 不支援。 | 不支援。 |
具有 NAT 周游的用戶端 NAT | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 除了雙重 HTTP 和任何 MEP, 雙工 MEP 需要 TCP 傳輸。 雙重 TCP 傳輸需要 Teredo。 Windows Vista 具有全機器組態選項,可支援 Teredo 的 HTTP。 | 不支援。 | 使用 Teredo 和任何 MEP 的 TCP。 Windows Vista 具有全機器組態選項,可支援 Teredo 的 HTTP。 |
防火牆限制 | 伺服器開啟 | 具有受管理防火牆的伺服器 | 具有僅限 HTTP 防火牆的伺服器 | 具有僅限輸出防火牆的伺服器 |
---|---|---|---|---|
用戶端開啟 | 任何傳輸和 MEP。 | 任何傳輸和 MEP。 | 任何 HTTP 傳輸和 MEP(訊息交換模式)。 | 不支援。 |
具有受管理防火牆的用戶端 | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 任何 HTTP 傳輸和 MEP(訊息交換模式)。 | 不支援。 |
具有僅限 HTTP 防火牆的用戶端 | 任何 HTTP 傳輸和 MEP(訊息交換模式)。 | 任何 HTTP 傳輸和 MEP(訊息交換模式)。 | 任何 HTTP 傳輸和 MEP(訊息交換模式)。 | 不支援。 |
具有僅限輸出防火牆的用戶端 | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 任何非雙重運輸和 MEP。 雙工 MEP 需要 TCP 傳輸。 | 任何 HTTP 傳輸和任何非雙向 MEP。 | 不支援。 |