找出及修正 ICMP 問題

本教學課程說明如何逐步使用 Connectivity Tests,找出並修正網路連線問題。

在這種情況下,虛擬私有雲 (VPC) 防火牆規則會禁止某個虛擬機器 (VM) 執行個體的外部 IP 位址,使用 ICMP 通訊協定連線偵測 (ping) 另一個 VM 的外部 IP 位址。

由於 VM 間的通訊問題通常是網路連線問題,Connectivity Tests 可提供可能設定問題的相關資訊,方便您修正問題。接著再次執行 Connectivity Tests,確認問題是否已修正。

總覽

在本例中,您已在虛擬私有雲網路的相同子網路中設定兩個 VM 執行個體。兩個 VM 都有外部 IP 位址。當您從 vm1 傳送連線偵測封包至 vm2 的外部 IP 位址,測試兩者之間的連線時,連線偵測無法運作。

疑難排解兩部 VM 之間連線偵測遭拒的問題。
疑難排解兩部 VM 之間連線偵測遭拒的問題

事前準備

開始本教學課程前,請先按照「建立及執行 Connectivity Tests」的「Before you begin」一節中所有步驟操作。

也可瞭解虛擬私有雲防火牆規則的運作方式

設定網路資源

在本節中,設定測試路徑中的 Google Cloud 資源。

設定虛擬私有雲網路

您可以使用包含 VM 的現有網路和子網路,或建立新的網路和子網路

設定兩個 VM 執行個體

  1. 本教學課程中的 VM 執行個體位於同一個虛擬私有雲網路和子網路。您可以使用現有 VM 或建立新的 VM
  2. 建立 vm1vm2 時,請指派外部 IP 位址。請記下這些位址,因為稍後會用到。

建立防火牆規則 default-deny-outgoing-ping

建立 VM 後,請建立輸出虛擬私有雲防火牆規則 default-deny-outgoing-ping。這項規則會拒絕從 vm1vm2 的 ICMP 通訊協定。請確認這個網路中沒有任何現有的防火牆規則會覆寫這項規則。此外,請確認沒有任何階層式防火牆政策規則會覆寫這項規則。詳情請參閱「階層式防火牆政策總覽」。

請使用下表中的值設定這項虛擬私有雲防火牆規則。

虛擬私有雲防火牆規則欄位
名稱 default-deny-outgoing-ping
網路 使用 VM 所在的虛擬私有雲網路。
優先順序 1000
流量方向 輸出
相符時執行的動作 拒絕
目標 選取「All instances in the network」(網路中的所有執行個體)
目的地 IP 範圍 使用 vm2 的外部 IP 位址。
指定的通訊協定和通訊埠 選取「Other protocols」(其他通訊協定) 核取方塊,然後輸入 icmp

建立防火牆規則 default-deny-ingress-to-vm2

建立名為 default-deny-ingress-to-vm2 的輸入防火牆規則,拒絕 vm2 的外部 IP 位址使用 ICMP 通訊協定。請確認這個網路中沒有任何現有的防火牆規則會覆寫這項規則。此外,請確認沒有任何階層式防火牆政策規則會覆寫這項規則。詳情請參閱「階層式防火牆政策總覽」。

請使用下表中的值建立規則。

虛擬私有雲防火牆規則欄位
名稱 default-deny-ingress-to-vm2
網路 使用 VM 所在的虛擬私有雲網路。
優先順序 65534
流量方向 輸入
相符時執行的動作 拒絕
目標 選取「All instances in the network」(網路中的所有執行個體)
來源 IP 範圍 使用 vm1 的外部 IP 位址。
指定的通訊協定和通訊埠 選取「Other protocols」(其他通訊協定) 核取方塊,然後輸入 icmp

執行第一個追蹤記錄

使用 Google Cloud 控制台執行追蹤記錄,判斷 ICMP (連線偵測) 封包是否能從 vm1 傳輸至 vm2 的外部 IP 位址。執行這項追蹤記錄後,Connectivity Tests 會告知您,追蹤記錄封包已因虛擬私有雲防火牆規則 default-deny-outgoing-ping 而遭到捨棄。

請參閱下表,瞭解追蹤記錄的輸入值。

