改善 VPN 使用者體驗

本頁提供網路營運商適用的指南,協助確保消費者和企業虛擬私人網路 (VPN) 應用程式,在自家網路中提供良好的使用者體驗。Android 提供 VpnManager 類別,供開發人員建立 VPN 解決方案,消費者和企業可使用這類解決方案加密通訊內容,或將通訊內容轉送至其他網路。

建議網路業者遵循下列規範:

  • 支援網路上的 IPv6 封裝安全酬載 (ESP) 通訊協定 (下一個標頭 50) 封包,確保這類流量的效能與使用者資料包通訊協定 (UDP) 或傳輸控制通訊協定 (TCP) 連線相當。應允許 ESP 工作階段傳入裝置,或將逾時時間設為非常長,並以線路速率轉送。
  • 設定網路位址轉譯 (NAT) 和具狀態防火牆逾時,確保通訊埠 4500 上的 UDP 連線至少有 600 秒,讓 VPN 解決方案維持可靠連線,同時避免產生過多的電力費用。

支援 IPv6 ESP 通訊協定 (下一個標頭 50) 封包

封裝安全酬載 (ESP) 是封包格式,定義為網際網路通訊協定安全性 (IPSec) 通訊協定集的一部分,用於加密及驗證 VPN 解決方案中的封包。Android 作業系統會在內建 VPN 解決方案中實作這項標準安全防護通訊協定。

在支援 IPv6 的網路上,ESP 封包會直接在 IPv6 封包中傳輸,且「下一個標頭」欄位為 50。如果網路無法正確支援這類封包,可能會導致 VPN 解決方案無法連線,因為這類解決方案會嘗試使用這個通訊協定,但不會進一步封裝封包。網路可能會因防火牆設定而捨棄這些封包。或者,ESP 封包可能會在網路上遇到緩慢路徑,導致輸送量效能嚴重下降,遠不如 TCP 或 UDP 連線。

網際網路工程任務組 (IETF) 建議允許 IPsec 透過消費者網際網路存取服務使用的防火牆。例如,請參閱 RFC 6092 的 3.2.4 節。ESP 封包可安全地雙向通過防火牆,因為如果裝置收到不屬於現有安全關聯的 ESP 封包,就會捨棄該封包。因此裝置不需要傳送存活封包來維持 VPN 連線,可節省電力。建議網路一律允許 ESP 封包傳送至裝置,或僅在長時間閒置後 (例如 30 分鐘) 讓 ESP 工作階段逾時。

建議網路業者在自家網路中支援 ESP 協定封包 (Next Header 為 50 的 IPv6 封包),並以線路速率在硬體中轉送這些封包。確保 VPN 解決方案不會發生連線問題,並提供與 UDP 或 TCP 連線相當的效能。

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

為維持連線穩定性,VPN 解決方案必須與 VPN 伺服器保持長期連線,以提供輸出和輸入連線 (例如接收推播通知、即時通訊訊息,以及音訊或視訊通話)。如 RFC 3948 所述,大多數 IPsec VPN 應用程式會使用封裝在 IPv4 UDP 封包中的 ESP,目的地通訊埠為 4500。

為維持連線,裝置必須定期將封包傳送至伺服器。這些封包的傳送頻率必須高於網路業者設定的 NAT 和防火牆逾時時間。頻繁的連線測試會耗用用戶端大量電力,大幅影響電池續航力。即使裝置處於閒置狀態,也會在網路上產生大量信號流量。

建議業者將 NAT 和具狀態防火牆逾時時間調高,以免影響電池續航力。建議 IPsec UDP 封裝 (連接埠 4500) 的逾時時間為 600 秒以上。

在行動網路中,UDP NAT 超時通常會保持在較低值,因為 IPv4 位址稀少,導致通訊埠重複使用率偏高。不過,建立 VPN 後,裝置網路不需要支援長期 TCP 連線,例如用於傳送傳入通知的連線。因此,與未執行 VPN 時相比,執行 VPN 時網路需要支援的長期連線數量相同或較少。