arrow_back

網路基本概念

登录 加入
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

網路基本概念

Lab 1 小时 15 分钟 universal_currency_alt 1 积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP016

Google Cloud 自修研究室標誌

總覽

在本實作研究室中,您將瞭解如何在 Google Cloud (包括 Compute Engine 執行個體) 執行基本的網路工作,以及 Google Cloud 與地端部署設定可能有哪些差異。您會設定 1 個網路和 3 個子網路,這些元素會形成下列最終環境:

最終環境包含三個子網路:subnet-us-central、subnet-europe-west 和 asia-test-01

接下來的研究室練習順序經過特別安排,以反映常見的雲端開發人員體驗,包括:

  1. 設定研究室環境並瞭解如何使用 Google Cloud 環境。
  2. 使用常見的開放原始碼工具,部署包含子網路與多個區域的通用網路,探索遍布全球的網路。
  3. 測試及監控網路和執行個體。

學習重點

  • Google Cloud 網路的基本概念和結構。
  • 如何設定預設與使用者建立的網路。
  • 如何評估效能與延遲特性。
  • 存取權、防火牆和轉送的基本安全性設定。

先備知識

  • Compute Engine 的基本知識
  • 基本的網路和 TCP/IP 知識
  • 基本的 Unix/Linux 指令列知識

設定和需求

點選「Start Lab」按鈕前的須知事項

請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。

您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。

如要完成這個研究室活動,請先確認:

  • 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行此研究室。這可以防止個人帳戶和學生帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
注意:如果您擁有個人 Google Cloud 帳戶或專案,請勿用於本研究室,以免產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」(研究室詳細資料) 面板會顯示下列項目:

    • 「Open Google Console」(開啟 Google 控制台) 按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的暫時憑證
    • 完成這個研究室所需的其他資訊 (如有)
  2. 按一下「Open Google Console」(開啟 Google 控制台)。接著,研究室會啟動相關資源並開啟另一個分頁,當中會顯示「Sign in」(登入) 頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意事項:如果頁面中顯示了「Choose an account」(選擇帳戶) 對話方塊,請按一下「Use Another Account」(使用其他帳戶)
  3. 如有必要,請複製「Lab Details」(研究室詳細資料) 面板中的使用者名稱,然後貼到「Sign in」(登入) 對話方塊。按一下「Next」(下一步)

  4. 複製「Lab Details」(研究室詳細資料) 面板中的密碼,然後貼到「Welcome」(歡迎使用) 對話方塊。按一下「Next」(下一步)

    重要注意事項:請務必使用左側面板中的憑證,而非 Google Cloud 技能重點加強的憑證。 注意事項:如果使用自己的 Google Cloud 帳戶來進行這個研究室,可能會產生額外費用。
  5. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Cloud 控制台稍後會在這個分頁中開啟。

注意事項:按一下畫面左上方的導覽選單,即可在選單中查看 Google Cloud 產品與服務的清單。「導覽選單」圖示

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:

您在本工作階段中的 Cloud Platform 專案會設為「YOUR_PROJECT_ID」

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

  2. 輸出畫面應如下所示:

輸出內容:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = <project_ID>

輸出內容範例:

[core] project = qwiklabs-gcp-44776a13dea667a6 附註:如需有關 gcloud 的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。

瞭解區域和可用區

某些 Compute Engine 資源專屬於特定的區域或可用區。「區域」是您可以執行資源的特定地理位置,每個區域會有一或多個「可用區」。舉例來說,us-central1 區域是指美國中部,其中有 us-central1-aus-central1-bus-central1-cus-central1-f 等多個可用區。

區域 可用區
美國西部 us-west1-a、us-west1-b
美國中部 us-central1-a、us-central1-b、us-central1-d、us-central1-f
美國東部 us-east1-b、us-east1-c、us-east1-d
西歐 europe-west1-b、europe-west1-c、europe-west1-d
東亞 asia-east1-a、asia-east1-b、asia-east1-c

可用區中的資源稱為「可用區資源」,像是虛擬機器執行個體和永久磁碟。如要將永久磁碟連接至虛擬機器執行個體,這兩項資源都必須位於同一個可用區。同樣地,如要將靜態 IP 位址指派給執行個體,這兩項資源的所在區域也須相同。

如要進一步瞭解區域、可用區並查看完整清單,請參閱 Compute Engine 頁面的區域和可用區說明文件

設定區域和可用區

