通訊協定轉送功能會使用地區轉送規則,將特定通訊協定的封包傳送至單一虛擬機器 (VM) 執行個體。轉送規則可以擁有內部或外部 IP 位址。通訊協定轉送會在傳遞封包的同時,保留轉送規則的目的地 IP 位址。轉送規則會參照稱為「目標執行個體」的物件,而該物件會參照單一 VM 執行個體。
您可以使用通訊協定轉送功能執行以下操作:
- 提供 IP 位址,可透過變更目標執行個體物件參照的 VM,或變更轉送規則參照的目標執行個體,從一個執行個體移至另一個執行個體。
- 根據通訊協定和通訊埠,將封包轉送至不同的 VM。只要通訊埠和通訊協定資訊不重複,兩個轉送規則就能共用相同的 IP 位址。
- (僅限外部通訊協定轉送) 為特定網路介面定義其他外部 IP 位址。與網路介面搭配外部 IPv4 位址的 1:1 NAT 設定不同,通訊協定轉送會保留轉送規則的目的地 IP 位址。
- 傳送來源 IP 位址與轉送規則 IP 位址相符的封包。
通訊協定轉送與直通負載平衡器的差異如下:
- 沒有負載平衡。目標執行個體只會將封包分發至單一 VM。
- 不執行健康狀態檢查。與後端服務不同,目標執行個體不支援健康狀態檢查。您必須使用其他方式,確保必要的軟體在目標執行個體參照的 VM 上執行且運作正常。
架構
通訊協定轉送功能會使用地區性外部或地區性內部轉送規則,以及區域目標執行個體物件。目標執行個體和其參照的 VM 必須位於轉送規則所在地區的區域。
外部通訊協定轉送。您可以將多個轉送規則設定為指向單一目標執行個體,即可透過一個 VM 執行個體使用多個外部 IP 位址。當您想從一個 VM 執行個體但透過不同外部 IP 位址或不同通訊協定和通訊埠提供資料時,即可使用此方法。在設定 SSL 虛擬託管時,這項功能尤其實用。外部通訊協定轉送可處理來自 IPv6 用戶端的連線。
外部通訊協定轉送支援以下通訊協定:AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP 和 UDP
下圖為外部通訊協定轉送架構的範例。���要瞭解如何設定這項功能,請參閱「設定外部通訊協定轉送」一文。
外部通訊協定轉送架構 內部通訊協定轉送作業內部通訊協定轉送會使用區域內部 IPv4 位址 (來自子網路的主要 IPv4 位址範圍) 或區域內部 IPv6 位址 (來自子網路的 IPv6 位址範圍)。
內部通訊協定轉送支援 TCP 和 UDP 通訊協定。
下圖為內部通訊協定轉送架構的範例。如要瞭解如何設定這項功能,請參閱「設定內部通訊協定轉送功能」。
內部通訊協定轉送架構 透過內部通訊協定轉送功能,您可以變更轉送規則的目標,在目標執行個體和直通負載平衡器的後端服務之間切換。詳情請參閱「在目標執行個體和後端服務之間切換」。
轉送規則
每個轉送規則都會比對 IP 位址、通訊協定,以及選用的通訊埠資訊 (如果已指定,且通訊協定支援通訊埠)。當轉送規則參照目標執行個體時, Google Cloud 會將與轉送規則的位址、通訊協定和通訊埠規格相符的封包,路由至目標執行個體參照的 VM。
內部通訊協定轉送:
IPv4 位址支援:子網路主要 IPv4 範圍中的區域內部 IPv4 位址 (預留靜態或臨時)。
IPv6 位址支援:轉送規則會參照子網路
/64
內部 IPv6 位址範圍的/96
範圍 IP 位址。子網路必須是下列任一項:- 雙重堆疊 (IPv4 和 IPv6) 子網路
- 單一堆疊 (僅限 IPv6) 子網路
子網路的
ipv6-access-type
設定必須設為INTERNAL
。內部 IPv6 位址僅適用於進階級。IPv6 位址範圍可以是已保留的靜態位址或臨時位址。
通訊協定選項:
TCP
(預設) 和UDP
。通訊埠規格選項:列出最多五個連續或非連續的通訊埠,或所有通訊埠。
外部通訊協定轉送:
IPv4 位址支援:轉送規則參照單一區域外部 IPv4 位址。地區性外部 IPv4 位址來自各個 Google Cloud 地區專屬的集區。IP 位址可以是已保留的靜態位址或臨時位址。
IPv6 位址支援:轉送規則會參照子網路
/64
外部 IPv6 位址範圍的/96
範圍 IP 位址。子網路必須是下列任一項:- 雙重堆疊 (IPv4 和 IPv6) 子網路
- 單一堆疊 (僅限 IPv6) 子網路
子網路
ipv6-access-type
必須設為EXTERNAL
。外部 IPv6 位址僅適用於進階級。IPv6 位址範圍可以是已保留的靜態位址或臨時位址。
通訊協定選項:
AH
、ESP
、ICMP
、SCTP
、TCP
(預設)、UDP
和L3_DEFAULT
:L3_DEFAULT
轉送規則通訊協定選項會轉送所有 AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP 和 UDP 流量。針對 TCP、UDP 和 SCTP 通訊協定,L3_DEFAULT
也會轉送所有通訊埠。- IPv6 轉送規則不支援
ICMP
通訊協定設定,因為 ICMP 通訊協定僅支援 IPv4 位址。如要提供 ICMPv6 和 GRE 流量,請將轉送規則通訊協定設為L3_DEFAULT
。
通訊埠規格選項:連續的通訊埠範圍或所有通訊埠。
使用轉送規則時,請注意下列事項:
就通訊協定���送而���,���送規則只能參照單一目標執行個體。
對於內部直通式網路負載平衡器和後端服務型外部直通式網路負載平衡器,轉送規則只能參照單一後端服務。
您可以切換內部通訊協定轉送和內部直通式網路負載平衡器,而無須刪除並重新建立轉送規則。如要切換外部通訊協定轉送和以後端服務為基礎的外部直通式網路負載平衡器,您必須刪除並重新建立轉送規則。詳情請參閱「在目標執行個體和後端服務之間切換」。
只有具有通訊埠概念的通訊協定才能指定通訊埠資訊:
TCP
、UDP
或SCTP
。如果您想要分段的 UDP 封包,請執行下列任一操作,確保所有片段 (包括沒有通訊埠資訊的片段) 都會傳送至執行個體:
- 使用單一
L3_DEFAULT
轉送規則,或 - 使用單一
UDP
轉送規則,即可轉送所有通訊埠。
- 使用單一
目標執行個體
目標執行個體是可用區資源,可參照同一區域中的一個 VM 執行個體。參照目標執行個體的轉送規則必須位於包含目標執行個體可用區的區域。由於目標執行個體未套用 Cloud NAT 政策,因此可用於無法穿越 NAT 的 IPsec 流量。
支援多個 NIC
使用目標執行個體進行通訊協定轉送時,如果在建立目標執行個體時使用 --network
標記,則可支援具備多個網路介面 (NIC) 的 VM 執行個體:
- 如果您在建立目標執行個體時省略
--network
標記,Google Cloud 會將封包傳送至參照 VM 的nic0
介面。 - 如果您在建立目標執行個體時加入
--network
旗標,Google Cloud 會將封包傳送至參照 VM 的 NIC,該 VM 位於--network
旗標指定的 VPC 網路中。因此,在--network
標記指定的 VPC 網路中,參照的 VM 必須有 NIC。 - 內部通訊協定轉送和 IPv6 外部通訊協定轉送會使用子網路,因此有以下額外規定:當您設定參照目標執行個體的轉送規則時,轉送規則必須使用目標執行個體虛擬私有雲網路的子網路。轉送規則和目標執行個體不能使用不同的 VPC 網路,即使這些網路以某種方式連線也一樣。
VM 執行個體的 IPv6 支援
如果您希望通訊協定轉送部署作業支援 IPv6 流量,VM 執行個體必須設定為雙重堆疊或單一堆疊 IPv6 專用子網路,且與 IPv6 轉送規則位於相同的地區。
請注意,雖然您可以在雙重堆疊和僅限 IPv6 的子網路中建立僅限 IPv6 的執行個體,但無法在僅限 IPv6 的子網路中建立雙重堆疊 VM。
您可以在子網路中建立 VM 執行個體,並將 ipv6-access-type
設為 EXTERNAL
或 INTERNAL
。VM 會繼承子網路的 ipv6-access-type
設定 (EXTERNAL
或 INTERNAL
)。
如需操作說明,請參閱「建立使用 IPv6 位址的執行個體」。如果您想使用現有的 VM,可以使用 gcloud compute instances network-interfaces update
指令將 VM 更新為雙層堆疊。不支援將現有 VM 更新為僅限 IPv6。
要求和傳回封包的 IP 位址
當目標執行個體收到來自用戶端的封包時,要求封包的來源和目的地 IP 位址如下表所示。
通訊協定轉送類型 | 來源 IP 位址 | 目的地 IP 位址 |
---|---|---|
外部通訊協定轉送 | 與 Google Cloud VM 相關聯的外部 IP 位址,或網際網路上用戶端的外部 IP 位址。 | 轉送規則的 IP 位址。 |
內部通訊協定轉送 | 用戶端的內部 IP 位址;對於 Google Cloud 用戶端,則是主要內部 IPv4 位址或 IPv6 位址,或是 VM 網路介面的別名 IP 範圍中的 IPv4 位址。 | 轉送規則的 IP 位址。 |
在目標執行個體 VM 上執行的軟體應設定為執行下列操作:
- 監聽 (繫結至) 轉送規則 IP 位址或任何 IP 位址 (
0.0.0.0
或::
)。 - 如果轉送規則的通訊協定支援通訊埠,請監聽 (繫結至) 轉送規則中包含的通訊埠。
回傳封包會直接從目標執行個體傳送至用戶端。回應封包的來源和目的地 IP 位址取決於通訊協定:
- TCP 是連線導向的。目標執行個體必須回覆封包,且封包的來源 IP 位址必須與轉送規則的 IP 位址相符。這可確保用戶端能將回應封包與適當的 TCP 連線建立關聯。
- AH、ESP、GRE、ICMP、ICMPv6 和 UDP 都是無連線的。目標執行個體可以傳送回應封包,其來源 IP 位址會與轉送規則的 IP 位址相符,或與在相同 VPC 網路中,與轉送規則相同的 VM NIC 所指派的任何 IP 位址相符。實際上,大多數用戶端都希望回應來自傳送封包的相同 IP 位址。
下表列出回傳封包的來源和目的地:
流量類型 | 來源 IP 位址 | 目的地 IP 位址 |
---|---|---|
TCP | 轉送規則的 IP 位址。 | 要求封包的來源 IP 位址。 |
AH、ESP、GRE、ICMP、ICMPv6 和 UDP* | 在大多數情況下,轉送規則的 IP 位址。† | 要求封包的來源 IP 位址。 |
* AH、ESP、GRE、ICMP 和 ICMPv6 僅支援外部通訊協定轉送。
†透過內部通訊協定轉送,您可以將回應封包的來源設為 VM NIC 的主要內部 IPv4 位址或 IPv6 位址,或別名 IP 位址範圍。如果 VM 已啟用 IP 轉送,也可以使用任意 IP 位址來源。不使用轉送規則的 IP 位址做為來源是進階情境,因為用戶端會從內部 IP 位址接收回應封包,但該 IP 位址與用戶端傳送請求封包的 IP 位址不符。
從目標執行個體連出網際網路
目標執行個體參照的 VM 執行個體,可以使用相關聯轉送規則的 IP 位址,做為傳出連線的來源 IP 位址,進而建立網際網路連線。
一般來說,VM 執行個體一律會使用自己的外部 IP 位址或 Cloud NAT 來建立連線。只��在���������況下,您才會使用轉送規則 IP 位址,從目標執行個體啟動連線,例如需要 VM 執行個體在相同外部 IP 位址發出及接收連線時。
從目標執行個體 VM 直接傳送至網際網路的傳出封包,不受流量通訊協定和通訊埠的限制。即使傳出封包使用轉送規則的 IP 位址做為來源,封包的通訊協定和來源通訊埠也不必與轉送規則的通訊協定和通訊埠規格相符。不過,傳入回應封包必須符合轉送規則的 IP 位址、通訊協定和目的地通訊埠。詳情請參閱「外部直通式網路負載平衡器和外部通訊協定轉送的路徑」。
根據 Google Cloud的隱含防火牆規則,從目標執行個體 VM 連線至網際網路的這個路徑,是預設的預期行為。不過,如果您擔心開放這個路徑會造成安全性問題,可以使用指定的傳出防火牆規則,封鎖傳送至網際網路的未經授權外送流量。
限制
- 轉送規則只能指向一個目標執行個體。
- 目標執行個體不支援健康狀態檢查。您必須確保必要軟體在目標執行個體參照的 VM 上執行且運作正常。
- IPv6 流量的內部通訊協定轉送作業不支援
L3_DEFAULT
通訊協定。使用TCP
或UDP
。
API 和 gcloud 參考資料
如要瞭解轉送規則,請參閱以下內容:
如需目標執行個體,請參閱以下內容:
定價
通訊協定轉送的費率與負載平衡相同。轉送規則和目標執行個體處理的傳入資料需要付費。
如需查看所有定價資訊,請參閱「定價」。
配額與限制
如要瞭解通訊協定轉送作業的轉送規則配額,請參閱「配額和限制:轉送規則」。