改善 VPN 用戶體驗

本頁為網路營運商提供指南,以確保消費者和企業虛擬私人網路 (VPN) 應用程式在其網路中提供良好的最終用戶體驗。 Android 為開發人員提供了VpnManager類別來建立 VPN 解決方案,消費者和企業使用這些解決方案來加密其通訊或將其路由到不同的網路。

我們建議網路營運商遵循以下準則:

  • 支援網路上的 IPv6 封裝安全負載 (ESP) 協定(下一個標頭 50)資料包,確保此流量具有與用戶資料封包協定 (UDP) 或傳輸控制協定 (TCP) 連線相當的效能。應允許 ESP 會話入站到設備,或設定非常高的逾時,並以線路速率轉送。
  • 對連接埠 4500 上的 UDP連線設定網路位址轉換 (NAT) 和狀態防火牆逾時至少 600 秒,以確保 VPN 解決方案能夠保持可靠的連接,而不會產生過多的電力成本。

支援IPv6 ESP協定(Next Header 50)資料包

封裝安全負載 (ESP) 是一種封包格式,定義為 Internet 協定安全性 (IPSec) 協定集的一部分,用於加密和驗證 VPN 解決方案中的資料包。 Android 作業系統在其內建 VPN 解決方案中實現了此標準安全協定。

在支援IPv6 的網路上,ESP 封包直接在下一標頭欄位為50 的IPv6 封包中攜帶。如果網路無法正確支援這些類型的封包,則可能會導致旨在使用此功能的VPN 解決方案缺乏連接。協定無需進一步封裝資料包。由於防火牆配置,網路可能會丟棄這些資料包。或者,ESP 封包可能會到達網路上的慢速路徑,與 TCP 或 UDP 連線相比,吞吐量效能會嚴重下降。

網際網路工程任務小組 (IETF) 建議允許 IPsec 透過消費者網際網路存取服務所使用的防火牆。例如,請參閱RFC 6092 第 3.2.4 節。可以安全地允許 ESP 封包雙向通過防火牆,因為如果裝置收到不屬於現有安全關聯的 ESP 封包,裝置就會丟棄該封包。因此,裝置不需要發送保活資料包來維持 VPN 連接,從而節省了電池壽命。我們建議網路始終允許 ESP 封包傳送至設備,或僅在長時間不活動(例如 30 分鐘)後才使 ESP 會話逾時。

我們建議網路營運商在其網路上支援 ESP 協定封包(下一個標頭為 50 的 IPv6 封包),並以線速在硬體中轉送這些封包。這可確保 VPN 解決方案不會遇到連線問題,並提供與 UDP 或 TCP 連線相當的效能。

設定足夠的 NAT 和狀態防火牆逾時

為了保持連線可靠性,VPN 解決方案需要維持與提供出站和入站連線的 VPN 伺服器的長期連線(例如,接收傳入的推播通知、聊天訊息和音訊/視訊通話)。大多數 IPsec VPN 應用程式使用封裝在 IPv4 UDP 封包中的 ESP,目標連接埠為 4500,如RFC 3948中所述。

為了維持這種連接,設備需要定期向伺服器發送資料包。這些資料包的傳送頻率必須高於網路業者規定的 NAT 和防火牆逾時。頻繁的保持活動對客戶端來說是耗電的,並且對電池壽命有重大影響。即使設備處於空閒狀態,它們也會在網路上產生大量訊號流量。

我們建議營運商將 NAT 和狀態防火牆超時提高到足夠高,以避免電池影響。 IPsec UDP 封裝(連接埠 4500)的建議逾時為 600 秒或更長。

在行動網路中,UDP NAT 逾時通常保持較低,因為 IPv4 位址稀缺導致連接埠重複使用率較高。但是,建立 VPN 後,設備網路不需要支援長期 TCP 連接,例如用於傳遞入站通知的連接。因此,與 VPN 未運行時相比,VPN 運行時網路需要支援的長期連線數量相同或更少。