יצירת חיבורי HA VPN בין Google Cloud לבין AWS

במדריך הזה נסביר איך ליצור חיבורי VPN עם זמינות גבוהה בין Google Cloud לבין Amazon Web Services ‏ (AWS) כדי לאפשר תקשורת ישירה בין רשתות VPC בשתי פלטפורמות הענן.

המדריך הזה מבוסס על ההנחה שאתם מכירים את המושגים הבסיסיים של רשתות ענן וירטואלי פרטי (VPC), פרוטוקול Border Gateway ‏ (BGP), רשתות וירטואליות פרטיות (VPN) ומנהרות IPsec.

‫Google Cloud מספק שירות HA VPN בזמינות גבוהה, כדי לחבר את רשת ה-VPC לסביבות שפועלות מחוץ ל-Google Cloud, כמו בסביבה מקומית או ב-AWS, דרך חיבור IPsec VPN. רמת זמינות השירות ב-HA VPN עומדת על 99.99% כשמגדירים אותו לפי השיטות המומלצות של Google. מידע נוסף מופיע במאמר הסכם רמת השירות (SLA) של Cloud VPN.

סקירה כללית של הארכיטקטורה

הארכיטקטורה שמתוארת בדף הזה כוללת את הרכיבים הבאים:

  • ‫Cloud Router: שירות מנוהל ומבוזר לחלוטין Google Cloud לניתוב דינמי באמצעות BGP ברשתות VPC.
  • שער HA VPN: שער VPN שמנוהל על ידי Google ופועל ב- Google Cloud. כל שער HA VPN הוא משאב אזורי עם שני ממשקים, ולכל ממשק יש כתובת IP חיצונית משלו: ממשק 0 וממשק 1.
  • מנהרות VPN: חיבורים משער HA VPN לשער VPN מקביל ב-AWS, שדרכם עוברת תנועה מוצפנת.
  • שער VPN שכן: שתי נקודות קצה של AWS site-to-site VPN, שיכולות להיות משער וירטואלי פרטי של AWS או משער מעבר של AWS. מידע נוסף זמין במאמר What is AWS Site-to-Site VPN?‎

כל אחד מהחיבורים לשער ה-VPN השכן מגיע עם שתי מנהרות שמוגדרות מראש כך שיצביעו לשער לקוח יחיד, שבמקרה הזה הואGoogle Cloud ממשק HA VPN. במקרה כזה, מספר המנהרות המינימלי שצריך כדי לעמוד בהסכם רמת השירות (SLA) של 99.99% זמינות שירות הוא ארבע.

אפשרויות הניתוב והרוחב פס המשולב במנהרות ה-VPN משתנים בהתאם לאפשרות ה-VPN של קישוריות מאתר לאתר שבה נעשה שימוש בצד של AWS:

התרשים הבא מציג את הארכיטקטורה.

סקירה כללית של הארכיטקטורה.

מטרות

  • יצירת רשת VPC ב- Google Cloud.
  • יוצרים שער HA VPN ו-Cloud Router ב-Google Cloud.
  • יוצרים שערי לקוחות ב-AWS.
  • יצירת חיבור דרך VPN עם ניתוב דינמי ב-AWS.
  • יוצרים שער VPN חיצוני ומנהרות VPN ב- Google Cloud.
  • אימות ובדיקה של חיבור ה-VPN בין רשתות VPC ב-Google Cloud וב-AWS.
  • משתמשים ב-Cloud Location Finder כדי לזהות את האזורים הקרובים ביותר Google Cloud.

דוגמה למודול Terraform

אפשר להשתמש במודול gcp-to-aws-ha-vpn-terraform-module כדי להקצות HA VPN בין Google Cloud לבין AWS.

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloudשחלים עליהם חיובים, כולל הרכיבים הבאים:

כדי להעריך את העלויות של הרכיבים ב- Google Cloud , אתם יכולים להשתמש במחשבון העלויות שלGoogle Cloud .

במדריך הזה משתמשים ברכיבים של Amazon Web Services, והשימוש בהם כרוך בתשלום:

  • AWS Transit Gateway
  • AWS Site-to-Site VPN

כדי להעריך את העלויות של רכיבי AWS, אתם יכולים להשתמש במחשבון העלויות של AWS.

