通訊協定轉送總覽

通訊協定轉送功能會使用區域轉送規則,將特定通訊協定的封包傳送至單一虛擬機器 (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 位址範圍中的 /96IP 位址範圍。子網路必須是下列任一項:

      • 雙重堆疊 (IPv4 和 IPv6) 子網路
      • 單一堆疊 (僅限 IPv6) 子網路

    子網路的 ipv6-access-type 設定必須設為 INTERNAL

    內部 IPv6 位址僅適用於進階級。IPv6 位址範圍可以是保留的靜態位址或臨時位址。

    • 通訊協定選項TCP(預設) 和 UDP

    • 通訊埠規格選項。最多五個連續或不連續的通訊埠,或所有通訊埠。

  • 外部通訊協定轉送:

    • 支援 IPv4 位址。轉送規則參照單一區域外部 IPv4 位址。地區性外部 IPv4 位址來自各 Google Cloud 地區專屬的集區。IP 位址可以是保留的靜態位址,也可以是臨時位址。

    • 支援 IPv6 位址。轉送規則會參照子網路/64外部 IPv6 位址範圍的 /96IP 位址範圍。子網路必須是下列任一項:

      • 雙重堆疊 (IPv4 和 IPv6) 子網路
      • 單一堆疊 (僅限 IPv6) 子網路

    子網路 ipv6-access-type 必須設為 EXTERNAL

    外部 IPv6 位址僅適用於進階級。IPv6 位址範圍可以是保留的靜態位址或臨時位址。

    • 通訊協定選項AHESPICMPSCTPTCP (預設)、UDPL3_DEFAULT

      • L3_DEFAULT 轉送規則通訊協定選項會轉送所有 AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP 和 UDP 流量。對於 TCP、UDP 和 SCTP 通訊協定,L3_DEFAULT 也會轉送所有通訊埠。
      • IPv6 轉送規則不支援 ICMP 通訊協定設定,因為 ICMP 通訊協定僅支援 IPv4 位址。如要提供 ICMPv6 和 GRE 流量,請將轉送規則通訊協定設為 L3_DEFAULT
    • 通訊埠規格選項。連續通訊埠範圍或所有通訊埠。

使用轉送規則時,請注意下列幾點:

  • 如果是通訊協定轉送,轉送規則只能參照單一目標執行個體。

  • 對於內部直通式網路負載平衡器和後端服務型外部直通式網路負載平衡器,轉送規則只能參照單一後端服務。

  • 您可以在內部通訊協定轉送和內部直通式網路負載平衡器之間切換,不必刪除及重新建立轉送規則。如要在外部通訊協定轉送和以後端服務為基礎的外部直通式網路負載平衡器之間切換,您必須刪除並重新建立轉送規則。詳情請參閱「在目標執行個體和後端服務之間切換」。

  • 只有在通訊協定有通訊埠概念時,才能指定通訊埠資訊,例如 TCPUDPSCTP

  • 若您想要分段的 UDP 封包,請執行下列任一操作,確保所有片段 (包括沒有通訊埠資訊的片段) 都傳送至執行個體:

    • 使用單一 L3_DEFAULT 轉送規則,或
    • 使用單一 UDP 轉送規則,設定轉送所有通訊埠。

目標執行個體

目標執行個體是區域資源,可參照同一區域中的一個 VM 執行個體。參照目標執行個體的轉送規則必須位於包含目標執行個體可用區的區域。由於目標執行個體未套用 Cloud NAT 政策,因此可用於無法通過 NAT 的 IPsec 流量。

支援多個 NIC

使用目標執行個體進行通訊協定轉送時,支援使用非 nic0 網路介面 (vNIC 或動態網路介面) 的 VM 執行個體,方法是在建立目標執行個體時使用 --network 旗標:

  • 建立目標執行個體時,如果省略 --network 旗標,Google Cloud 會將封包傳送至參照 VM 的 nic0 介面。
  • 如果您在建立目標執行個體時加入 --network 旗標,Google Cloud 會將封包傳送至 --network 旗標所指定虛擬私有雲網路中,所參照 VM 的 NIC。因此,參照的 VM 必須在 --network 標記指定的 VPC 網路中具有 NIC。
  • 由於內部通訊協定轉送和 IPv6 外部通訊協定轉送的轉送規則會使用子網路,因此有下列額外規定:設定轉送規則來參照目標執行個體時,轉送規則必須使用目標執行個體虛擬私有雲網路的子網路。轉送規則和目標執行個體不能使用不同的虛擬私有雲網路,即使這些網路以某種方式連線也一樣。

VM 執行個體的 IPv6 支援

如要讓通訊協定轉送部署作業支援 IPv6 流量,VM 執行個體必須在雙重堆疊單一堆疊 IPv6 專用子網路中設定,且該子網路與 IPv6 轉送規則位於相同區域。

請注意,您可以在雙重堆疊和僅限 IPv6 的子網路中建立僅限 IPv6 的執行個體,但無法在僅限 IPv6 的子網路中建立雙重堆疊 VM。

您可以在 ipv6-access-type 設為 EXTERNALINTERNAL 的子網路中建立 VM 執行個體。VM 會從子網路繼承 ipv6-access-type 設定 (EXTERNALINTERNAL)。

如需操作說明,請參閱「建立使用 IPv6 位址的執行個體」。如要使用現有 VM,可以透過 gcloud compute instances network-interfaces update 指令將 VM 更新為雙堆疊。不支援將現有 VM 更新為僅限 IPv6。

要求和回傳封包的 IP 位址

當目標執行個體收到來自用戶端的封包時,要求封包的來源和目的地 IP 位址會如這個表格所示。

表 1. 要求封包的來源和目的地 IP 位址
通訊協定轉送類型 來源 IP 位址 目的地 IP 位址
外部通訊協定轉送 與 Google Cloud VM 相關聯的外部 IP 位址,或是網際網路上用戶端的外部 IP 位址。 轉送規則的 IP 位址。
內部通訊協定轉送 用戶端的內部 IP 位址;對於用戶端,這是指主要內部 IPv4 位址或 IPv6 位址,或是 VM 網路介面別名 IP 範圍的 IPv4 位址。 Google Cloud 轉送規則的 IP 位址。

在目標執行個體 VM 上執行的軟體應設定為執行下列操作:

  • 在轉送規則 IP 位址或任何 IP 位址上接聽 (繫結至) (0.0.0.0::)。
  • 如果轉送規則的通訊協定支援通訊埠,請監聽 (繫結至) 轉送規則中包含的通訊埠。

回傳封包會直接從目標執行個體傳送至用戶端。回應封包的來源和目的地 IP 位址取決於通訊協定:

  • TCP 是連線導向通訊協定,目標執行個體必須回覆封包,且封包的來源 IP 位址必須與轉送規則的 IP 位址相符。這可確保用戶端能將回應封包與適當的 TCP 連線建立關聯。
  • AH、ESP、GRE、ICMP、ICMPv6 和 UDP 都是無連線通訊協定。目標執行個體可以傳送回應封包,這些封包的來源 IP 位址與轉送規則的 IP 位址相符,或與指派給 VM NIC 的任何 IP 位址相符 (該 NIC 位於與轉送規則相同的虛擬私有雲網路中)。實際上,大多數用戶端都希望回應來自傳送封包的相同 IP 位址。

下表摘要列出回傳封包的來源和目的地:

表 2. 回傳封包的來源和目的地 IP 位址
流量類型 來源 IP 位址 目的地 IP 位址
TCP 轉送規則的 IP 位址。 要求封包的來源 IP 位址。
AH、ESP、GRE、ICMP、ICMPv6 和 UDP1 在大部分用途中,這是轉送規則的 IP 位址。2 要求封包的來源 IP 位址。

1 AH、ESP、GRE、ICMP 和 ICMPv6 僅支援外部通訊協定轉送。

2 使用內部通訊協定轉送時,您可以將回應封包的來源設為 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 通訊協定。使用 TCPUDP

API 和 gcloud 參考資料

如要瞭解轉送規則,請參閱下列文章:

如需目標執行個體,請參閱下列說明:

定價

通訊協定轉送的費率與負載平衡相同。轉送規則和目標執行個體處理的傳入資料需要付費。

如需所有定價資訊,請參閱「定價」。

配額與限制

如要瞭解通訊協定轉送的轉送規則配額,請參閱「配額和限制:轉送規則」。

後續步驟