הגדרת העברת פרוטוקול

במסמך הזה מוסבר איך להגדיר העברת פרוטוקולים פנימית וחיצונית. לפני שמגדירים העברת פרוטוקולים, מומלץ לקרוא את המאמר סקירה כללית על העברת פרוטוקולים.

הגדרת העברת פרוטוקול חיצוני

בקטע הזה מוסבר איך להגדיר העברת פרוטוקול חיצונית באמצעות כלל העברה להעברת תעבורת TCP למופע יעד יחיד. יש הוראות נפרדות לתנועה ב-IPv4 בלבד, לתנועה ב-dual-stack ולתנועה ב-IPv6 בלבד.

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

IPv4 בלבד

לצורך פשטות, בדוגמה הזו נעשה שימוש ברשתות וב-subnets שמוגדרים כברירת מחדל.

  1. יוצרים כלל חומת אש שמאפשר לתנועה חיצונית להגיע למופע היעד.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
        --target-tags=allow-ipv4-ext \
        --allow=tcp:80 \
        --source-ranges=0.0.0.0/0
    
  2. יוצרים מכונה וירטואלית. בדוגמה הזו, תגדירו שרת Apache במכונה הווירטואלית.

    gcloud compute instances create VM_INSTANCE_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv4-ext \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://169.254.169.254/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  3. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם. כדי ליצור אובייקט של כלל העברה, צריך קודם ליצור מופע יעד, כי כלל ההעברה צריך להפנות למשאב יעד קיים.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --zone=ZONE
    
  4. שמירת כתובת IPv4 חיצונית סטטית.

    gcloud compute addresses create IPV4_ADDRESS \
        --region=REGION
    
  5. יוצרים את כלל ההעברה שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL \
        --region=REGION \
        --ip-protocol=TCP \
        --address=IPV4_ADDRESS \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE
    
  6. בודקים את ההגדרה.

    1. בודקים מהי כתובת ה-IP של כלל ההעברה.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
          --region=REGION
      
    2. שולחים בקשות אינטרנט למאזן העומסים באמצעות curl כדי ליצור קשר עם כתובת ה-IP שלו. מחליפים את IP_ADDRESS בכתובת ה-IP מהשלב הקודם.

      while true; do curl -m1 IP_ADDRESS; done
      

      הפלט אמור להיראות כך, כשמוצג בו השם של מכונת ה-VM של ה-Backend שמייצרת את התגובה.

      Page served from: VM_INSTANCE_NAME.
      

מערך כפול

כדי לטפל בתעבורת נתונים של IPv4 ו-IPv6, צריך רשת משנה עם תמיכה כפולה, עם מכונה וירטואלית עם תמיכה כפולה בתור קצה עורפי של מכונת היעד.

  1. יוצרים רשת VPC במצב מותאם אישית.

    gcloud compute networks create VPC_NAME \
        --subnet-mode=custom
    
  2. יוצרים תת-רשת עם שני סוגי כתובות ברשת ה-VPC.

    gcloud compute networks subnets create SUBNET_NAME \
        --network=VPC_NAME \
        --range=IPV4_ADDRESS_RANGE \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=EXTERNAL \
        --region=REGION
    

    בשדה IPV4_ADDRESS_RANGE, אפשר להזין כל טווח ראשי של IPv4 לתת-הרשת החדשה, בסימון CIDR. לדוגמה, 192.168.11.0/24. מידע נוסף זמין במאמר בנושא טווחים של רשתות משנה IPv4.

  3. יוצרים כלל חומת אש שמאפשר לתנועה חיצונית להגיע למופע היעד.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ipv6-ext \
        --allow=tcp:80 \
        --source-ranges=::/0
    
  4. יוצרים מכונה וירטואלית עם תמיכה כפולה ב-IPv4 וב-IPv6.

    gcloud compute instances create VM_INSTANCE_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV4_IPV6 \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv6-ext \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  5. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --network=VPC_NAME \
        --zone=ZONE
    
  6. שמירת כתובת IPv4 חיצונית סטטית.

    gcloud compute addresses create IPV4_ADDRESS \
       --region=REGION
    
  7. יוצרים כלל העברה של IPv4 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL \
        --region=REGION \
        --ip-protocol=TCP \
        --address=IPV4_ADDRESS \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE
    
  8. שמירת טווח של כתובות IPv6 חיצוניות סטטיות.

    gcloud compute addresses create IPV6_ADDRESS \
        --region=REGION \
        --subnet=SUBNET_NAME \
        --ip-version=IPV6 \
        --endpoint-type=NETLB
    
  9. יוצרים כלל העברה של IPv6 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL \
        --subnet=SUBNET_NAME \
        --ip-version=IPV6 \
        --region=REGION \
        --address=IPV6_ADDRESS \
        --network-tier=PREMIUM \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE \
        --ip-protocol=TCP \
        --ports=80
    
  10. בודקים את ההגדרה.

    1. מקבלים את כתובת ה-IP של כללי ההעברה.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
        --region=REGION
      
      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
        --region=REGION
      
    2. שולחים בקשות אינטרנט למאזן העומסים באמצעות curl כדי ליצור קשר עם כתובת ה-IP שלו. מחליפים את IP_ADDRESS בכתובת ה-IP מהשלב הקודם.

      לתנועת IPv4:

      while true; do curl -m1 IP_ADDRESS; done
      

      לתנועת IPv6:

      curl -6 'http://[IP_ADDRESS]:80'
      

      הפלט אמור להיראות כך, כשמוצג בו השם של מכונת ה-VM של ה-Backend שמייצרת את התגובה.

      Page served from: VM_INSTANCE_NAME.
      