לפני שמתחילים

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  3. מפעילים את Compute Engine API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  4. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

  5. מוודאים שיש לכם את התפקידים הניהוליים הנדרשים כדי להגדיר רכיבי רשת:

    • אדמין רשתות: compute.networkAdmin
    • אדמין לענייני אבטחה: compute.securityAdmin
    • אדמין של Compute: compute.admin

    מידע נוסף על מטרות התפקידים האלה מופיע במאמר תפקידי IAM לפונקציות של משימות שקשורות ל-Networking.

יצירת שער HA VPN ו-Cloud Router ב- Google Cloud

בקטע הזה, יוצרים רשת VPC, שער HA VPN ו-Cloud Router ב- Google Cloud.

  1. ב-Cloud Shell, מוודאים שאתם עובדים בGoogle Cloud פרויקט שיצרתם או בחרתם.

    gcloud config set project YOUR_PROJECT_ID
    
    export PROJECT_ID=`gcloud config list --format="value(core.project)"`

    מחליפים את YOUR_PROJECT_ID במזהה הפרויקט ב-Google Cloud .

  2. כדי ליצור רשת VPC בהתאמה אישית עם רשת משנה אחת, משתמשים בפקודה gcloud compute networks create:

    gcloud compute networks create NETWORK \
        --subnet-mode SUBNET_MODE \
        --bgp-routing-mode BGP_ROUTING_MODE

    מחליפים את מה שכתוב בשדות הבאים:

    לדוגמה, הפקודה הבאה יוצרת רשת VPC בהתאמה אישית בשם gc-vpc עם רשת משנה אחת:

    gcloud compute networks create gc-vpc \
        --subnet-mode custom \
        --bgp-routing-mode global
    
  3. כדי ליצור רשת משנה אחת לאירוח המכונות הווירטואליות של הבדיקה, משתמשים בפקודה gcloud compute networks subnets create:

    gcloud compute networks subnets create SUBNET_NAME \
        --network NETWORK \
        --region SUBNET_REGION \
        --range IP_ADDRESS_RANGE

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SUBNET_NAME: שם רשת המשנה
    • ‫SUBNET_REGION: האזור שבו יוצרים את רשת המשנה
    • ‫IP_ADDRESS_RANGE: טווח כתובות ה-IP של רשת המשנה

      לדוגמה, הפקודה הבאה יוצרת רשת משנה בשם subnet-east4 ברשת ה-VPC‏ gc-vpc.

    gcloud compute networks subnets create subnet-east4  \
        --network gc-vpc \
        --region us-east4 \
        --range 10.1.1.0/24
    
  4. כדי ליצור שער HA VPN, משתמשים בפקודה gcloud compute vpn-gateways create:

    gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \
        --network NETWORK \
        --region REGION

    מחליפים את HA_VPN_GATEWAY_NAME בשם של שער HA VPN.

  5. כדי ליצור Cloud Router, משתמשים בפקודה gcloud compute routers create:

    gcloud compute routers create ROUTER_NAME \
        --region REGION \
        --network NETWORK \
        --asn GOOGLE_ASN \
        --advertisement-mode custom \
        --set-advertisement-groups all_subnets

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ROUTER_NAME: השם של Cloud Router
    • ‫GOOGLE_ASN: מספר ASN (מספר מערכת אוטונומית) פרטי של Cloud Router שאתם יוצרים. זה יכול להיות כל מספר ASN פרטי בטווח 64512-65534 או 4200000000-4294967294 שעדיין לא נמצא בשימוש כמספר ASN של עמית באותו אזור ובאותה רשת.

    לדוגמה, הפקודה הבאה יוצרת Cloud Router בשם cloud-router.

    gcloud compute routers create cloud-router \
        --region us-east4 \
        --network gc-vpc \
        --asn 65534 \
        --advertisement-mode custom \
        --set-advertisement-groups all_subnets
    

כדי ליצור שער VPN עם שני ממשקים, צריך לרשום את כתובות ה-IP החיצוניות. תצטרכו את הכתובות האלה כשמגדירים את הסביבה בצד של AWS.

יצירת שערים וחיבורי VPN ב-AWS

בקטע הזה, יוצרים שערי לקוחות, שער יעד וחיבורי VPN עם ניתוב דינמי.