某些 Compute Engine 資源專屬於特定的區域和可用區。「區域」是您可以執行資源的特定地理位置,每個區域中會有一或多個「可用區」。

請在 Cloud Shell 執行下列 gcloud 指令,設定研究室的預設區域和可用區:

gcloud config set compute/zone "{{{project_0.startup_script.primary_zone | Zone}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.startup_script.primary_region | Region}}}" export REGION=$(gcloud config get compute/region)

工作 1:查看預設網路

建立新專案,預設的網路設定會為各個區域提供一個自動子網路。一項專案最多可建立四個額外的網路,這些網路可以是自動子網路、自訂子網路或舊版網路。

對於在子網路內建立的各個執行個體,系統會指派該子網路範圍內的 IPv4 位址。

  • 查看網路:依序點選「導覽選單」圖示 >「虛擬私有雲網路」

「虛擬私有雲網路」頁面列出網路,包括 IP 位址範圍和閘道等相關資訊

防火牆

如要進一步瞭解如何使用防火牆規則來隔離子網路,請參閱子網路防火牆規則相關說明。

每個網路都有預設防火牆,會封鎖所有傳入執行個體的流量。如要允許流量進入執行個體,必須為防火牆建立「允許」規則。此外,除非透過「輸出」防火牆設定,將預設防火牆設為封鎖傳出連線,否則該防火牆會允許從執行個體傳出的流量。因此在預設情況下,您可以對要開放輸入的流量建立「允許」規則,對要限制輸出的流量建立「拒絕」規則。您也能對輸出流量建立預設拒絕政策,完全禁止對外連線。

一般而言,建議做法是根據要傳送的流量,設定最嚴格且支援該類流量的防火牆規則。舉例來說,如需允許流量傳送至某些執行個體,不得傳至其他執行個體,請建立規則,允許流量只能傳至預定的執行個體。相較於允許流量傳入所有執行個體的廣泛型防火牆規則,這種限制較多的設定會比較容易預測。如果希望「拒絕」規則覆寫特定「允許」規則,您可以為各項規則設定優先等級,優先順序編號最小的規則會先評估。建立複雜的大型覆寫規則集,可能會導致系統允許或封鎖不在預定範圍內的流量。

預設網路已自動建立防火牆規則,如下所示。所有類型的手動建立網路都不會自動建立防火牆規則。除了預設網路外,您必須根據需求為所有網路建立防火牆規則。

預設網路自動建立的輸入防火牆規則如下:

default-allow-internal

允許網路中執行個體之間的任何通訊協定及通訊埠網路連線。

default-allow-ssh

允許使用 TCP 通訊埠 22 從任何來源透過 SSH 連至網路中的任何執行個體。

default-allow-rdp

允許使用 TCP 通訊埠 3389 從任何來源透過 RDP 連至網路中的任何執行個體。

default-allow-icmp

允許從任何來源透過 ICMP 傳送流量至網路中的任何執行個體。

  • 如要查看預設防火牆規則,請前往 Cloud 控制台,依序點選「導覽選單」圖示 >「虛擬私有雲網路」>「防火牆」

「防火牆」頁面列出防火牆規則,包括對應的類型、目標、篩選器、通訊協定/通訊埠、優先順序和網路

網路路徑

所有網路都有自動建立的路徑,可通往網際網路 (預設路徑) 和網路中的 IP 範圍。路徑名稱是由系統自動產生,會因個別專案而異。

  • 如要查看預設路徑,請依序點選「導覽選單」圖示 >「虛擬私有雲網路」>「路徑」,選取網路區域即可查看路徑

「路徑」頁面列出路徑,以及對應的說明、目的地 IP 範圍、優先等級和網路

工作 2:建立自訂網路

建立使用自訂子網路範圍的新網路

手動指派子網路範圍時,必須先建立自訂子網路,再於特定區域內建立所需的子網路。您不必立即為所有區域指定子網路,甚至完全不需要這麼做,但未定義子網路的區域無法建立執行個體。

建立新的子網路時,須採用專屬名稱,在該專案的該區域內,甚至在各個網路中都不得重複。在同一項專案中,只要所屬區域不同,相同的名稱可使用兩次。子網路沒有網路層級的 IPv4 範圍或閘道 IP,因此兩者都不會顯示。