欄位名稱
通訊協定 icmp
來源 IP 位址

使用 vm1 的外部 IP 位址。

選取「This is an IP address used in」(這是用於 Google Cloud的 IP 位址) 核取方塊。

來源 IP 位址或服務專案 確認 vm1 的專案名稱。
目的地 IP 位址

使用 vm2 的外部 IP 位址。

選取「This is an IP address used in」(這是用於 Google Cloud的 IP 位址) 核取方塊。

目的地 IP 位址或服務專案 確認 vm2 的專案名稱。

下列 Google Cloud 控制台快照顯示追蹤記錄封包已遭防火牆規則 default-deny-outgoing-ping 捨棄。

追蹤記錄包含遭拒絕外送連線偵測的控制台 UI 快照。
追蹤記錄包含遭拒絕外送連線偵測的控制台 UI 快照

停用防火牆規則 default-deny-outgoing-ping 後,執行第二次追蹤記錄

  1. 如要允許對 vm2 執行連線偵測測試,請暫時停用虛擬私有雲防火牆規則 default-deny-outgoing-ping
  2. 設定更新成功後,請再次執行追蹤記錄。
  3. 追蹤記錄再次失敗。由於這項防火牆規則拒絕將輸入 ICMP 封包傳送至 vm2 的外部 IP 位址,因此封包遭到捨棄。

下圖 Google Cloud 控制台快照顯示,傳入追蹤記錄封包可以通過 Cloud NAT,但由於先前提及的防火牆規則,無法連線至 vm2

追蹤記錄無法連線至 vm2 的控制台 UI 快照。
追蹤記錄無法連線至 vm2 的控制台 UI 快照

建立防火牆規則 allow-ping-from-known-ranges

如要允許輸入 vm2 的外部 IP 位址,請設定名為 allow-ping-from-known-ranges 的新虛擬私有雲防火牆規則。允許所有輸入 ICMP 封包進入虛擬私有雲網路會造成安全風險,因此請只指定一小組來源範圍,允許這些範圍將 ICMP 封包傳送至 vm2 的外部 IP 位址。

在本教學課程中,這個來源範圍只包含 vm1 的外部 IP 位址,但請檢查現有的防火牆規則或規則優先順序,確保這些規則不會覆寫這項新規則。此外,請確認沒有階層式防火牆政策規則會覆寫這項規則。詳情請參閱「階層式防火牆政策總覽」。

使用下表中的值設定規則。

虛擬私有雲防火牆規則欄位
名稱 allow-ping-from-known-ranges
網路 使用包含這兩個 VM 的網路名稱。
優先順序 1000
流量方向 輸入
相符時執行的動作 允許
目標 選取「All instances in the network」(網路中的所有執行個體)
來源篩選器 IP 範圍
來源 IP 範圍 使用 vm1 的外部 IP 位址。
指定的通訊協定和通訊埠 選取「Other protocols」(其他通訊協定) 核取方塊,然後輸入 icmp

執行第三次追蹤記錄

建立 allow-ping-from-known-ranges 防火牆規則後,請再次連線偵測 vm2 的外部 IP 位址。連線偵測運作正常,問題已解決。

兩個 VM 之間的允許連線偵測。
兩個 VM 之間的允許連線偵測

您可以針對包含新防火牆規則的更新設定執行另一次追蹤記錄,驗證這項結果。這次,Connectivity Tests 會告知您封包已傳送至 vm2,且相符的防火牆規則 allow-ping-from-known-ranges 允許傳入的 ICMP 封包傳送至 vm2 的外部 IP 位址。

成功追蹤記錄至 vm2 的控制台 UI 快照。
成功追蹤記錄至 vm2 的主控台 UI 快照

清除所用資源

如有需要,您可以停用或刪除為本教學課程建立的任何下列 Google Cloud 資源。請確認這些不是正式版資源。如果您決定停用資源,請查看 Compute Engine 定價頁面所有網路定價頁面,確認系統不會向您收取相關費用。

  1. 停用刪除防火牆規則。
  2. 停用刪除 VM。
  3. 刪除虛擬私有雲子網路。
  4. 刪除虛擬私有雲網路。

後續步驟