מריצים פקודות של AWS באמצעות ממשק שורת הפקודה של AWS.

  1. כדי ליצור שני שערים של לקוחות באמצעות פקודת AWS הבאה, משתמשים בפקודת ה-CLI של AWS‏ create-customer-gateway:

    aws ec2 create-customer-gateway --type ipsec.1 --public-ip INTERFACE_0_IP_ADDRESS --bgp-asn GOOGLE_ASN
    
    aws ec2 create-customer-gateway --type ipsec.1 --public-ip INTERFACE_1_IP_ADDRESS --bgp-asn GOOGLE_ASN

    מחליפים את INTERFACE_0_IP_ADDRESS ואת INTERFACE_1_IP_ADDRESS בכתובות ה-IP החיצוניות מהשלב האחרון בקטע הקודם.

  2. כדי ליצור שער יעד ולצרף אותו ל-Amazon VPC:

    שער היעד יכול להיות שער וירטואלי פרטי או שער מעבר. מידע נוסף זמין במאמר בנושא יצירת שער יעד.

    שער וירטואלי פרטי

    1. יוצרים שער וירטואלי פרטי עם ASN ספציפי בצד של AWS באמצעות פקודת ה-CLI של AWS‏ create-vpn-gateway:

      aws ec2 create-vpn-gateway --type ipsec.1 --amazon-side-asn AWS_SIDE_ASN

      מחליפים את AWS_SIDE_ASN ב-ASN של AWS.

      הפקודה אמורה להיראות כמו בדוגמה הבאה:

      aws ec2 create-vpn-gateway --type ipsec.1 --amazon-side-asn 65001
      
    2. מצרפים את שער הענן הווירטואלי הפרטי לרשת ה-VPC באמצעות הפקודה attach-vpn-gateway של AWS CLI:

      aws ec2 attach-vpn-gateway --vpn-gateway-id VPN_GATEWAY_ID --vpc-id VPC_ID

    שער מעבר

    1. יוצרים שער מעבר באמצעות פקודת AWS CLI‏ create-transit-gateway:

      aws ec2 create-transit-gateway --description TRANSIT_GATEWAY_DESCRIPTION \
          --options=AmazonSideAsn=65001,AutoAcceptSharedAttachments=enable,DefaultRouteTableAssociation=enable,DefaultRouteTablePropagation=enable,VpnEcmpSupport=enable,DnsSupport=enable

      מחליפים את TRANSIT_GATEWAY_DESCRIPTION בתיאור של שער המעבר.

    2. מצרפים את רשת ה-VPC ל-transit gateway באמצעות הפקודה create-transit-gateway-vpc-attachment AWS CLI:

      aws ec2 create-transit-gateway-vpc-attachment \
          --transit-gateway-id TRANSIT_GATEWAY_ID \
          --vpc-id VPC_ID \
          --subnet-ids "SUBNET_ID"

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫TRANSIT_GATEWAY_ID: המזהה של שער המעבר
      • ‫VPC_ID: המזהה של ה-VPC
      • ‫SUBNET_ID: המזהים של רשתות המשנה (לפחות אחת)
  3. כדי ליצור חיבור דרך VPN עם ניתוב דינמי:

    השיטה ליצירת חיבור דרך VPN עם ניתוב דינמי משתנה בהתאם לסוג של שער היעד – שער וירטואלי פרטי או שער מעבר. מידע נוסף זמין במאמר יצירת חיבור דרך VPN.

    שער וירטואלי פרטי

    יוצרים חיבור דרך VPN עם ניתוב דינמי בין שער וירטואלי פרטי לבין שערי לקוחות, ומחילים תגים על חיבור דרך ה-VPN:

        aws ec2 create-vpn-connection \
            --type ipsec.1 \
            --customer-gateway-id CUSTOMER_GATEWAY_1 \
            --vpn-gateway-id VPN_GATEWAY_ID \
            --options TunnelOptions='[{TunnelInsideCidr=AWS_T1_IP,PreSharedKey=SHARED_SECRET_1},{TunnelInsideCidr=AWS_T2_IP,PreSharedKey=SHARED_SECRET_2}]'
    
        aws ec2 create-vpn-connection \
            --type ipsec.1 \
            --customer-gateway-id CUSTOMER_GATEWAY_2 \
            --vpn-gateway-id VPN_GATEWAY_ID \
            --options TunnelOptions='[{TunnelInsideCidr=AWS_T3_IP,PreSharedKey=SHARED_SECRET_3},{TunnelInsideCidr=AWS_T4_IP,PreSharedKey=SHARED_SECRET_4}]'

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CUSTOMER_GATEWAY_1: שער Cloud VPN, ממשק 0
    • ‫CUSTOMER_GATEWAY_2: שער Google Cloud VPN, ממשק 1
    • ‫AWS_T1_IP: כתובת ה-IP הפנימית של השער הווירטואלי הפרטי לחיבור 1, מנהרה 1
    • ‫AWS_T2_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 2
    • ‫AWS_T3_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 1
    • ‫AWS_T4_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 2
    • ‫SHARED_SECRET_1: מפתח משותף מראש לחיבור 1, מנהרה 1
    • ‫SHARED_SECRET_2: מפתח משותף מראש לחיבור 1, מנהרה 2
    • ‫SHARED_SECRET_3: מפתח משותף מראש לחיבור 2, מנהרה 1
    • ‫SHARED_SECRET_4: מפתח משותף מראש לחיבור 2, מנהרה 2

    שער מעבר

    יוצרים חיבור דרך VPN עם ניתוב דינמי בין שער המעבר לשערי הלקוח:

    aws ec2 create-vpn-connection \
        --type ipsec.1 \
        --customer-gateway-id CUSTOMER_GATEWAY_1 \
        --transit-gateway-id TRANSIT_GATEWAY_ID \
        --options TunnelOptions='[{TunnelInsideCidr=AWS_T1_IP,PreSharedKey=SHARED_SECRET_1},{TunnelInsideCidr=AWS_T2_IP,PreSharedKey=SHARED_SECRET_2}]'
    
    aws ec2 create-vpn-connection \
        --type ipsec.1 \
        --customer-gateway-id CUSTOMER_GATEWAY_2 \
        --transit-gateway-id TRANSIT_GATEWAY_ID \
        --options TunnelOptions='[{TunnelInsideCidr=AWS_T3_IP,PreSharedKey=SHARED_SECRET_3},{TunnelInsideCidr=AWS_T4_IP,PreSharedKey=SHARED_SECRET_4}]'

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CUSTOMER_GATEWAY_1: שער Cloud VPN, ממשק 0
    • ‫CUSTOMER_GATEWAY_2: שער Google Cloud VPN, ממשק 1
    • ‫TRANSIT_GATEWAY_ID: המזהה של שער המעבר שמשויך לחיבור דרך VPN
    • ‫AWS_T1_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 1
    • ‫AWS_T2_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 2
    • ‫AWS_T3_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 1
    • ‫AWS_T4_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 2
    • ‫SHARED_SECRET_1: מפתח משותף מראש לחיבור 1, מנהרה 1
    • ‫SHARED_SECRET_2: מפתח משותף מראש לחיבור 1, מנהרה 2
    • ‫SHARED_SECRET_3: מפתח משותף מראש לחיבור 2, מנהרה 1
    • ‫SHARED_SECRET_4: מפתח משותף מראש לחיבור 2, מנהרה 2
    • CUSTOMER_GATEWAY_1: שער Google Cloud VPN, ממשק 0
    • ‫CUSTOMER_GATEWAY_2: שער Google Cloud VPN, ממשק 1
    • ‫TRANSIT_GATEWAY_ID: המזהה של שער המעבר שמשויך לחיבור דרך VPN
    • ‫AWS_T1_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 1
    • ‫AWS_T2_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 2
    • ‫AWS_T3_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 1
    • ‫AWS_T4_IP: כתובת ה-IP הפנימית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 2
    • ‫SHARED_SECRET_1: מפתח משותף מראש לחיבור 1, מנהרה 1
    • ‫SHARED_SECRET_2: מפתח משותף מראש לחיבור 1, מנהרה 2
    • ‫SHARED_SECRET_3: מפתח משותף מראש לחיבור 2, מנהרה 1
    • ‫SHARED_SECRET_4: מפתח משותף מראש לחיבור 2, מנהרה 2

    ‫AWS שומרת טווחי CIDR מסוימים, ולכן אי אפשר להשתמש בערכים בטווחי ה-CIDR האלה ככתובות IP פנימיות (AWS_T1_IP,‏ AWS_T2_IP, ‏ AWS_T3_IP,‏ AWS_T4_IP). למידע על בלוקים של CIDR ש-AWS שומרת, אפשר לעיין במאמר אפשרויות של מנהרות לחיבור VPN בין אתרים.

    יוצרים ארבעה מנהרות Google Cloud באמצעות הפקודות האלה.

  4. מורידים את קובץ התצורה של שני חיבורי דרך VPN.

    בשלבים הבאים, משתמשים בערכים מקובץ התצורה שהורדתם כדי ליצור ולהגדיר משאבים בצד Google Cloud.