IPv6 בלבד

כדי לטפל בתעבורת נתונים של IPv6 בלבד, צריך רשת משנה של IPv6 בלבד עם מכונה וירטואלית (VM) של IPv6 בלבד עבור קצה העורפי של מכונת היעד.

  1. יוצרים רשת VPC במצב מותאם אישית.

    gcloud beta compute networks create VPC_NAME \
        --subnet-mode=custom
    
  2. יוצרים רשת משנה עם IPv6 בלבד ברשת ה-VPC.

    gcloud beta compute networks subnets create SUBNET_NAME \
        --network=VPC_NAME \
        --stack-type=IPV6_ONLY \
        --ipv6-access-type=EXTERNAL \
        --region=REGION
     
  3. יוצרים כלל חומת אש שמאפשר לתנועה חיצונית להגיע למופע היעד.

    gcloud beta compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ipv6-ext \
        --allow=tcp:80 \
        --source-ranges=::/0
    
  4. יוצרים מכונה וירטואלית עם כתובת IPv6 בלבד.

    gcloud beta compute instances create VM_INSTANCE_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV6_ONLY \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv6-ext \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  5. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם.

    gcloud beta compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --network=VPC_NAME \
        --zone=ZONE
    
  6. שמירת טווח של כתובות IPv6 חיצוניות סטטיות.

    gcloud beta compute addresses create IPV6_ADDRESS \
        --region=REGION \
        --subnet=SUBNET_NAME \
        --ip-version=IPV6 \
        --endpoint-type=NETLB
    
  7. יוצרים כלל העברה של IPv6 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud beta compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL \
        --subnet=SUBNET_NAME \
        --ip-version=IPV6 \
        --region=REGION \
        --address=IPV6_ADDRESS \
        --network-tier=PREMIUM \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE \
        --ip-protocol=TCP \
        --ports=80
    
  8. בודקים את ההגדרה.

    1. משיגים את כתובת ה-IP של כלל ההעברה.

      gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
          --region=REGION
      
    2. שולחים בקשות אינטרנט למאזן העומסים באמצעות curl כדי ליצור קשר עם כתובת ה-IP שלו. מחליפים את IPV6_ADDRESS בכתובת ה-IP מהשלב הקודם.

      curl -6 'http://[IPV6_ADDRESS]:80'
      

      הפלט אמור להיראות כך, כשמוצג בו השם של מכונת ה-VM של ה-Backend שמייצרת את התגובה.

      Page served from: VM_INSTANCE_NAME.
      

הגדרת העברת פרוטוקול פנימית

בקטע הזה נסביר איך להגדיר העברת פרוטוקול פנימית באמצעות כלל העברה להעברת תעבורת TCP למופע יעד יחיד. יש הוראות נפרדות לתנועה ב-IPv4 בלבד, לתנועה ב-dual-stack ולתנועה ב-IPv6 בלבד.

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

IPv4 בלבד

