排解 MACsec 問題

本頁面說明如何排解 Cloud Interconnect 適用的 MACsec 問題。

嘗試建立新金鑰時,Cloud Interconnect 會顯示錯誤

如果您有未設定開始時間的現有 MACsec 金鑰,並嘗試建立新金鑰,Cloud Interconnect 會顯示錯誤。如要解決這項錯誤,請更新現有機碼的開始時間

Cloud Interconnect 連線的 MACsec 已停止運作

您已成功在 Cloud Interconnect 連線和內部部署路由器上啟用 MACsec,但 MACsec 工作階段顯示 Cloud Interconnect 連線連結的運作狀態為異常。問題可能由下列任一原因造成:

  • 內部部署路由器和 Google 邊緣路由器的有效金鑰不相符。
  • 內部部署路由器和 Google 邊緣路由器之間的 MACsec 通訊協定不相符。

如要解決 MACsec 狀態,請執行下列操作:

  1. 如要確認 Cloud Interconnect 連線是否已啟用 MACsec,請選取下列任一選項:

    主控台

    1. 在 Google Cloud 控制台中,前往 Cloud Interconnect「Physical connections」分頁。

      前往「Physical connections」(實體連線)

    2. 選取要查看的 Cloud Interconnect 連線。

    3. 在「MACsec」分頁中,確認「MACsec」設定顯示下列任一項目:

      • 已啟用 (無法開啟):連結已啟用 MACsec 加密。如果兩端之間未建立 MACsec 加密,連結就會在未加密的情況下運作。

      • 已啟用 (無法關閉):連結已啟用 MACsec 加密功能。如果兩端未建立 MACsec 加密,連結就會失敗。

    gcloud

    gcloud compute interconnects describe INTERCONNECT_CONNECTION_NAME
    

    INTERCONNECT_CONNECTION_NAME 替換為 Cloud Interconnect 連線的名稱。

    輸出結果大致如下。確認畫面上顯示 macsecEnabled: true

    adminEnabled: true
    availableFeatures:
    - IF_MACSEC
    circuitInfos:
    - customerDemarcId: fake-peer-demarc-0
      googleCircuitId: LOOP-0
      googleDemarcId: fake-local-demarc-0
    creationTimestamp: '2021-10-05T03:39:33.888-07:00'
    customerName: Fake Company
    description: something important
    googleReferenceId: '123456789'
    id: '12345678987654321'
    interconnectAttachments:
    - https://www.googleapis.com/compute/v1/projects/my-project1/regions/us-central1/interconnectAttachments/interconnect-123456-987654321-0
    interconnectType: IT_PRIVATE
    kind: compute#interconnect
    labelFingerprint: 12H17262736_
    linkType: LINK_TYPE_ETHERNET_10G_LR
    location: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnectLocations/cbf-zone2-65012
    macsec:
      failOpen: false
      preSharedKeys:
      - name: key1
        startTime: 2023-07-01T21:00:01.000Z
    macsecEnabled: true
    name: INTERCONNECT_CONNECTION_NAME
    operationalStatus: OS_ACTIVE
    provisionedLinkCount: 1
    requestedFeatures:
    - IF_MACSEC
    requestedLinkCount: 1
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME
    selfLinkWithId: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnects/12345678987654321
    state: ACTIVE
    
  2. 如要檢查 Cloud Interconnect 連接埠狀態、MACsec 運作狀態和有效金鑰名稱,請使用下列任一選項:

    主控台

    1. 在 Google Cloud 控制台中,前往 Cloud Interconnect「Physical connections」分頁。

      前往「Physical connections」(實體連線)

    2. 選取要查看的 Cloud Interconnect 連線。

    3. 在「連結電路資訊」中,確認「連結狀態」顯示所有連結的 「啟用」

    4. 確認「MACsec 金鑰名稱」顯示所有連結的金鑰名稱,且每個金鑰名稱都顯示「MACsec on this link is up」或「MACsec on this link is down」。

    gcloud

    gcloud compute interconnects get-diagnostics INTERCONNECT_CONNECTION_NAME \
        --project=PROJECT_NAME
    

    PROJECT_NAME 替換為您的Google Cloud 專案名稱。

    輸出結果大致如下。確認 links.lacpStatus.state 顯示 ACTIVElinks.macsec.ckn 顯示值,以及 links.operationalStatus 顯示 LINK_OPERATIONAL_STATUS_UP

    bundleAggregationType: BUNDLE_AGGREGATION_TYPE_STATIC
    bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP
    links:
    - circuitId: LOOP-0
      googleDemarc: fake-local-demarc-0
      lacpStatus:
        googleSystemId: '00:11:22:33:44:55'
        neighborSystemId: '55:44:33:22:11:00'
        state: ACTIVE
      macsec:
        ckn: 0101010189abcdef...0123456789abcdef
        operational: false
      operationalStatus: LINK_OPERATIONAL_STATUS_UP
      receivingOpticalPower:
        state: OK
        value: -2.49
      transmittingOpticalPower:
        state: OK
        value: -0.88
    macAddress: 00:11:22:33:44:55
    

    如果 links.macsec.ckn 沒有顯示值,請向Google Cloud 支援團隊尋求協助。

  3. 如要驗證有效金鑰的 CAK 和 CKN 值,以及金鑰的開始時間,請選取下列其中一個選項:

    主控台

    1. 在「MACsec」分頁中,前往「預先共用金鑰」部分,然後按一下有效金鑰旁的「查看」。如果系統未顯示 CKN 值,請洽詢 Google Cloud 支援團隊 Google Cloud 尋求協助。

    2. 在「預先共用金鑰」部分,請確認有效金鑰的開始時間與內部路由器的開始時間相符。執行下列其中一個步驟:

      • 如果值不相符,請參閱路由器的使用手冊,更新路由器上的值,然後確認是否可以建立 MACsec 工作階段。

      • 如果值相符,但 MACsec 工作階段仍無法在連結上運作,請繼續執行下一個步驟。

    gcloud

    1. 執行 gcloud compute interconnects get-diagnostics 指令,即可顯示有效金鑰的 CKN 值。

      如果您設定了多個鍵,系統會選取最晚開始時間不是未來的鍵做為有效鍵。Google 邊緣路由器會拒絕任何嘗試使用舊金鑰的新 MACsec 工作階段。

    2. 取得 MACsec 設定,然後記下與先前顯示的 CKN 值相對應的 CAK 值和鍵的開始時間:

      gcloud compute interconnects macsec get-config INTERCONNECT_CONNECTION_NAME
      

      INTERCONNECT_CONNECTION_NAME 替換為 Cloud Interconnect 連線的名稱。

      輸出結果會與以下內容相似,請找出 ckn

      preSharedKeys:
      - name: key1
        ckn: 0101010189abcdef...0123456789abcdef
        cak: 0123456789abcdef...0123456789abcdef
        startTime: 2023-07-01T12:12:12Z
      - name: key2
        ckn: 0202020289abcdef...0123456789abcdef
        cak: 0123456789abcdef...0123456789abcdef
        startTime: 2023-08-01T12:12:12Z
      
    3. 請確認內部部署路由器上的有效 CKN、CAK 和開始時間,與 Cloud Interconnect 專用 MACsec 顯示的值相符。執行下列其中一個步驟:

      • 如果值不相符,請參閱路由器的使用手冊,更新路由器上的值,然後確認是否可以建立 MACsec 工作階段。

      • 如果值相符,但 MACsec 工作階段仍無法在連結上運作,請繼續進行下一個步驟。

  4. 查看指標,判斷 Cloud Interconnect 連線的輸入或輸出端是否會捨棄封包。如要瞭解如何查看指標,請參閱「監控連線」一文。

    決定後續步驟時,請注意以下事項:

    • 如果 network/interconnect/link/macsec/received_errors_count 增加,表示封包因錯誤而遭到捨棄,這表示內部部署路由器和 Google 邊緣路由器之間的通訊協定不相符。檢查內部部署路由器的記錄,以便進行疑難排解。

    • 如果下列任何計數器持續增加,請與Google Cloud 支援團隊聯絡,尋求進一步協助:

      • network/interconnect/link/macsec/received_dropped_packets_count
      • network/interconnect/link/macsec/send_errors_count
      • network/interconnect/link/macsec/send_dropped_packets_count
    • 如果下列計數器都沒有增加,表示封包在內部路由器的出口處遭到捨棄。檢查內部部署路由器的記錄,以便排除問題。

      • network/interconnect/receive_errors_count
      • network/interconnect/received_unicast_packets_count
      • network/interconnect/link/macsec/received_control_packets_count
      • network/interconnect/link/macsec/received_data_packets_count
      • network/interconnect/link/macsec/received_errors_count
      • network/interconnect/link/macsec/received_dropped_packets_count