您可以透過控制台或 Cloud Shell 建立自訂網路。兩種選項都會顯示,但在參加研究室時,必須決定要使用哪一種方法。舉例來說,您無法根據控制台操作說明完成某個部分,再透過 gcloud 指令列完成同一個部分。

工作 3:透過控制台建立自訂網路

注意: 如果偏好使用指令列,請略過這個部分,直接參考「透過 Cloud Shell 建立自訂網路」的指示繼續操作。
  1. 如要建立自訂網路,請依序點選「導覽選單」 圖示 >「虛擬私有雲網路」

  2. 點選「建立虛擬私有雲網路」,命名為 taw-custom-network

  3. 在「自訂」分頁建立下列項目:

    • 子網路名稱:subnet-
    • 區域:
    • IP 位址範圍:10.0.0.0/16
  4. 點選「完成」

    填入各項值的「建立虛擬私有雲網路」對話方塊

  5. 接著點選「新增子網路」,在對應的區域中另外新增 2 個子網路:

    • subnet-、10.1.0.0/16
    • subnet-、10.2.0.0/16
  6. 點選「建立」,完成設定。

此時網路已有路徑,可通往網際網路,以及任何您可能會建立的執行個體,但沒有任何防火牆規則允許存取執行個體,甚至是從其他執行個體存取。如要允許存取,請建立防火牆規則

請前往「新增防火牆規則」部分繼續操作。

工作 4:透過 Cloud Shell 建立自訂網路

注意:如果您剛才已透過控制台建立網路,請勿使用 Cloud Shell 重複這項練習。如要使用 gcloud 指令列練習,請重新進行研究室。
  • 在 Cloud Shell 輸入下列指令,建立自訂網路:
gcloud compute networks create taw-custom-network --subnet-mode custom

輸出內容:

NAME MODE IPV4_RANGE GATEWAY_IPV4 taw-custom-network custom Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create --network taw-custom-network --allow tcp,udp,icmp --source-ranges $ gcloud compute firewall-rules create --network taw-custom-network --allow tcp:22,tcp:3389,icmp

接著為新的自訂網路建立三個子網路。

  1. 建立含有 IP 前置字串的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.primary_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.primary_region | Region}}} \ --range 10.0.0.0/16

輸出內容:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.primary_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.primary_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.primary_region | Region}}} {{{project_0.startup_script.primary_region | Region}}} taw-custom-network 10.0.0.0/16
  1. 建立含有 IP 前置字串的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.secondary_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.secondary_region | Region}}} \ --range 10.1.0.0/16

輸出內容:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.secondary_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.secondary_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.1.0.0/16
  1. 建立含有 IP 前置字串的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.third_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.third_region | Region}}} \ --range 10.2.0.0/16

輸出內容:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.third_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.third_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.2.0.0/16
  1. 列出網路:
gcloud compute networks subnets list \ --network taw-custom-network

如果在先前部分已建立自動子網路,那些子網路也會一併列出。

輸出內容:

NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.third_region | Region}}} {{{project_0.startup_script.third_region | Region}}} taw-custom-network 10.1.0.0/16 subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.2.0.0/16 subnet-{{{project_0.startup_script.primary_region | Region}}} {{{project_0.startup_script.primary_region | Region}}} taw-custom-network 10.0.0.0/16

此時網路已有路徑,可通往網際網路,以及任何您可能會建立的執行個體,但沒有任何防火牆規則允許存取執行個體,甚至是從其他執行個體存取。如要允許存取,請建立防火牆規則

工作 5:新增防火牆規則

如要允許存取 VM 執行個體,請套用防火牆規則。您將使用執行個體標記,將防火牆規則套用至 VM 執行個體。如果 VM 使用同一個執行個體標記,防火牆規則就會套用至這些 VM。

注意:網路和防火牆是透過執行個體標記,將特定的防火牆規則套用至標記的 VM 執行個體。舉例來說,如有數個執行個體都是執行同一項工作,例如提供大型網站,您可以使用共通的字詞標記這些執行個體,然後使用該標記搭配防火牆規則,允許透過 HTTP 存取這些執行個體。

標記會反映在中繼資料伺服器中,方便您用於執行個體上執行的應用程式。
  • 首先,開啟要允許 HTTP 網際網路要求的防火牆,新增更多防火牆規則。您可以透過控制台或 Cloud Shell 新增防火牆規則。

透過控制台新增防火牆規則

  1. 前往 Cloud 控制台中的「虛擬私有雲網路」,點選「taw-custom-network」