כדי לפשט את הדברים, בדוגמה הזו נעשה שימוש ברשת וב-subnets שמוגדרים כברירת מחדל כדי להגדיר העברת פרוטוקולים פנימית.

  1. יוצרים כלל חומת אש שמאפשר לתנועה פנימית להגיע למופע היעד.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
        --target-tags=allow-ipv4-int \
        --allow=tcp \
        --source-ranges=0.0.0.0/0
    
  2. יוצרים כלל חומת אש שמאפשר קישוריות SSH למכונות וירטואליות עם תג הרשת allow-ssh. הכתובת הזו משמשת ליצירת חיבור SSH למכונה הווירטואלית של הלקוח.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
        --target-tags=allow-ssh \
        --allow=tcp:22 \
        --source-ranges=0.0.0.0/0
    
  3. יוצרים מכונה וירטואלית.

    gcloud compute instances create VM_INSTANCE_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv4-int \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://169.254.169.254/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  4. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם. כדי ליצור אובייקט של כלל העברה, צריך קודם ליצור מופע יעד, כי כלל ההעברה צריך להפנות למשאב יעד קיים.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --zone=ZONE
    
  5. יוצרים את כלל ההעברה שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
        --load-balancing-scheme=INTERNAL \
        --network-tier=PREMIUM \
        --region=REGION \
        --ip-protocol=TCP \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE
    
  6. יוצרים מכונה וירטואלית של לקוח לבדיקה.

    gcloud compute instances create CLIENT_VM_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh
    

    עכשיו אפשר לבדוק את ההגדרה של העברת הפרוטוקול על ידי שליחת תעבורה מהמכונה הווירטואלית של הלקוח לכתובת ה-IP של כלל ההעברה.

  7. בודקים את ההגדרה.

    1. בודקים מהי כתובת ה-IP של כלל ההעברה.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
          --region=REGION
      
    2. יוצרים חיבור SSH למכונה הווירטואלית של הלקוח.

      gcloud compute ssh CLIENT_VM_NAME \
          --zone=ZONE
      
    3. שולחים בקשות למאזן העומסים באמצעות curl כדי ליצור קשר עם כתובת ה-IP שלו.

      while true; do curl -m1 IP_ADDRESS; done
      

      הפלט אמור להיראות כך, כשמוצג בו השם של מכונת ה-VM של ה-Backend שמייצרת את התגובה.

      Page served from: VM_INSTANCE_NAME.
      

מערך כפול

כדי לטפל בתעבורת נתונים של IPv4 ו-IPv6, צריך רשת משנה עם תמיכה כפולה, עם מכונה וירטואלית עם תמיכה כפולה בתור קצה עורפי של מכונת היעד.

  1. יוצרים רשת VPC במצב מותאם אישית עם הדגל --enable-ula-internal-ipv6 כדי להגדיר טווחי IPv6 פנימיים בכל רשת משנה ברשת הזו.

    gcloud compute networks create VPC_NAME \
        --subnet-mode=custom \
        --enable-ula-internal-ipv6
    
  2. יוצרים תת-רשת עם שני סוגי כתובות ברשת ה-VPC.

    gcloud compute networks subnets create SUBNET_NAME \
        --network=VPC_NAME \
        --range=IPV4_ADDRESS_RANGE \
        --region=REGION \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=INTERNAL
    

    בשדה IPV4_ADDRESS_RANGE, אפשר להזין כל טווח ראשי של IPv4 לתת-הרשת החדשה, בסימון CIDR. לדוגמה, 192.168.11.0/24. מידע נוסף זמין במאמר בנושא טווחים של רשתות משנה IPv4.

  3. יוצרים כלל חומת אש שמאפשר לתנועה פנימית להגיע למופע היעד.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ipv6-int \
        --allow=tcp \
        --source-ranges=::/0
    
  4. יוצרים כלל חומת אש שמאפשר קישוריות SSH למכונות וירטואליות באמצעות תג הרשת allow-ssh.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ssh \
        --allow=tcp:22 \
        --source-ranges=0.0.0.0/0
    

    כלל חומת האש הזה חל על מכונה וירטואלית של לקוח (שנוצרה באחד מהשלבים הבאים) שמתחברים אליה באמצעות SSH כדי לשלוח תעבורת HTTP לכתובת ה-IP של כלל ההעברה.

  5. יוצרים מכונה וירטואלית עם תמיכה כפולה ב-IPv4 וב-IPv6.

    gcloud compute instances create VM_INSTANCE_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV4_IPV6 \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv6-int \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  6. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --network=VPC_NAME \
        --zone=ZONE
    
  7. יוצרים כלל העברה של IPv4 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
        --load-balancing-scheme=INTERNAL \
        --network-tier=PREMIUM \
        --region=REGION \
        --ip-protocol=TCP \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE
    
  8. יוצרים כלל העברה של IPv6 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
        --load-balancing-scheme=INTERNAL \
        --network-tier=PREMIUM \
        --network=VPC_NAME \
        --subnet=SUBNET_NAME \
        --region=REGION \
        --ip-protocol=TCP \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE \
        --ip-version=IPV6
    
  9. יוצרים מכונה וירטואלית של לקוח.

    gcloud compute instances create CLIENT_VM_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV4_IPV6 \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh
    
  10. בודקים את ההגדרה.

    1. משיגים את כתובת ה-IP של כלל ההעברה.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
          --region=REGION
      
      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
          --region=REGION
      
    2. יוצרים חיבור SSH למכונה הווירטואלית של הלקוח.

      gcloud compute ssh CLIENT_VM_NAME \
          --zone=ZONE
      
    3. שולחים בקשת HTTP לכתובת ה-IP של כלל ההעברה באמצעות curl.

      לתנועת IPv4:

      while true; do curl -m1 IP_ADDRESS; done
      

      לתנועת IPv6:

      curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
      

      הפלט אמור להיראות כך, כששם מכונת ה-VM של ה-Backend שמייצרת את התגובה מוצג בטקסט.

      Page served from: VM_INSTANCE_NAME.
      