MACsec 運作正常,但發生封包遺失

您已成功啟用 Cloud Interconnect 適用的 MACsec,且 MACsec 已啟用,但仍發生封包遺失問題。

如果 MACsec 連線可正常運作,但 Cloud Interconnect 的 Link Aggregation Control Protocol (LACP) 狀態為 Detached,請確認內部部署路由器已啟用安全通道 ID (SCI)。詳情請參閱「設定內部部署路由器」。

查看指標,判斷 Cloud Interconnect 連線的輸入或輸出端是否會遺失封包。如要瞭解如何查看指標,請參閱「監控連線」。如果 Cloud Interconnect 連線未顯示任何封包錯誤或遺失,請繼續檢查 MACsec 路由器:

  • 如果 network/interconnect/link/macsec/received_errors_count 增加,則封包會因錯誤而於 Cloud Interconnect 入口連線中捨棄。這表示內部部署路由器和 Google 邊緣路由器之間的通訊協定不相符。請查看內部部署路由器的記錄,以便排除問題。

  • 如果下列任何計數器都持續增加,請與 Google Cloud支援團隊聯絡,尋求進一步協助:

    • network/interconnect/link/macsec/received_dropped_packets_count
    • network/interconnect/link/macsec/send_errors_count
    • network/interconnect/link/macsec/send_dropped_packets_count
  • 如果沒有任何下列計數器增加,表示封包是在內部部署路由器的出口處掉落。檢查地端部署系統路由器的記錄檔,以便排解問題。

    • network/interconnect/receive_errors_count
    • network/interconnect/received_unicast_packets_count
    • network/interconnect/link/macsec/received_control_packets_count
    • network/interconnect/link/macsec/received_data_packets_count
    • network/interconnect/link/macsec/received_errors_count
    • network/interconnect/link/macsec/received_dropped_packets_count