「虛擬私有雲網路」頁面,醒目顯示的是「taw-custom-networking」

  1. 依序點選「防火牆」分頁標籤和「新增防火牆規則」

「虛擬私有雲網路詳細資料」頁面,顯目醒示的是「防火牆」分頁和「新增防火牆規則」按鈕

  1. 輸入下列資訊:

欄位

註解

名稱

nw101-allow-http

新規則名稱

目標

指定的目標標記

要套用防火牆規則的執行個體

目標標記

http

我們建立的標記

來源篩選器

IPv4 範圍

我們會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

來源 IPv4 範圍

0.0.0.0/0

您會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

通訊協定和埠

選取「指定的通訊協定和埠」,勾選「tcp」方塊並輸入「80」

僅限 HTTP

畫面內容會類似這樣:

填入各項值的「建立防火牆規則」對話方塊

  1. 點選「建立」,等待指令執行成功。接下來要根據需求建立額外的防火牆規則。

透過 Cloud Shell 新增防火牆規則

注意:如果您剛才已透過 Cloud 控制台建立網路,請勿使用 Cloud Shell 進行同一項練習。如要使用 gcloud 指令列練習,請重新進行研究室。
  • 如要在 Cloud Shell 建立防火牆規則,請執行下列指令:
gcloud compute firewall-rules create nw101-allow-http \ --allow tcp:80 --network taw-custom-network --source-ranges 0.0.0.0/0 \ --target-tags http

輸出內容:

在輸出內容中,名稱為 nw101-allow-http,網路為 taw-custom-network,方向為「輸入」,優先等級為 1000,允許狀態則為 tcp:80

建立額外的防火牆規則

這些額外的防火牆規則會允許 ICMP、內部通訊、SSH 和 RDP 流量。您可以透過控制台或 Cloud Shell 建立這些規則。請注意,請選用任一方法建立每種類型的防火牆規則,不得兩種方法都使用。

  • ICMP

欄位

註解

名稱

nw101-allow-icmp

新規則名稱

目標

指定的目標標記

從「目標」下拉式選單選取

目標標記

rules

標記

來源篩選器

IPv4 範圍

我們會開啟防火牆,接受來自這份清單中任何 IP 位址的流量

來源 IPv4 範圍

0.0.0.0/0

我們會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

通訊協定和埠

依序選取「指定的通訊協定和埠」和「其他通訊協定」,輸入「icmp」

要套用防火牆規則的通訊協定和通訊埠

(Cloud Shell 指令)

gcloud compute firewall-rules create "nw101-allow-icmp" --allow icmp --network "taw-custom-network" --target-tags rules
  • 內部通訊

欄位

註解

名稱

nw101-allow-internal

新規則名稱

目標

網路中的所有執行個體

從「目標」下拉式選單選取

來源篩選器

IPv4 範圍

用來將規則套用至特定流量來源的篩選器

來源 IPv4 範圍

10.0.0.0/16、

10.1.0.0/16、

10.2.0.0/16

我們會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

通訊協定和埠

依序選取「指定的通訊協定和埠」和「tcp」,輸入「0-65535」;勾選「udp」,輸入「0-65535」;勾選「其他通訊協定」,輸入「icmp」

允許 Tcp:0-65535、udp:0-65535、icmp

(Cloud Shell 指令)

gcloud compute firewall-rules create "nw101-allow-internal" --allow tcp:0-65535,udp:0-65535,icmp --network "taw-custom-network" --source-ranges "10.0.0.0/16","10.2.0.0/16","10.1.0.0/16"
  • SSH

欄位

註解

名稱

nw101-allow-ssh

新規則名稱

目標

指定的目標標記

ssh

目標標記

ssh

要套用防火牆規則的執行個體

來源篩選器

IPv4 範圍

用來將規則套用至特定流量來源的篩選器

來源 IPv4 範圍

0.0.0.0/0

我們會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

通訊協定和埠

選取「指定的通訊協定和埠」,勾選「tcp」方塊並輸入「22」

允許 tcp:22

(Cloud Shell 指令)

gcloud compute firewall-rules create "nw101-allow-ssh" --allow tcp:22 --network "taw-custom-network" --target-tags "ssh"
  • RDP

欄位

註解

名稱

nw101-allow-rdp

新規則名稱

目標

網路中的所有執行個體

從「目標」下拉式選單選取

來源篩選器

IPv4 範圍