יצירת מנהרות VPN וממשקי Cloud Router ב- Google Cloud

בקטע הזה, משתמשים במידע מחיבור ה-VPN של AWS שיצרתם בקטע הקודם כדי ליצור שער VPN חיצוני, מנהרות VPN וממשקי Cloud Router ב- Google Cloud.

כשמגדירים מנהרות Cloud VPN ל-AWS, צריך להשתמש בפרוטוקול IKEv2 ולבחור רק קבוצה אחת של צפני IKE כדי להבטיח יצירה מוצלחת של המנהרה. לדוגמה, בוחרים אלגוריתם הצפנה, אלגוריתם שלמות וקבוצת Diffie-Hellman ‏ (DH) אחד לשלב 1 ואחד לשלב 2. קבוצות הטרנספורמציה שמוגדרות כברירת מחדל ב-AWS יוצרות מטען ייעודי (payload) גדול של שיוך אבטחה (SA), שעלול לגרום לפרגמנטציה של כתובות IP בחבילות IKE. ‫Cloud VPN לא תומך בחבילות IKE מקוטעות.

  1. ב-Cloud Shell, יוצרים שער VPN חיצוני עם ארבעה ממשקים לכתובות ה-IP החיצוניות של AWS.

    לפני שיוצרים את שער ה-VPN החיצוני, מוודאים שכתובות ה-IP החיצוניות של AWS תואמות לערכים בקובץ התצורה שהורדתם. אי אפשר לשנות את כתובות ה-IP האלה אחרי שיוצרים את שער ה-VPN החיצוני. אם הכתובות לא זהות, אי אפשר ליצור את החיבור למנהרת ה-HA VPN.

    ‫
    gcloud compute external-vpn-gateways create PEER_GATEWAY_NAME --interfaces \
      0=AWS_GW_IP_1,1=AWS_GW_IP_2,2=AWS_GW_IP_3,3=AWS_GW_IP_4

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫AWS_GW_IP_1: כתובת ה-IP החיצונית של שער וירטואלי פרטי לחיבור 1, מנהרה 1
    • ‫AWS_GW_IP_2: כתובת ה-IP החיצונית של שער הרשת הפרטית הווירטואלית לחיבור 1, מנהרה 2
    • ‫AWS_GW_IP_3: כתובת ה-IP החיצונית של שער וירטואלי פרטי לחיבור 2, מנהרה 1
    • ‫AWS_GW_IP_4: כתובת ה-IP החיצונית של שער הרשת הפרטית הווירטואלית לחיבור 2, מנהרה 2
  2. יוצרים ארבע מנהרות VPN.

    • מנהרה 1:

      gcloud compute vpn-tunnels create tunnel-1 \
          --peer-external-gateway PEER_GATEWAY_NAME \
          --peer-external-gateway-interface 0 \
          --region REGION \
          --ike-version 2 \
          --shared-secret SHARED_SECRET_1 \
          --router ROUTER_NAME \
          --vpn-gateway HA_VPN_GATEWAY_NAME \
          --interface 0
    • מנהרה 2:

      gcloud compute vpn-tunnels create tunnel-2 \
          --peer-external-gateway PEER_GATEWAY_NAME \
          --peer-external-gateway-interface 1 \
          --region REGION \
          --ike-version 2 \
          --shared-secret SHARED_SECRET_2 \
          --router ROUTER_NAME \
          --vpn-gateway HA_VPN_GATEWAY_NAME \
          --interface 0
    • מנהרה 3:

      gcloud compute vpn-tunnels create tunnel-3 \
          --peer-external-gateway PEER_GATEWAY_NAME \
          --peer-external-gateway-interface 2 \
          --region REGION \
          --ike-version 2 \
          --shared-secret SHARED_SECRET_3 \
          --router ROUTER_NAME \
          --vpn-gateway HA_VPN_GATEWAY_NAME \
          --interface 1
    • מנהרה 4:

      gcloud compute vpn-tunnels create tunnel-4 \
          --peer-external-gateway PEER_GATEWAY_NAME \
          --peer-external-gateway-interface 3 \
          --region REGION \
          --ike-version 2 \
          --shared-secret SHARED_SECRET_4 \
          --router ROUTER_NAME \
          --vpn-gateway HA_VPN_GATEWAY_NAME \
          --interface 1

      מחליפים את מה שכתוב בשדות הבאים:

  3. יוצרים ארבעה ממשקי Cloud Router.

    בפקודות הבאות, מחליפים כל GOOGLE_BGP_IP_TUNNELplaceholder בכתובת ה-IP הפנימית של המנהרה בצד Google Cloud . אפשר למצוא את הערכים בקובצי התצורה של AWS VPN בתור כתובת שער הלקוח של כל מנהרה. כל אחת מהכתובות האלה צריכה להיות בטווח ה-CIDR‏ /30 בטווח הרשת 169.254.0.0/16.

    • ממשק 1 של Cloud Router:

      gcloud compute routers add-interface ROUTER_NAME \
          --interface-name int-1 \
          --vpn-tunnel tunnel-1 \
          --ip-address GOOGLE_BGP_IP_TUNNEL_1 \
          --mask-length 30 \
          --region REGION
    • ממשק Cloud Router 2:

      gcloud compute routers add-interface ROUTER_NAME \
          --interface-name int-2 \
          --vpn-tunnel tunnel-2 \
          --ip-address GOOGLE_BGP_IP_TUNNEL_2 \
          --mask-length 30 \
          --region REGION
    • ממשק Cloud Router‏ 3:

      gcloud compute routers add-interface ROUTER_NAME \
          --interface-name int-3 \
          --vpn-tunnel tunnel-3 \
          --ip-address GOOGLE_BGP_IP_TUNNEL_3 \
          --mask-length 30 \
          --region REGION
    • ממשק 4 של Cloud Router:

      gcloud compute routers add-interface ROUTER_NAME \
          --interface-name int-4 \
          --vpn-tunnel tunnel-4 \
          --ip-address GOOGLE_BGP_IP_TUNNEL_4 \
          --mask-length 30 \
          --region REGION
  4. מוסיפים רשתות שכנות של BGP.

    בפקודות הבאות, מחליפים את PEER_ASN ב-ASN של הצד של AWS בסשן ה-BGP.

    • חיבור 1 של AWS, מנהרה 1:

      gcloud compute routers add-bgp-peer ROUTER_NAME \
          --peer-name aws-conn1-tunn1 \
          --peer-asn PEER_ASN \
          --interface int-1 \
          --peer-ip-address AWS_T1_IP \
          --region REGION
    • חיבור 1 של AWS, מנהרה 2:

      gcloud compute routers add-bgp-peer ROUTER_NAME \
          --peer-name aws-conn1-tunn2 \
          --peer-asn PEER_ASN \
          --interface int-2 \
          --peer-ip-address AWS_T2_IP \
          --region REGION
    • חיבור AWS 2, מנהרה 1:

      gcloud compute routers add-bgp-peer ROUTER_NAME \
          --peer-name aws-conn2-tunn1 \
          --peer-asn PEER_ASN \
          --interface int-3 \
          --peer-ip-address AWS_T3_IP \
          --region REGION
    • חיבור 2 של AWS, מנהרה 2:

      gcloud compute routers add-bgp-peer ROUTER_NAME \
          --peer-name aws-conn2-tunn2 \
          --peer-asn PEER_ASN \
          --interface int-4 \
          --peer-ip-address AWS_T4_IP \
          --region REGION