在啟用失敗開啟行為時,排解 MACsec 問題

如果您為 Cloud Interconnect 啟用 MACsec 並設定失敗時啟用行為,即使無法成功建立 MACsec 工作階段,Cloud Interconnect 連線也會繼續轉送流量。我們強烈建議您避免在正式版 Cloud Interconnect 連線上使用失敗開啟行為,以免以純文字傳輸封包。

如要判斷 MACsec 連線的設定和狀態,請執行下列操作:

  1. 如要確認 Cloud Interconnect 連線狀態,請選取下列任一選項:

    主控台

    1. 在 Google Cloud 控制台中,前往 Cloud Interconnect「Physical connections」分頁。

      前往「Physical connections」(實體連線)

    2. 選取要查看的 Cloud Interconnect 連線。

    3. 在「MACsec」分頁中,確認「MACsec 設定」顯示「已啟用,失敗時開啟」

    gcloud

    gcloud compute interconnects describe INTERCONNECT_CONNECTION_NAME
    

    INTERCONNECT_CONNECTION_NAME 替換為 Cloud Interconnect 連線的名稱。

    輸出結果會與下列內容相似,請找出 macsec failOpen 設為 true,以及 macsecEnabled 設為 true

    availableFeatures:
    - IF_MACSEC
    adminEnabled: true
    circuitInfos:
    - customerDemarcId: fake-peer-demarc-0
      googleCircuitId: LOOP-0
      googleDemarcId: fake-local-demarc-0
    creationTimestamp: '2021-10-05T03:39:33.888-07:00'
    customerName: Fake Customer
    description: <something>
    googleReferenceId: '123456789'
    id: '12345678987654321'
    interconnectAttachments:
    - https://www.googleapis.com/compute/prod/projects/my-project1/regions/us-central1/interconnectAttachments/interconnect-123456-123456789-0
    interconnectType: IT_PRIVATE
    kind: compute#interconnect
    labelFingerprint: 42WmSpB8rSM=
    linkType: LINK_TYPE_ETHERNET_10G_LR
    location: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnectLocations/cbf-zone2-65012
    macsec:
      failOpen: true
      preSharedKeys:
      - name: key3
        startTime: '2023-07-01T21:00:01.000Z'
    macsecEnabled: true
    name: INTERCONNECT_CONNECTION_NAME
    operationalStatus: OS_ACTIVE
    provisionedLinkCount: 1
    requestedFeatures:
    - IF_MACSEC
    requestedLinkCount: 1
    selfLink: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME
    selfLinkWithId: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME/12345678987654321
    state: ACTIVE
    

    在這個範例中,macsec.failopen 會顯示 truemacsecEnabled 則會顯示 true

  2. 如要檢查 Cloud Interconnect 連線的連接埠狀態、MACsec 運作狀態和有效金鑰名稱,請選取下列任一選項:

    主控台

    1. 在 Google Cloud 控制台中,前往 Cloud Interconnect「Physical connections」分頁。

      前往「Physical connections」(實體連線)

    2. 選取要查看的 Cloud Interconnect 連線。

    3. 在「連結電路資訊」中,確認「連結狀態」顯示所有連結的 「啟用」

    4. 確認「MACsec 金鑰名稱」顯示所有連結的金鑰名稱,且每個金鑰名稱都顯示「MACsec on this link is up」或「MACsec on this link is down」。

    gcloud

    gcloud compute interconnects get-diagnostics INTERCONNECT_CONNECTION_NAME \
        --project=PROJECT_NAME
    

    PROJECT_NAME 替換為您的Google Cloud 專案名稱。

    輸出結果會與下列內容相似,請找出將 bundleOperationalStatus 設為 BUNDLE_OPERATIONAL_STATUS_UP、將 state 設為 ACTIVE,以及將 macsec ckn operational 設為 false 的部分:

      bundleAggregationType: BUNDLE_AGGREGATION_TYPE_LACP
      bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP
      links:
      - circuitId: LOOP-0
        googleDemarc: fake-local-demarc-0
        lacpStatus:
          googleSystemId: '00:11:22:33:44:55'
          neighborSystemId: '55:44:33:22:11:00'
          state: ACTIVE
        macsec:
          ckn: 0101010189abcdef...0123456789abcdef
          operational: false
        operationalStatus: LINK_OPERATIONAL_STATUS_UP
        receivingOpticalPower:
          state: OK
          value: -2.49
        transmittingOpticalPower:
          state: OK
          value: -0.88
      macAddress: 00:11:22:33:44:55
    

    在這個例子中:

    • bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP 表示套件已啟用。
    • links.lacpStatus.state: ACTIVE 表示 LACP 成員連結已啟用。
    • links.macsec.operational: false 表示 MACsec 已停止運作。

    在這種情況下,由於已啟用失敗時開啟的行為,因此不會捨棄 LACP 控制封包。

    如果 links.macsec.ckn 沒有顯示值,請向Google Cloud 支援團隊尋求協助。

    gcloud compute interconnects get-diagnostics 指令會顯示有效鍵的 CKN 值。如果您設定了多個鍵,系統會選取最晚開始時間的鍵做為有效鍵。Google 邊緣路由器會拒絕任何嘗試使用舊版金鑰的新 MACsec 工作階段。

  3. 如要取得 MACsec 設定,並記下與先前顯示的 CKN 值相對應的 CAK 值和索引鍵開始時間,請選取下列任一選項:

    主控台

    1. 在「MACsec」分頁中,前往「預先共用金鑰」部分,然後按一下有效金鑰旁的「查看」。如果未顯示金鑰的 CAK 和 CKN 值,請與 Google Cloud 支援團隊聯絡,尋求協助。

    2. 在「預先共用金鑰」部分,確認有效金鑰的開始時間與內部 Router 的開始時間相符。

    gcloud

    1. 執行下列指令:

      gcloud compute interconnects macsec get-config INTERCONNECT_CONNECTION_NAME
      

      輸出結果會與下列內容相似,請找出 preSharedKeys name ckn

      preSharedKeys:
      - name: key1
        ckn: 0101010189abcdef...0123456789abcdef
        cak: 0123456789abcdef...0123456789abcdef
        startTime: 2023-07-01T12:12:12Z
      - name: key2
        ckn: 0202020289abcdef...0123456789abcdef
        cak: 0123456789abcdef...0123456789abcdef
        startTime: 2023-08-01T12:12:12Z
      
    2. 確認內部部署路由器上的有效 CKN、CAK 和開始時間,與 Cloud Interconnect 專用 MACsec 顯示的值相符。

    3. 執行下列其中一個步驟:

      • 如果值不相符,請參閱路由器的使用手冊,更新路由器上的值,然後確認是否可以建立 MACsec。

      • 如果值相符,但 MACsec 工作階段仍無法在連結上運作,請繼續進行下一個步驟。

  4. 查看指標,觀察 Cloud Interconnect 連線的封包計數器。如要進一步瞭解如何查看指標,請參閱「監控連線」。

    啟用 MACsec 故障開啟行為後,系統會遞增下列計數器:

    • network/interconnect/sent_unicast_packets_count
    • network/interconnect/received_unicast_packets_count

    啟用 MACsec 失敗開啟行為後,下列計數器不會遞增:

    • network/interconnect/link/macsec/received_control_packets_count
    • network/interconnect/link/macsec/received_data_packets_count
    • network/interconnect/link/macsec/sent_control_packets_count
    • network/interconnect/link/macsec/sent_data_packets_count

    決定後續步驟時,請注意以下事項:

    • 如果 network/interconnect/link/macsec/received_errors_count 增加,表示封包因錯誤而遭到捨棄,這表示內部部署路由器和 Google 邊緣路由器之間的通訊協定不相符。檢查內部部署路由器的記錄,以便進行疑難排解。

    • 如果下列任何計數器持續增加,請與Google Cloud 支援團隊聯絡,尋求進一步協助:

      • network/interconnect/link/macsec/received_dropped_packets_count
      • network/interconnect/link/macsec/send_errors_count
      • network/interconnect/link/macsec/send_dropped_packets_count
    • 如果下列計數器都沒有增加,表示封包在內部路由器的出口處遭到捨棄。檢查內部部署路由器的記錄,以便排除問題。

      • network/interconnect/receive_errors_count
      • network/interconnect/received_unicast_packets_count
      • network/interconnect/link/macsec/received_errors_count
      • network/interconnect/link/macsec/received_dropped_packets_count

後續步驟