פתרון בעיות ב-MACsec

בדף הזה מוסבר איך לפתור בעיות ב-MACsec ב-Cloud Interconnect.

מוצגת שגיאה ב-Cloud Interconnect כשאני מנסה ליצור מפתח חדש

אם יש לכם מפתח MACsec קיים ללא שעת התחלה ואתם מנסים ליצור מפתח חדש, Cloud Interconnect יציג שגיאה. כדי לפתור את השגיאה, מעדכנים את שעת ההתחלה של המפתח הקיים.

חיבור Cloud Interconnect שלי לא פועל ב-MACsec

הפעלתם בהצלחה את MACsec בחיבור Cloud Interconnect ובנתב המקומי, אבל במקטע MACsec מוצג שהחיבור לא פעיל בקישורי Cloud Interconnect. הסיבות האפשריות לבעיה:

  • המפתחות הפעילים בנתב המקומי ובנתבי הקצה של Google לא זהים.
  • קיימת אי התאמה בפרוטוקול MACsec בין הנתב המקומי לבין נתב הקצה של Google.

כדי לפתור את הבעיה בסטטוס של MACsec:

  1. כדי לוודא ש-MACsec מופעל בחיבור Cloud Interconnect, בוחרים באחת מהאפשרויות הבאות:

    המסוף

    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. בקטע Link circuit info, מוודאים שבקטע Link state מופיע הערך Active לכל הקישורים.

    4. מוודאים שבשם מפתח MACsec מוצג שם מפתח לכל הקישורים, ושבכל שם מפתח מוצג MACsec בקישור הזה פועל או MACsec בקישור הזה לא פועל.

    gcloud

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

    מחליפים את PROJECT_NAME בשם שלGoogle Cloud הפרויקט.

    הפלט אמור להיראות כך: מוודאים שבתא links.lacpStatus.state מוצג הערך ACTIVE, שבתא links.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, עוברים לקטע Pre-shared keys ולוחצים על View לצד המפתח הפעיל. אם ערך ה-CKN לא מוצג, אפשר לפנות לתמיכה של Google Cloud לקבלת עזרה.

    2. בקטע מפתחות משותפים מראש, מוודאים שזמן ההתחלה שמופיע עבור המפתח הפעיל זהה לזמן ההתחלה בנתב המקומי. מבצעים אחת מהפעולות הבאות:

      • אם הערכים לא זהים, צריך לעיין במדריך של הנתב כדי לעדכן את הערכים בנתב, ואז לוודא שאפשר ליצור סשן MACsec.

      • אם הערכים זהים אבל סשן ה-MACsec עדיין לא פעיל בקישור, ממשיכים לשלב הבא.

    gcloud

    1. מריצים את הפקודה gcloud compute interconnects get-diagnostics כדי להציג את ערך ה-CKN של המפתח הפעיל.

      אם הגדרתם יותר ממפתח אחד, המפתח עם זמן ההתחלה האחרון שלא חל בעתיד נבחר כמפתח הפעיל. נתבים של Google דוחים סשנים חדשים של MACsec שמנסים להשתמש במפתחות ישנים.

    2. מקבלים את הגדרת ה-MACsec ורושמים את ערך ה-CAK ואת זמן ההתחלה של המפתח שמתאימים לערך ה-CKN שהוצג קודם:

      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 וזמני ההתחלה הפעילים בנתב המקומי תואמים לערכים שמוצגים ב-MACsec for Cloud Interconnect. מבצעים אחת מהפעולות הבאות:

      • אם הערכים לא זהים, צריך לעיין במדריך של הנתב כדי לעדכן את הערכים בנתב, ואז לוודא שאפשר ליצור סשן MACsec.

      • אם הערכים זהים אבל הסשן של MACsec עדיין לא פעיל בקישור, ממשיכים לשלב הבא.

  4. בודקים את המדדים כדי לראות אם חבילות נשמטות בתעבורת נתונים נכנסת (ingress) או בתעבורת נתונים יוצאת (egress) של חיבור Cloud Interconnect. מידע על צפייה במדדים זמין במאמר מעקב אחרי חיבורים.

    כדי להחליט לגבי השלבים הבאים, צריך:

    • אם הערך של 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
    • אם אף אחד מהמונים הבאים לא גדל, סימן שהמנות נופלות בתעבורת הנתונים היוצאת (egress) של הנתב המקומי. כדי לפתור בעיות, בודקים את היומנים של הנתב המקומי.

      • 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 פועל ומתרחש אובדן מנות

הפעלתם בהצלחה את MACsec ל-Cloud Interconnect, והוא פועל, אבל אתם חווים אובדן מנות.

