[手把手教學] VPC Network peering 基本介紹

概要

兩個不同 project 甚至是不同 organization 的 Network,可以透過 VPC peering 的服務,達到私有網路(RFC 1918 規範)互連的效果。

VPC Network Peering 的規範

  • VPC Network Peering 適用於 Compute Engine, Kubernetes Engine 以及 App Engine Flex
  • Peered Networks的 Routes, firewalls, VPNs 以及其他流量監控的工具都是單獨管理的
  • 一個 VPC Network 可以與許多其他的 Network peering,但是有以下限制
    • 一個 Network 最多只能有 25 個 peering Networks
    • 一個 Network 以及與他 peered Networks 最多能有 15,500 個 instance
    • Internal Load Balancing 的 forwarding rules,一個 Network 最多只能有 50 個
  • Peered Networks 之間的 subnet IP range 不能重疊
  • VPC Network Peering 不支援 legacy networks
  • 不能透過 peered networks 連線至 VPN
  • Peered Networks 之間的流量延遲與單一 Network 內的相同

VPC Network Peering 手把手教學

權限以及 Network 設定

在執行這以下的步驟前,需要先確定該使用者有 roles/editor 或是 roles/compute.networkAdmin 的 IAM roles。在 Project A 建立一個新的 Network 以及 subnet。#切記兩個 Network 的 subnet 不能重疊。

gcloud compute --project=[ProjectNameA] \
networks create network-a --subnet-mode=custom
gcloud compute --project=[ProjectNameA] \
networks subnets create peer-a --network=network-a \
--region=asia-east1 --range=10.0.0.0/16

在 Project B 建立一個新的 Network 以及 subnet。#切記兩個 Network 的 subnet 不能重疊。

gcloud compute --project=[ProjectNameB] \
networks create network-b --subnet-mode=custom
gcloud compute --project=[ProjectNameB] \
networks subnets create peer-b --network=network-b \
--region=asia-east1 --range=10.8.0.0/16

VPC Network Peering 設定

從 Project A 設定 peering,[network-A], [ProjectNameB], [network-B] 自行帶入

gcloud compute networks peerings create peer-ab \
--network [network-A] \
--peer-project [ProjectNameB] \
--peer-network [network-B] \
--auto-create-routes

確認 Project A 的 Network 的 peering 狀況,初始為 INACTIVE

gcloud compute networks peerings list --network network-A

從 Project B 設定 peering,[network-B], [ProjectNameA], [network-A] 自行帶入

gcloud compute networks peerings create peer-ba \
--network [network-B] \
--peer-project [ProjectNameA] \
--peer-network [network-A] \
--auto-create-routes

確認 Project B 的 Network 的 peering 狀況,從 INACTIVE 變為 ACTIVE

gcloud compute networks peerings list --network network-B

進入到各個 Project 的 VPC network peering 頁面 ,如果可以看到 Connected 的綠燈就表示 peering 成功。

防火牆設定

因為剛剛新增的 subnet 為 custom mode,所以需要自行設定防火牆。以下的指令根據使用者的需求,自行建立。開啟 SSH 的 22 port:

gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0

開啟 RDP 的 3389 port:

gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:3389 --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:3389 --source-ranges=0.0.0.0/0

開啟 icmp:

gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=icmp --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=icmp --source-ranges=0.0.0.0/0

開通 internal 連線:

gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-internal \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:0-65535,udp:0-65535,icmp --source-ranges=10.8.0.0/16
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-internal \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:0-65535,udp:0-65535,icmp --source-ranges=10.0.0.0/16

如果使用 GCP 的 default network,預設防火牆從外到內的流量是全關的。


連絡「GCP 專門家」