IPv6 בלבד

כדי לטפל בתעבורת IPv6 בלבד, צריך רשת משנה עם IPv6 בלבד ומכונה וירטואלית עם IPv6 בלבד עבור קצה העורפי של מכונת היעד.

  1. יוצרים רשת VPC במצב מותאם אישית עם הדגל --enable-ula-internal-ipv6 כדי להגדיר טווחי IPv6 פנימיים בכל רשת משנה ברשת הזו.

    gcloud beta compute networks create VPC_NAME \
        --subnet-mode=custom \
        --enable-ula-internal-ipv6
    
  2. יוצרים רשת משנה עם IPv6 בלבד ברשת ה-VPC.

    gcloud beta compute networks subnets create SUBNET_NAME \
        --network=VPC_NAME \
        --region=REGION \
        --stack-type=IPV6_ONLY \
        --ipv6-access-type=INTERNAL
    
  3. יוצרים כלל חומת אש שמאפשר לתנועה פנימית להגיע למופע היעד.

    gcloud beta compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ipv6-int \
        --allow=tcp \
        --source-ranges=::/0
    
  4. יוצרים כלל חומת אש שמאפשר קישוריות SSH למכונות וירטואליות באמצעות תג הרשת allow-ssh.

    gcloud beta compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
        --network=VPC_NAME \
        --target-tags=allow-ssh \
        --allow=tcp:22 \
        --source-ranges=0.0.0.0/0
    

    כלל חומת האש הזה חל על מכונה וירטואלית של לקוח (שנוצרה באחד מהשלבים הבאים) שמתחברים אליה באמצעות SSH כדי לשלוח תעבורת HTTP לכתובת ה-IP של כלל ההעברה.

  5. יוצרים מכונה וירטואלית עם כתובת IPv6 בלבד.

    gcloud beta compute instances create VM_INSTANCE_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV6_ONLY \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ipv6-int \
        --metadata=startup-script='#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        sudo systemctl restart apache2'
    
  6. יוצרים מכונת יעד שמכילה את המכונה הווירטואלית שנוצרה בשלב הקודם.

    gcloud beta compute target-instances create TARGET_INSTANCE_NAME \
        --instance=VM_INSTANCE_NAME \
        --network=VPC_NAME \
        --zone=ZONE
    
  7. יוצרים כלל העברה של IPv6 שמעביר תנועת TCP למופע היעד. צריך ליצור את כלל ההעברה באותו אזור שבו נוצרה מכונת היעד.

    gcloud beta compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
        --load-balancing-scheme=INTERNAL \
        --network-tier=PREMIUM \
        --network=VPC_NAME \
        --subnet=SUBNET_NAME \
        --region=REGION \
        --ip-protocol=TCP \
        --ports=80 \
        --target-instance=TARGET_INSTANCE_NAME \
        --target-instance-zone=ZONE \
        --ip-version=IPV6
    
  8. יוצרים מכונה וירטואלית של לקוח.

    gcloud beta compute instances create CLIENT_VM_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=IPV6_ONLY \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh
    
  9. בודקים את ההגדרה.

    1. משיגים את כתובת ה-IP של כלל ההעברה.

      gcloud beta compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
          --region=REGION
      
    2. יוצרים חיבור SSH למכונה הווירטואלית של הלקוח.

      gcloud beta compute ssh CLIENT_VM_NAME \
          --zone=ZONE
      
    3. שולחים בקשת HTTP לכתובת ה-IP של כלל ההעברה באמצעות curl.

      curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
      

      הפלט אמור להיראות כך, כששם מכונת ה-VM של ה-Backend שמייצרת את התגובה מוצג בטקסט.

      Page served from: VM_INSTANCE_NAME.
      

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