您可以在內部部署網站和 Trusted Cloud by S3NS 之間設定傳統版 VPN 通道連線,讓來源和目的地 IP 位址都是外部 (非 RFC 1918) IP 位址。舉例來說,您可以將傳統 VPN 連線設定至遠端網站,使內部部署 IP 位址範圍不會與 Trusted Cloud VM IP 位址衝突。
在本教學課程中,您會使用 Trusted Cloud 專案、 Trusted Cloud 控制台、虛擬機器 (VM) 執行個體、傳統版 VPN 和幾個 Linux 指令。如要測試連線,請建立新的 VM 執行個體,在 VM 和遠端對等互連之間傳送及接收流量。
事前準備
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Enable the Compute Engine API.
- 在工作站上
安裝
gcloud
指令列工具。 - 將
gcloud
指令列工具設為使用您的專案。在下列指令中,將PROJECT_ID
替換為您的專案 ID:gcloud config set project PROJECT_ID
- 確認地端部署子網路已連線至地端部署 VPN 閘道。
- 按照「 設定對等互連 VPN 閘道」一文中的操作說明,設定 Trusted Cloud by S3NS 與內部部署 VPN 閘道之間的對等互連 VPN 閘道。
- 地區 IP 位址,可供具有一或多個網路介面的 VM 執行個體或是地區負載平衡器使用。
- 用於全域負載平衡器的全域 IP 位址
前往「Reserve a static address」(保留靜態位址) 頁面。
選擇新位址的名稱。
指定為 IPv4 或 IPv6 位址。IPv6 位址只限通用位址且只適用於通用負載平衡器。
將此 IP 位址指定為地區或通用位址。如果您要為執行個體或區域負載平衡器保留靜態 IP 位址,請選擇「區域」。如果您是為全域負載平衡器保留靜態 IP 位址,請選擇「全域」。
如果這是地區 IP 位址,請選擇要在其中建立位址的地區。
選用:選取要連結 IP 位址的資源。
按一下「預約」,預約 IP 位址。
ADDRESS_NAME
:這個地址的名稱。REGION
:要保留這個位址的地區。這個地區應與指派 IP 位址的資源位於相同地區。所有區域性 IP 位址都是 IPv4。ADDRESS_NAME
:地址名稱REGION
:這項要求的區域名稱PROJECT_ID
:這項要求的專案 ID- 前往「VM instances」(VM 執行個體) 頁面。
前往 VM 執行個體 - 點選「建立執行個體」。
- 在「Boot disk」(開機磁碟) 中,確認已選取 Linux 映像檔,例如 Debian GNU/Linux。
- 按一下「網路、磁碟、安全性、管理、單一用戶群」
- 點選「網路」。
- 在「IP forwarding」(IP 轉送) 部分,選取「Enable」(啟用)。
- 指定其他任何的執行個體參數。
- 點選「建立」。
- PROJECT_ID:建立執行個體的專案 ID。
- ZONE:建立執行個體的 Trusted Cloud 區域。
靜態路徑擁有的目的地範圍不能與虛擬私人雲端網路中任何子網路路徑使用的目的地範圍相符,或是比該範圍更加具體明確。
- 使用虛擬私有雲網路對等互連來連接兩個虛擬私有雲網路時,某一網路中的靜態路徑擁有的目的地不能與兩個網路中的子網路路徑相符,或是具有更明確的目的地。 Trusted Cloud 會拒絕以這種方式和子網路路徑發生衝突的靜態路徑。
使用自動模式 VPC 網路時如果要避免衝突,請勿建立目的地在
10.128.0.0/9
中的靜態路徑。詳情請參閱自動模式 IPv4 範圍。靜態路徑的目的地不能與任何內部的分配範圍重疊。
在建立使用 VM 做為下一個躍點的自訂靜態路徑之前,請確保您已熟悉如何將執行個體做為下一個躍點。如果選擇「下一個躍點執行個體」, Trusted Cloud 只會驗證在建立路徑時 VM 是否存在。
如果您使用網路標記建立路徑,則只有具有該標記的 VM 會收到該路徑。不過,已加上標記的 VM 仍會接收所有沒有網路標記的路由。
- 前往 Trusted Cloud 控制台的「Routes」(路徑) 頁面。
前往「Routes」(路徑) - 按一下 [Create route] (建立路徑)。
- 指定路徑的「名稱」和「說明」。
- 選取路徑將會套用到的現有 [網路]。
- 指定「目的地 IP 範圍」以定義路徑的目的地。
- 指定路徑的「Priority」(優先等級)。僅在路徑擁有相等的目的地時,優先等級會用來決定轉送順序。 詳情請參閱「路徑參數」。
- 如要讓路徑僅適用於具有相符網路標記的執行個體,請在「執行個體標記」欄位中指定。保留空白欄位會使路徑適用於網路中的所有執行個體,或者如果您選取內部 TCP/UDP 負載平衡器做為路徑的下一個躍點,網路標記不適用於下一個躍點為內部 TCP/UDP 負載平衡器的路徑。
選擇路徑的 [下一個躍點]。
- 「Specify an instance」(指定執行個體) 可讓您依照名稱選取執行個體。即使執行個體的 IP 位址改變,流量也會轉送到該執行個體 (或是相同區域內具有相同名稱的任何替代執行個體)。
- 「指定 IP 位址」可讓您輸入 VPC 網路中「現有執行個體」的 IP 位址。如要進一步瞭解有效的下一個躍點 IP 位址的重要限制,請參閱「下一個躍點和功能」一文。
點選「建立」。
- ROUTE_NAME 是路徑的名稱。
- DESTINATION_RANGE 表示將套用這個路徑的目的地 IP 位址。最廣的可能目的地為
0.0.0.0/0
。 - NETWORK 是將包含路徑的虛擬私人雲端網路名稱。
- NEXT_HOP_SPECIFICATION 代表靜態路徑的下一個躍點。您只能指定下列其中一項做為下一個躍點。如要進一步瞭解不同類型的下一個躍點,請參閱「下一個躍點和功能」。
--next-hop-instance=INSTANCE_NAME
和--next-hop-instance-zone=ZONE
:使用該下一個躍點可將流量按照名稱與區域導向至現有 VM 執行個體。針對與路徑位於相同網路中的 VM 網路介面,系統會將流量傳送至該介面的主要內部 IP 位址。--next-hop-address=ADDRESS
:使用該下一個躍點可將流量導向至現有 VM 執行個體的 IP 位址。
- PROJECT_ID 是建立路徑的專案 ID。
- DESTINATION_RANGE 表示將套用這個路徑的目的地 IP 位址。最廣的可能目的地為
0.0.0.0/0
。 - ROUTE_NAME 路線名稱。
- NETWORK_NAME 是將包含路徑的虛擬私有雲端網路名稱。
- NEXT_HOP_SPECIFICATION 的 VALUE 代表靜態路徑的下一個躍點。針對 NEXT_HOP_SPECIFICATION,您只能指定下列其中一個下一個躍點欄位:
nextHopIp
、nextHopInstance
。如要進一步瞭解不同類型的下一個躍點和功能,請參閱「下一個躍點和功能」。 前往 Trusted Cloud 控制台的「VPN」頁面。
如果是首次建立閘道,請按一下「建立 VPN 連線」。
選取「VPN 設定精靈」。
選取「傳統版 VPN」選項按鈕。
按一下「繼續」。
在「建立 VPN 連線」頁面中,指定下列閘道設定:
- 名稱:VPN 閘道的名稱。名稱一經設定即無法變更。
- 「Description」(說明):(選用) 新增說明。
- 網路:指定現有的虛擬私有雲網路,用來建立 VPN 閘道和通道。
- 地區:Cloud VPN 閘道與通道是地區物件。選擇閘道所在的Trusted Cloud區域。「不同地區」中的執行個體和其他資源可依照路徑順序,將通道用於輸出流量。如要體驗最佳效能,請將閘道與通道置於與相關 Trusted Cloud 資源相同的地區。
- 「IP address」(IP 位址):建立或選擇現有區域外部 IP 位址。
針對新通道,在「通道」部分中指定下列設定:
- 名稱:VPN 通道的名稱。名稱一經設定即無法變更。
- 說明:視需要輸入說明。
- 遠端對等互連 IP 位址:指定對等互連 VPN 閘道的外部 IP 位址。
- IKE 版本:選擇對等互連 VPN 閘道支援的適當 IKE 版本。如果對等互連裝置支援 IKEv2,建議選擇這個版本。
- IKE 預先共用金鑰:提供用於驗證的預先共用金鑰 (共用密鑰)。Cloud VPN 通道的預先共用金鑰必須與您在對等互連 VPN 閘道中設定對應通道時使用的金鑰相符。如要產生高強度加密的預先共用金鑰,請按照這些指示操作。
- 選取依據政策的通道
- 在「路由選項」下方,選取「依據政策」。
- 在「遠端網路 IP 範圍」下方,提供內部部署 VPN 設定中本機流量使用的 IP 位址範圍清單,並以半形空格分隔各個值。
- 在「Local IP ranges」(本機 IP 範圍) 欄位中,輸入您先前建立的外部 IP 位址範圍,並加上子網路前置字串
/32
。 - 按一下 [完成]。
- 點選「建立」。
PROJECT_ID
:您的專案 IDNETWORK
: Trusted Cloud 網路名稱REGION
:您建立閘道和通道的Trusted Cloud地區GW_NAME
:閘道名稱GW_IP_NAME
:閘道使用的外部 IP 位址名稱- 選用:
--target-vpn-gateway-region
是要運作的傳統版 VPN 閘道區域。值應與--region
相同。如未指定,系統會自動設定這個選項。這個選項會覆寫這個指令呼叫的預設 compute/region 屬性值。 建立目標 VPN 閘道物件:
gcloud compute target-vpn-gateways create GW_NAME \ --network=NETWORK \ --region=REGION \ --project=PROJECT_ID
預約地區外部 (靜態) IP 位址:
gcloud compute addresses create GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID
記下 IP 位址 (以便您可以在設定對等互連 VPN 閘道時使用):
gcloud compute addresses describe GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID \ --format='flattened(address)'
建立三項轉送規則;這些規則會指示Trusted Cloud 將 ESP (IPsec)、UDP 500 和 UDP 4500 流量傳送至閘道:
gcloud compute forwarding-rules create fr-GW_NAME-esp \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=ESP \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=4500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
在指令中,請按照以下方式替換:
TUNNEL_NAME
:通道名稱ON_PREM_IP
:對等互連 VPN 閘道的外部 IP 位址IKE_VERS
:IKEv1 為1
,IKEv2 為2
SHARED_SECRET
:預先共用金鑰 (共用密碼)。Cloud VPN 通道的預先共用金鑰必須與您在對等互連 VPN 閘道中設定對應通道時使用的金鑰相符。如要產生高強度加密的預先共用金鑰,請按照這些指示操作。
依據政策的 VPN:
LOCAL_IP_RANGES
:以逗號分隔的 IP 位址範圍清單。Trusted Cloud 例如,您可以為 VPC 網路中的每個子網路提供 CIDR 區塊。從 Cloud VPN 的角度,這是「左側」。REMOTE_IP_RANGES
:以半形逗號分隔的對等互連網路 IP 位址範圍清單。從 Cloud VPN 的角度,這是「右側」。
如要設定以政策為準的 VPN 通道,請執行下列指令:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=LOCAL_IP_RANGES \ --remote-traffic-selector=REMOTE_IP_RANGES \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
如果是依據路徑的 VPN,本機和遠端流量選取器都會如
0.0.0.0/0
「轉送選項與流量選取器」一文所述。如要設定以路由為基礎的 VPN 通道,請執行下列指令:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=0.0.0.0/0 \ --remote-traffic-selector=0.0.0.0/0 \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
為您在上一步的
--remote-traffic-selector
選項中指定的每個遠端 IP 位址範圍建立靜態路徑。針對每個遠端 IP 位址範圍重複執行這個指令。將ROUTE_NAME
替換為路徑的不重複名稱,並將REMOTE_IP_RANGE
替換為適當的遠端 IP 位址範圍。gcloud compute routes create ROUTE_NAME \ --destination-range=REMOTE_IP_RANGE \ --next-hop-vpn-tunnel=TUNNEL_NAME \ --network=NETWORK \ --next-hop-vpn-tunnel-region=REGION \ --project=PROJECT_ID
- 前往 Trusted Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
- 在虛擬機器執行個體清單中,找到您先前建立的 VM,然後按一下「SSH」SSH。
使用您先前預留的公開 IP 位址,為 VM 建立 IP 位址別名。完成這個步驟後,您就能接收 VM 的流量。
執行下列指令:
sudo ip address add EXTERNAL_IP_ADDRESS/32 dev eth0
將
EXTERNAL_IP_ADDRESS
換成您先前保留的公開 IP 位址。- 前往 Trusted Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
- 在虛擬機器執行個體清單中,找到您先前建立的 VM,然後按一下「SSH」SSH。
執行下列指令,測試是否可以 Ping 外部 IP 位址:
$ ping -I EXTERNAL_IP_ADDRESS REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) from EXTERNAL_IP_ADDRESS : 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=4.46 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.11 ms
將
REMOTE_PEER_IP_ADDRESS
替換為遠端對等互連子網路的 IP 位址。如要讓 VM 在將流量傳送至 VPN 通道時自動使用這個介面,可以建立
iptables
規則。舉例來說,執行下列指令可建立
iptables
規則:$ sudo iptables -t nat -A POSTROUTING --destination REMOTE_PEER_SUBNET -j SNAT --to-source EXTERNAL_IP_ADDRESS
將
REMOTE_PEER_SUBNET
替換為遠端對等互連的子網路。執行下列指令來測試 Cloud VPN 通道:
$ ping REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.48 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.42 ms
$ ping EXTERNAL_IP_ADDRESS PING 35.195.72.19 (35.195.72.19) 56(84) bytes of data. 64 bytes from 35.195.72.19: icmp_seq=1 ttl=64 time=0.033 ms 64 bytes from 35.195.72.19: icmp_seq=2 ttl=64 time=0.062 ms
保留新的靜態外部 IP 位址
在 Compute Engine 中,每個 VM 執行個體都可以有多個網路介面。每個介面可同時擁有內部和外部 IP 位址。轉送規則可擁有外部 IP 位址 (為達到外部負載平衡),或是內部 IP 位址 (為達到內部負載平衡)。如要進一步瞭解靜態 IP 位址,請參閱外部 IP 位址。
靜態外部 IP 位址是保留給專案的 IP 位址,在您決定釋出位址之前,皆會予以保留。如果客戶依賴特定 IP 位址存取您的服務,您可以預留該 IP 位址,確保只有您的專案可以使用。您也可以將臨時外部 IP 位址推送到靜態外部 IP 位址。
您可以保留以下兩種外部 IP 位址類型:
如需區域和全域負載平衡器清單,請參閱負載平衡器Trusted Cloud 摘要。
使用 Google Cloud CLI 或透過 API 保留靜態外部 IP 位址。保留 IP 位址後,請在建立新執行個體時將 IP 位址指派給該執行個體,或將 IP 位址指派給現有執行個體。
主控台
gcloud
如要透過 gcloud compute
保留靜態外部 IP 位址,請使用 compute addresses create
指令。
如要保留全域 IP 位址,請使用 --global
和 --ip-version
欄位。針對 --ip-version
欄位,請指定 IPV4
或 IPV6
。IPv6 位址只限通用位址且只適用於通用負載平衡器。
將 ADDRESS_NAME
替換成這個地址的名稱。
gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
如要預約地區 IP 位址,請使用 --region
欄位:
gcloud compute addresses create ADDRESS_NAME \ --region=REGION
更改下列內容:
使用 compute addresses describe
指令查看結果:
gcloud compute addresses describe ADDRESS_NAME
API
如要建立地區 IPv4 位址,請呼叫地區 addresses.insert
方法:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
要求內容應包含以下程式碼:
{ "name": "ADDRESS_NAME" }
更改下列內容:
針對全域靜態 IPv4 位址,請呼叫 globalAddresses.insert
方法:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
要求內容應包含以下程式碼:
{ "name": "ADDRESS_NAME" }
如要取得全域靜態 IPv6 位址,請呼叫 globalAddresses.insert
方法:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
要求內容應包含以下程式碼:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
使用 addresses.get
方法查看結果。
Terraform
您可以使用 Terraform 模組建立外部 IP 位址。
在下列範例中,Terraform 引數含有可變更的範例值。這個範例會建立三個區域外部 IPv4 位址。
下列範例會建立全域外部 IPv6 位址:
啟用 IP 轉送
您可以在建立 VM 時啟用 IP 轉送,也可以更新現有 VM 的canIpForward
執行個體屬性。IP 轉送功能是在 VM 層級啟用,並會套用至附加至 VM 的所有介面。
在建立 VM 時啟用 IP 轉送功能
這些指示說明如何在建立 VM 時啟用 IP 轉送功能。如要在現有 VM 上啟用 IP 轉送,請更新執行個體屬性canIpForward
。
主控台
gcloud
使用 gcloud
建立執行個體時,請將 --can-ip-forward
標記新增至您的指令:
gcloud compute instances create ... --can-ip-forward
API
建立執行個體時,請使用 canIpForward
欄位啟用 IP 轉送。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "canIpForward": true, ...other fields }
更改下列內容:
詳情請參閱 instances.insert
方法。
Terraform
您可以使用 Terraform 資源建立已啟用 IP 轉送的 VM 執行個體。
在本範例中,Terraform 引數已指派可變更的值。
建立輸入流量的路徑
按照下列步驟來建立新的靜態路徑。在您進行前,請先確認您瞭解下列項目:
主控台
gcloud
建立新的靜態路徑:
gcloud compute routes create ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --network=NETWORK \ NEXT_HOP_SPECIFICATION
替換預留位置:
如要使靜態路徑僅適用於按照網路標記選取 VM,請新增 --tags
標記並指定一或多個網路標記。如要進一步瞭解網路標記與靜態路徑的協同合作方式,請參閱「適用路徑」。您可以在任何靜態路徑中使用標記。
如要進一步瞭解 gcloud
語法,請參閱 SDK 說明文件。
API
建立新的靜態路徑。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes { "destRange": "DESTINATION_RANGE", "name": "ROUTE_NAME", "network": "NETWORK_NAME", "priority": PRIORITY, "NEXT_HOP_SPECIFICATION": VALUE }
替換預留位置:
詳情請參閱 routes.insert
方法。
Terraform
您可以使用 Terraform 模組建立靜態路徑。
這個靜態路徑會建立通往網際網路的預設路徑。
使用靜態轉送功能建立傳統版 VPN
VPN 設定精靈是建立傳統版 VPN 閘道的唯一 Trusted Cloud 控制台選項。精靈包含建立傳統版 VPN 閘道、通道、BGP 工作階段和外部 VPN 閘道資源的所有必要設定步驟。不過,您可以稍後再完成特定步驟,例如設定 BGP 工作階段。
主控台
設定閘道
設定通道
gcloud
如要建立 Cloud VPN 閘道,請完成下列指令序列。在指令中,請按照以下方式替換:
設定閘道資源
建立 Cloud VPN 通道
設定 VM 來傳送及接收流量
如要完成設定,並測試是否能從 VM 傳送及接收流量,請按照下列步驟操作: