運算執行個體網路遮罩
本頁面提供 Compute Engine 執行個體網路遮罩設定總覽。
在實體網路中,機器通常會設定與所連線子網路相同的網路遮罩,以便廣播位址解析通訊協定 (ARP) 要求。因此,機器可以探索同一子網路中其他機器的 MAC 位址,並使用目的地 MAC 位址直接與這些機器通訊。
在 Google Cloud中,系統不支援廣播流量。根據預設,運算執行個體網路遮罩的設定如下:
- Linux:執行個體設定的網路遮罩為
/32。因此,即使是同一個子網路內的流量,執行個體也只會與閘道的 MAC 位址通訊,而不會與目的地執行個體的 MAC 位址通訊。使用/32網路遮罩會隱藏遠端執行個體的 MAC 位址,防止第 2 層探索,並為部分應用程式造成問題。 - Windows:執行個體設定的網路遮罩會與子網路的網路遮罩相符。執行個體可以與連線至主要 IPv4 位址範圍的其他執行個體 MAC 位址通訊,但將流量傳送至連線至次要範圍的執行個體時,只能與閘道的 MAC 位址通訊。
設定較大的執行個體網路遮罩前,請先考量下列事項:
設定較大的執行個體網路遮罩屬於進階設定,大多數情況下不需要這麼做。除非作業系統或應用程式需要執行個體間的通訊,才能以與實體網路上的直接通訊相同的方式運作,否則建議保留預設設定。
如果需要更大的執行個體網路遮罩,建議您為連線至子網路的所有執行個體設定更大的執行個體網路遮罩。使用這項設定後,您就不必維護自訂映像檔。
設定選項
下表列出運算執行個體網路遮罩的設定選項。如要變更預設設定,您可以為子網路中的所有執行個體設定較大的網路遮罩,也可以建立自訂映像檔,並使用該映像檔建立具有較大網路遮罩的個別執行個體。
| 項目 | 沒有子網路或執行個體層級設定 Linux 的預設行為 |
使用 --resolve-subnet-mask 設定子網路層級 |
使用 MULTI_IP_SUBNET 進行執行個體層級設定
Windows 的預設行為 |
|---|---|---|---|
| DHCP 設定的執行個體介面網路遮罩 | /32 |
與子網路主要 IPv4 位址範圍的網路遮罩相符 | 與子網路主要 IPv4 位址範圍的網路遮罩相符 |
執行個體會收到下列 IP 位址的 ARP 回覆:
|
|||
| 執行個體會收到 ARP 回覆,其中來源和目的地 IPv4 位址在 ARP 要求封包中相同 | |||
| 執行個體會收到來自主要內部 IPv4 位址目的地,以及來自子網路主要 IPv4 位址範圍的別名 IP 位址目的地的 ARP 回覆 | 兩項設定 (ARP_PRIMARY_RANGE 和 ARP_ALL_RANGES) |
||
| 執行個體會收到來自目的地內部轉送規則 IPv4 位址的 ARP 回覆,這些位址由內部直通式網路負載平衡器或內部通訊協定轉送使用 | 兩項設定 (ARP_PRIMARY_RANGE 和 ARP_ALL_RANGES) |
||
| 執行個體會收到來自子網路其中一個次要 IPv4 位址範圍中,目的地別名 IP 位址的 ARP 回覆 | 需要 ARP_ALL_RANGES
詳情請參閱「子網路設定」。 |
子網路設定
您可以透過「解析子網路遮罩」 (--resolve-subnet-mask) 設定,為所有連線的運算執行個體建立子網路,並設定較大的執行個體網路遮罩,您可以將這項設定設為「僅限主要範圍」 (ARP_PRIMARY_RANGE) 或「所有範圍」 (ARP_ALL_RANGES)。使用「解析子網路遮罩」設定建立子網路,即可享有下列行為:
DHCP 會為連線至子網路的執行個體設定與子網路相同的網路遮罩 (而非
/32)。Google Cloud 會根據下列規則攔截並回應 ARP 要求:
- 如果 ARP 要求封包的來源和目的地 IPv4 位址相同,系統就不會產生 ARP 回應。
- 如果 ARP 要求封包的目的地 IPv4 位址與執行個體網路介面的主要內部 IPv4 位址相符,且解析子網路遮罩設定為
ARP_PRIMARY_RANGE或ARP_ALL_RANGES,系統就會產生 ARP 回應。 如果 ARP 要求封包的目的地 IPv4 位址,與執行個體網路介面別名 IP 範圍的內部 IPv4 位址相符:
如果別名 IPv4 位址範圍來自子網路的主要內部 IPv4 位址範圍,且解析子網路遮罩設定為
ARP_PRIMARY_RANGE或ARP_ALL_RANGES,系統就會產生 ARP 回應。如果別名 IPv4 位址範圍來自子網路的其中一個次要內部 IPv4 位址範圍,且解析子網路遮罩設定為
ARP_ALL_RANGES,系統就會產生 ARP 回應。
如果 ARP 要求封包的目的地 IPv4 位址與內部直通式網路負載平衡器或內部通訊協定轉送的內部轉送規則 IPv4 位址相符,且解析子網路遮罩設定為
ARP_PRIMARY_RANGE或ARP_ALL_RANGES,系統就會產生 ARP 回應。即使後端執行個體的網路介面使用不同的子網路,轉送規則所用子網路的解析子網路遮罩設定仍會影響結果。
限制
為子網路中的所有執行個體設定較大的執行個體網路遮罩時,有下列限制:
- 「解析子網路遮罩」設定只能在建立子網路時設定。您無法更新子網路,以便稍後再進行設定。
- 子網路必須是僅支援 IPv4 的一般子網路:
- 支援虛擬機器 (VM) 執行個體和 Bare Metal 執行個體。
- 執行個體 NIC 必須位於一般虛擬私有雲網路。不支援使用任何其他網路設定檔的虛擬私有雲網路中的 NIC,例如 RDMA 虛擬私有雲網路。
- 虛擬私有雲網路中的 ARP 行為與實體網路上的行為不同。
- 這項設定會新增 ARP 支援,但 Google Cloud 不支援 任何其他第 2 層通訊協定。
詳情請參閱「為子網路設定較大的執行個體網路遮罩」。
單一執行個體設定
如果您使用 MULTI_IP_SUBNET 功能的自訂映像檔設定單一運算執行個體,並使用較大的網路遮罩,則適用下列情況:
- DHCP 會為連線至子網路的執行個體設定子網路的網路遮罩 (而非
/32)。 - Google Cloud 會攔截並回應來自主要 IPv4 位址範圍的 ARP 要求。
限制
為單一運算執行個體設定較大的執行個體網路遮罩時,有下列限制:
- 如要設定
MULTI_IP_SUBNET選項,必須維護自訂映像檔。 - 支援 VM 執行個體和 Bare Metal 執行個體。
- 執行個體 NIC 必須是 vNIC 或 Dynamic Network Interface。 不支援 RDMA 類型的 NIC。
- ARP 行為與實體網路上的行為不同。
- 這項設定會新增 ARP 支援,但 Google Cloud 不支援 任何其他第 2 層通訊協定。
詳情請參閱「為單一執行個體設定較大的網路遮罩」。
虛擬私有雲網路中的 ARP 運作方式
如果您透過「解決子網路遮罩」或 MULTI_IP_SUBNET 設定,為運算執行個體設定較大的網路遮罩,執行個體就能傳送及接收 ARP 訊息。不過, Google Cloud中的 ARP 行為與實體網路中的行為不同,差異如下:
- 當執行個體傳送 ARP 要求時, Google Cloud 會攔截該要求。即使執行個體介面設定的網路遮罩與子網路的網路遮罩相符,ARP 要求也不會傳送至其他執行個體。
- Google Cloud 會傳送含有 MAC 位址的 ARP 回覆,即使沒有任何執行個體使用 ARP 要求中的 IP 位址也一樣。