אימות ההגדרה

  1. ב-Cloud Shell, מאמתים את הסטטוס של Cloud Router:

    gcloud compute routers get-status ROUTER_NAME \
        --region REGION \
        --format='flattened(result.bgpPeerStatus[].name, result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'

    הפלט אמור להיראות כך:

    result.bgpPeerStatus[].peerIpAddress)'
    result.bgpPeerStatus[0].ipAddress:     169.254.171.18
    result.bgpPeerStatus[0].name:          aws-conn1-tunn1
    result.bgpPeerStatus[0].peerIpAddress: 169.254.171.17
    result.bgpPeerStatus[1].ipAddress:     169.254.156.154
    result.bgpPeerStatus[1].name:          aws-conn1-tunn2
    result.bgpPeerStatus[1].peerIpAddress: 169.254.156.153
    result.bgpPeerStatus[2].ipAddress:     169.254.123.38
    result.bgpPeerStatus[2].name:          aws-conn2-tunn1
    result.bgpPeerStatus[2].peerIpAddress: 169.254.123.37
    result.bgpPeerStatus[3].ipAddress:     169.254.48.186
    result.bgpPeerStatus[3].name:          aws-conn2-tunn2
    result.bgpPeerStatus[3].peerIpAddress: 169.254.48.185
    
  2. רשימה של כל המנהרות:

    gcloud compute vpn-tunnels list

    הפלט אמור להיראות כך:

    NAME      REGION    GATEWAY    PEER_ADDRESS
    tunnel-1  us-east4  ha-vpn-gw  34.205.x.x
    tunnel-2  us-east4  ha-vpn-gw  52.203.x.x
    tunnel-3  us-east4  ha-vpn-gw  3.208.x.x
    tunnel-4  us-east4  ha-vpn-gw  52.204.x.x
    
  3. בודקים את סטטוס המנהרה:

    gcloud compute vpn-tunnels describe tunnel-1 \
         --region REGION \
         --format='flattened(status,detailedStatus)'

    הפלט אמור להיראות כך:

    detailed_status: Tunnel is up and running.
    status:          ESTABLISHED
    
  4. הצגת רשימה של מסלולים דינמיים שנלמדו על ידי Cloud Router:

    gcloud compute routers get-status ROUTER_NAME \
        --region REGION \
        --format="flattened(result.bestRoutes)"

    הפלט אמור להיראות כך:

    result.bestRoutes[0].creationTimestamp: 2021-01-19T20:42:07.366-08:00
    result.bestRoutes[0].destRange:         10.2.2.0/24
    result.bestRoutes[0].kind:              compute#route
    result.bestRoutes[0].nextHopIp:         169.254.171.17
    result.bestRoutes[0].priority:          100
    result.bestRoutes[1].creationTimestamp: 2021-01-19T20:42:07.366-08:00
    result.bestRoutes[1].destRange:         10.2.2.0/24
    result.bestRoutes[1].kind:              compute#route
    result.bestRoutes[1].nextHopIp:         169.254.156.153
    result.bestRoutes[1].priority:          100
    result.bestRoutes[2].creationTimestamp: 2021-01-19T20:56:26.588-08:00
    result.bestRoutes[2].destRange:         10.2.2.0/24
    result.bestRoutes[2].kind:              compute#route
    result.bestRoutes[2].nextHopIp:         169.254.123.37
    result.bestRoutes[2].priority:          100
    result.bestRoutes[3].creationTimestamp: 2021-01-19T20:56:26.588-08:00
    result.bestRoutes[3].destRange:         10.2.2.0/24
    result.bestRoutes[3].kind:              compute#route
    result.bestRoutes[3].nextHopIp:         169.254.48.185
    result.bestRoutes[3].priority:          100
    