篩選 IP 位址

來源 IPv4 範圍

0.0.0.0/0

我們會開啟防火牆,接受來自網際網路中任何 IP 位址的流量

通訊協定和埠

選取「指定的通訊協定和埠」,勾選「tcp」並輸入「3389」

允許 tcp:3389

(Cloud Shell 指令)

gcloud compute firewall-rules create "nw101-allow-rdp" --allow tcp:3389 --network "taw-custom-network"
  • 透過控制台查看網路的防火牆規則,內容應該會類似這樣:

「虛擬私有雲網路詳細資料」對話方塊中的「防火牆規則」分頁式頁面

注意:「網路」控制台中顯示的路徑有什麼作用呢?

Google Cloud 網路會使用路徑在子網路之間傳送封包,以及將封包導向網際網路。只要網路中已建立或預先建立子網路,路徑就會自動在各個區域建立,讓封包能夠在子網路之間轉送。這類路徑無法修改。

您可以建立額外的路徑,將流量傳送至執行個體、VPN 閘道或預設的網際網路閘道,也能修改這類路徑,打造符合需求的網路架構。路徑和防火牆會搭配運作,確保流量傳至適當的目的地。

點選「Check my progress」,確認目標已達成。

建立自訂網路、子網路和防火牆規則。

工作 6:連至研究室 VM 並確認延遲狀況

  • 點選左選單中的「虛擬私有雲網路」,查看整個網路。taw-custom-network 有三個子網路且已套用防火牆規則。

您應該會看到下列畫面:

「虛擬私有雲網路」頁面列出網路,以及對應的子網路、模式、IP 位址範圍、閘道、防火牆規則和全域動態轉送狀態

接下來要執行的步驟是在各個子網路建立 VM,並確保能順利連至這些 VM。

在各個可用區建立 VM

在研究室的這個部分,要使用 Cloud Shell 操作。

  1. 執行下列指令,在 subnet- 子網路建立 us-test-01 執行個體:
gcloud compute instances create us-test-01 \ --subnet subnet-{{{project_0.startup_script.primary_region | Region}}} \ --zone {{{project_0.startup_script.primary_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

請務必記下外部 IP,本研究室的後續步驟會用到。

輸出內容:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/zones/{{{project_0.startup_script.primary_zone | ZONE}}}/instances/us-test-01]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS us-test-01 {{{project_0.startup_script.primary_zone | ZONE}}} e2-standard-2 10.0.0.2 104.198.230.22 RUNNING
  1. 接著在相關聯的子網路建立 us-test-02 和 us-test-03 VM:
gcloud compute instances create us-test-02 \ --subnet subnet-{{{project_0.startup_script.secondary_region | REGION}}} \ --zone {{{project_0.startup_script.secondary_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules gcloud compute instances create us-test-03 \ --subnet subnet-{{{project_0.startup_script.third_region | REGION}}} \ --zone {{{project_0.startup_script.third_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

點選「Check my progress」,確認目標已達成。

在指定的可用區建立三個執行個體,以執行「路徑追蹤 (traceroute) 和效能測試」。

確認您能連至 VM

接下來,請透過幾項練習,測試能否順利連至 VM。

  1. 切換回控制台,前往「Compute Engine」

  2. 找到 us-test-01 執行個體,點選對應的「SSH」按鈕,連至該執行個體的 SSH 連線就會在新視窗中開啟。

  3. us-test-01 的 SSH 視窗中輸入下列指令,在指令行中加入 VM 的外部 IP 位址,對 us-test-02 使用 ICMP 回應:

ping -c 3 <us-test-02-external-ip-address> 注意:您可以前往「Compute Engine」瀏覽器分頁,在「外部 IP」欄位底下找到虛擬機器的外部 IP。

醒目顯示的「外部 IP」欄列出三個 IP 位址

您的 IP 位址會與圖片內容不同
  1. 執行下列指令,在指令行中加入 VM 的外部 IP 位址,對 us-test-03 使用 ICMP 回應:
ping -c 3 <us-test-03-external-ip-address>

輸出內容範例:

PING 35.187.149.67 (35.187.149.67) 56(84) bytes of data. 64 bytes from 35.187.149.67: icmp_seq=1 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=2 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=3 ttl=76 time=152 ms
  1. 接著確認同樣能透過 SSH 連至 us-test-02us-test-03 執行個體,請試著對 us-test-01 使用 ICMP 回應。

使用連線偵測 (ping) 評估延遲狀況

使用連線偵測 (ping) 評估所有區域之間,不同執行個體間的延遲狀況。

  • 如要觀察從美國中部區域連至歐洲西部區域會延遲多久,請先對 us-test-01 開啟 SSH 視窗,然後執行下列指令:
ping -c 3 us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}

指令輸出:

PING us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2) 56(84) bytes of data. 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=1 ttl=64 time=105 ms 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=2 ttl=64 time=104 ms 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=3 ttl=64 time=104 ms

傳回的延遲資訊為「封包往返時間」(RTT),也就是封包從 us-test-01 傳至 us-test-02 所需的時間。

為了測試連線能力,連線偵測 (ping) 會使用 ICMP 回應要求及回應回覆訊息

注意:請思考下列幾點

就您所見,區域之間的延遲狀況如何?在理想情況下,您期望有什麼樣的結果?從「us-test-02」連至「us-test-03」有什麼特別的情況?
內部 DNS 附註:DNS 是以何種方式提供給 VM 執行個體?

每個執行個體都有中繼資料伺服器,這個伺服器也是該執行個體的 DNS 解析器,且會對執行個體名稱執行 DNS 查詢。中繼資料伺服器本身會儲存本機網路的所有 DNS 資訊,並查詢 Google 公開 DNS 伺服器是否有任何不在本機網路內的位址。

執行個體的內部完整網域名稱 (FQDN) 會類似這樣:hostName.[ZONE].c.[PROJECT_ID].internal。

從某個執行個體連至其他執行個體時,一律可使用這個 FQDN。舉例來說,如要單純使用主機名稱連至執行個體,就需要透過 Compute Engine 提供的內部 DNS 解析器取得相關資訊。

工作 7:(選用) 路徑追蹤 (traceroute) 和效能測試

這項練習屬於自由參加性質

路徑追蹤 (traceroute) 工具是用來追蹤兩個主機之間的路徑。如果想找出多種不同類型的網路問題,可以先執行路徑追蹤 (traceroute),這項功能相當實用。支援或網路工程師在診斷網路問題時,通常會要求執行路徑追蹤 (traceroute)。

功能附註:

路徑追蹤 (traceroute) 會顯示主機之間的所有第 3 層 (轉送層) 躍點。做法是將封包傳送至遠端目的地時,將存留時間 (TTL) 值調高 (起始值為 1)。TTL 欄位是 IP 封包中的欄位,每通過一個路由器,這項值就會減一。待 TTL 值變成零時,系統就會捨棄封包,傳回「TTL exceeded」ICMP 訊息給傳送端。這種做法可避免引發轉送迴圈問題;TTL 欄位的值最終會降為 0,因此封包無法持續反覆轉送。OS 預設會將 TTL 值設為 64、128、255 之類較高的值,因此這應該只有在異常情況下才會達到。

因此路徑追蹤 (traceroute) 一開始傳送封包時,TTL 值會設為 1,接著再設為 2,依此類推,這會導致封包在路徑經過第一個/第二個/後續路由器時過期。接著,系統會使用來源 IP/主機發出的「ICMP TTL exceeded」訊息,顯示中間躍點的名稱/IP。TTL 值夠高時,封包就會送達目的地,目的地也會有回應。

傳送的封包類型會因實作項目而異。在 Linux 中,UDP 封包會傳送至編號較高且未使用的通訊埠,因此最終目的地會提供下列回應:無法連上 ICMP 通訊埠。Windows 和 MTR 工具預設會使用連線偵測 (ping) 等 ICMP 回應要求,因此最終目的地會以 ICMP 回應回覆做為回應。

現在請在其中一個虛擬機器上設定路徑追蹤 (traceroute),試試這項功能。

  1. 如要執行這個步驟,請回頭使用 us-test-01 VM 和 us-test-02 VM,透過 SSH 連至這兩個 VM。

  2. us-test-01 的 SSH 視窗中安裝下列效能工具:

sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege traceroute www.icann.org
  1. 接著請試著使用另外幾個目的地和其他來源:

    • 同一區域或其他區域的 VM (eu1-vm、asia1-vm、w2-vm)
    • www.wikipedia.org
    • www.adcash.com
    • bad.horse (如果調高 TTL 上限,效果最佳,例如,traceroute -m 255 bad.horse)
    • 任何您想到的內容
  2. 如要停止路徑追蹤 (traceroute),請在 SSH 視窗中按 Ctrl+C 鍵,然後返回指令列。

注意:請思考下列問題

使用不同的路徑追蹤 (traceroute) 設定時,您注意到了什麼?

工作 8:(選用) 使用 iperf 測試效能

在兩個主機之間

這項練習屬於自由參加性質

透過 iperf 測試兩個主機之間的效能時,其中一端必須設為接受連線的 iperf 伺服器。

注意:下列指令會在不同區域之間傳輸流量 (以 GB 為單位),系統會按網際網路輸出費率收費。使用時,請留意這點。如果使用的是未加入許可清單的專案,或者不在免費試用期內,可能必須略過這個部分,或只要瀏覽重點即可 (費用應該不到 $1 美元)。

試著執行簡單的測試:

  1. 透過 SSH 連至 us-test-02,安裝效能工具﹕
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
  1. 透過 SSH 連至 us-test-01,執行下列指令:
iperf -s #run in server mode
  1. us-test-02 SSH 視窗中,執行下列 iperf 指令:
iperf -c us-test-01.{{{project_0.startup_script.primary_zone | ZONE}}} #run in client mode

輸出內容會類似這樣:

Client connecting to eu-vm, TCP port 5001 TCP window size: 45.0 KByte (default) [ 3] local 10.20.0.2 port 35923 connected with 10.30.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 298 MBytes 249 Mbits/sec
  1. 完成作業後,只要在 us-test-01 視窗中按下 Ctrl+C鍵,即可結束伺服器端。

在特定區域的不同 VM 之間

這項練習屬於自由參加性質

現在您將於 us-test-01 以外的其他可用區部署另一個執行個體 us-test-04。您會發現一個區域的頻寬限制為:每個核心每秒 2 Gbit (輸出上限)。

  1. 在 Cloud Shell 建立 us-test-04
gcloud compute instances create us-test-04 \ --subnet subnet-{{{project_0.startup_script.primary_region | REGION}}} \ --zone {{{project_0.startup_script.primary_zone_1 | ZONE}}} \ --tags ssh,http
  1. 透過 SSH 連至 us-test-04,安裝效能工具:
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege

在不同區域間達到的限制較低,大多是受到 TCP 視窗大小和單一串流效能的限制影響。您可以使用其他參數 (如 UDP),調高主機之間的頻寬。

  1. us-test-02 視窗中,執行下列指令:
iperf -s -u #iperf server side
  1. us-test-01 SSH 視窗中,執行下列指令:
iperf -c us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}} -u -b 2G #iperf client side - send 2 Gbits/s

這樣的話,歐洲和美國區域之間應該就能達到較快的傳輸速度。如果同時執行多個 TCP iperf,甚至還能達到更快的速度。我們來試試。

  1. us-test-01 的 SSH 視窗中,執行下列指令:
iperf -s
  1. us-test-02 的 SSH 視窗中,執行下列指令:
iperf -c us-test-01.{{{project_0.startup_script.primary_zone | ZONE}}} -P 20

頻寬合併起來應該會相當接近可達到的頻寬上限。

  1. 再多測試幾種組合。如果您在筆電上使用 Linux,也能對筆電執行測試 (您也能試試許多 OS 都適用的 iperf3,但這不在本研究室的涵蓋範圍內)。

如您所見,如要達到頻寬上限,光執行一個 TCP 串流作業 (例如複製檔案) 是不夠的,因此請同時執行數個 TCP 工作階段。原因如下:TCP 參數 (如視窗大小);以及函式 (如緩慢啟動)。

如要進一步瞭解相關細節及所有其他 TCP/IP 主題,請參閱「TCP/IP Illustrated」。

bbcp 等工具能讓您平行處理傳輸作業及使用可設定的視窗大小,盡可能提高複製檔案的速度。

工作 9:學以致用

關閉研究室

如果您已完成研究室,請按一下「End Lab」。您的帳戶和已用資源會從研究室平台中移除。

您可以為研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」分頁提交。

恭喜

您已瞭解預設與使用者建立的網路設定方式、如何授予和拒絕授予存取權,以及如何評估效能和延遲狀況。

後續步驟/瞭解詳情

如果您已準備好,不妨參加 Networking fundamentals in the Google Cloud 課程!

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 2 月 14 日

研究室上次測試日期:2024 年 2 月 14 日

Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。