אם חיבור ה-MACsec פועל אבל הסטטוס של Link Aggregation Control Protocol ‏ (LACP) ב-Cloud Interconnect הוא Detached, צריך לוודא ש-Secure Channel Identifier ‏ (SCI) מופעל בנתב המקומי. מידע נוסף זמין במאמר בנושא הגדרת נתב מקומי.

בודקים את המדדים כדי לראות אם מנות נשמטות בתעבורת הנתונים הנכנסת (ingress) או בתעבורת הנתונים היוצאת (egress) של חיבור 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
  • אם אף אחד מהמונים הבאים לא גדל, סימן שהמנות נופלות בתעבורת הנתונים היוצאת (egress) של הנתב המקומי. כדי לפתור בעיות, כדאי לבדוק את היומנים של הנתב המקומי.

    • 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 כשהתנהגות fail-open מופעלת

אם מפעילים את MACsec ל-Cloud Interconnect עם התנהגות fail-open, חיבור ה-Cloud Interconnect ממשיך להעביר תעבורה גם אם אי אפשר ליצור סשן MACsec בהצלחה. מומלץ מאוד להימנע משימוש בהתנהגות של מעבר למצב פתוח בחיבורים של Cloud Interconnect בסביבת ייצור, כדי להימנע מהעברת מנות כטקסט גלוי.

כדי לקבוע את התצורה והמצב של חיבור MACsec, מבצעים את הפעולות הבאות:

  1. כדי לאמת את מצב החיבור של Cloud Interconnect, בוחרים באחת מהאפשרויות הבאות:

    המסוף

    1. במסוף Google Cloud , עוברים לכרטיסייה Cloud Interconnect Physical connections.

      כניסה אל Physical connections

    2. בוחרים את חיבור Cloud Interconnect שרוצים לראות.

    3. בכרטיסייה MACsec, מוודאים שבקטע MACsec configuration (הגדרת MACsec) מופיע הערך Enabled, fail open (מופעל, פתוח במקרה של כשל).

    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 מציג true ו-macsecEnabled מציג true.

  2. כדי לבדוק את סטטוס הפורט של חיבור Cloud Interconnect, את המצב התפעולי של MACsec ואת שם המפתח הפעיל, בוחרים באחת מהאפשרויות הבאות:

    המסוף

    1. במסוף Google Cloud , עוברים לכרטיסייה Cloud Interconnect Physical connections.

      כניסה אל Physical connections

    2. בוחרים את חיבור Cloud Interconnect שרוצים לראות.

    3. בקטע Link circuit info, מוודאים שבקטע Link state מופיע הערך Active לכל הקישורים.

    4. מוודאים שבשם מפתח MACsec מוצג שם מפתח לכל הקישורים, ושבכל שם מפתח מוצג MACsec בקישור הזה פועל או MACsec בקישור הזה לא פועל.

    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 לא פועל.

    במקרה הזה, מכיוון שהתנהגות fail-open מופעלת, מנות הבקרה של LACP לא מושמטות.

    אם לא מוצג ערך עבור links.macsec.ckn, צריך לפנות אלGoogle Cloud התמיכה לקבלת עזרה.

    הפקודה gcloud compute interconnects get-diagnostics מציגה את ערך ה-CKN של המפתח הפעיל. אם הגדרתם יותר ממפתח אחד, המפתח עם זמן ההתחלה האחרון נבחר כמפתח הפעיל. נתבי הקצה של Google דוחים כל סשן חדש של MACsec שמנסה להשתמש במפתחות הישנים.

  3. כדי לקבל את הגדרת ה-MACsec, ואז לרשום את ערך ה-CAK ואת זמן ההתחלה של המפתח שמתאימים לערך ה-CKN שהוצג קודם, בוחרים באחת מהאפשרויות הבאות:

    המסוף

    1. בכרטיסייה MACsec, עוברים לקטע Pre-shared keys ולוחצים על View לצד המפתח הפעיל. אם ערכי ה-CAK וה-CKN של המפתח לא מוצגים, צריך לפנות לתמיכה של Google Cloud לקבלת עזרה.

    2. בקטע מפתחות ששותפו מראש, מוודאים שזמן ההתחלה שמופיע עבור המפתח הפעיל תואם לזמני ההתחלה בנתב המקומי.

    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 וזמני ההתחלה הפעילים בנתב המקומי תואמים לערכים שמוצגים ב-MACsec for Cloud Interconnect.

    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 עולה, המשמעות היא שהמנות נשמטות בחיבור 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
    • אם אף אחד מהמונים הבאים לא גדל, יכול להיות שהמנות נופלות בתעבורת הנתונים היוצאת (egress) של הנתב המקומי. כדי לפתור בעיות, בודקים את היומנים של הנתב המקומי.

      • 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

מה השלב הבא?