בדיקת החיבור דרך VPN

  1. יוצרים מכונות וירטואליות לבדיקה בכל צד של המנהרות כדי לבדוק בקשות פינג.

    מוודאים שיש לכם כללים של חומת אש ב-VPC שמאפשרים תעבורת נתונים מסוג ICMP.

  2. בודקים את החיבור באמצעות הפקודה ping.

    1. אם הבדיקה של ping נכשלת, צריך לבדוק את היומנים ב- Google Cloud ואת היומנים של AWS קישוריות מאתר לאתר VPN. הודעות השגיאה ביומנים יכולות לעזור לכם לזהות את הבעיה. כדי ללמוד איך לפתור בעיות בחיבור דרך VPN, אפשר לעיין במקורות המידע הבאים:
  3. כדי למדוד את רוחב הפס בין מכונות הבדיקה, משתמשים ב-iperf.

    • בצד השרת:

      iperf3 -s
    • צד הלקוח:

      iperf3 -c SERVER_IP_ADDRESS -P NUMBER_OF_PARALLEL_SESSIONS

הסרת המשאבים

מוחקים את המשאבים של Google Cloud ו-AWS שיצרתם במהלך המדריך הזה.

מחיקת הפרויקט Google Cloud

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת משאבים ב-AWS

  1. מחיקת חיבור VPN בין אתרים
  2. מחיקת שער המעבר
  3. סגירת מכונות של Amazon EC2

המאמרים הבאים