הגדרת טווחים של כתובות IP חלופיות

במאמר הזה מוסבר איך להגדיר כתובות IP של כינוי וטווחים של כתובות IP של כינוי באמצעות מסוף Google Cloud ו-Google Cloud CLI. Google Cloud לפני שמריצים את הפקודות האלה, כדאי לעיין במאמר בנושא טווחים של כתובות IP עם כינוי.

מגבלות

תת-רשת

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

מופע ב-VM

  • טווחים של כתובות IP של כינויים נתמכים בכל ממשקי הרשת של המכונות הווירטואליות (VM). הניתוב מוגדר באופן אוטומטי לטווחים של כתובות IP של כינויים בממשק הרשת הראשי, אבל לא בממשקים משניים. אם יש לכם כמה ממשקי רשת, אתם צריכים להגדיר ניתוב מדיניות לממשקים הנוספים. דוגמה לאופן הביצוע מופיעה במדריך הבא: הגדרת ניתוב לממשק רשת נוסף.
  • אפשר להוסיף או למחוק טווחי כתובות IP של כינויים, אבל אי אפשר לעדכן אותם.
  • אם מסירים טווח של כתובות IP של כינוי ממכונה וירטואלית אחת ומקצים אותו למכונה וירטואלית אחרת, יכול להיות שיחלפו עד דקה עד שההעברה תושלם.
  • אין תמיכה בתגי מקור של חומת אש לכתובות IP של כינויים. המשמעות היא שכאשר מגדירים תגי מקור בכללי חומת האש, תגי המקור תואמים לכתובת ה-IP הראשית של המכונה הווירטואלית, אבל לא לכתובות ה-IP של הכינויים. משתמשים בטווחים של כתובות מקור כדי לאפשר או לחסום תעבורת נתונים נכנסת (ingress) מכתובות IP של כינוי.
  • מערכת DNS פנימית מחזירה את כתובת ה-IP הראשית של מכונה וירטואלית לפי השם שלה. שמות נוספים לכתובות IP חלופיות לא מוגדרים באופן אוטומטי, אבל אפשר להוסיף אותם באופן ידני.

רשת VPC

  • הוספה או הסרה של מספר גדול של טווחים של כתובות IP של כינויים בו-זמנית יכולה להימשך זמן רב. לדוגמה, יכול להיות שיחלפו עד 10 דקות עד ש-7,000 טווחי כתובות IP של כינויים יתווספו או יימחקו.
  • אי אפשר למחוק רשתות VPC במצב אוטומטי אם יש טווחי רשתות משנה משניים.
  • בניתוב סטטי, כתובת ה-IP של הניתוב הבא חייבת להיות כתובת ה-IP הראשית של המכונה הווירטואלית. אין תמיכה בכתובות IP של כינויים ככתובות IP של הנתב הבא.
  • אין תמיכה בכתובות IPv6.
  • יש תמיכה בטווחים של כתובות IP של כינויים רק ברשתות VPC, ולא ברשתות מדור קודם. כדי לקבוע את סוג הרשת, מציגים את רשימת הרשתות. לרשתות VPC יש מצב של custom או auto. לרשתות מדור קודם יש מצב של legacy.

פקודות של רשת משנה

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

צריך לתת לכל טווח משני שם ייחודי ברשת המשנה. כשמקצים טווח כתובות IP של כינוי למכונה וירטואלית, שם הטווח המשני מצייןGoogle Cloud מאיזה טווח של רשת משנה להקצות את כתובות ה-IP של הכינוי.

כל הטווחים, גם הראשיים וגם המשניים, צריכים להיות ייחודיים בכל רשתות המשנה ברשת ה-VPC ובכל רשת שמצורפת באמצעות קישור בין רשתות שכנות (peering) של VPC,‏ Cloud VPN או Cloud Interconnect.

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

יצירת רשת משנה עם טווחים משניים של CIDR

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

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

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

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת קיימת.

  3. לוחצים על הוספת רשת משנה.

  4. מזינים שם לרשת המשנה החדשה.

  5. מציינים את האזור.

  6. מזינים טווח כתובות IP בסימון CIDR – לדוגמה, 10.65.61.0/24.

  7. לוחצים על יצירת טווח משני של כתובות IP.

  8. מזינים שם לטווח של רשת משנה.

  9. מזינים טווח משני של כתובות IP בסימון CIDR – לדוגמה, 10.9.0.0/24.

  10. כדי להוסיף טווחי כתובות IP משניים, לוחצים על הוספת טווח כתובות IP לכל טווח, ואז מציינים שם וטווח.

  11. לוחצים על הוספה.

gcloud

gcloud compute networks subnets create s1 \
    --network NETWORK_NAME \
    --region REGION \
    --range 10.65.61.0/24 \
    --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

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

  • NETWORK_NAME: השם של הרשת שבה רוצים ליצור את תת-הרשת.
  • REGION: האזור שבו יוצרים את רשת המשנה.
  • RANGE_NAME_1=RANGE_CIDR_1 ו-RANGE_NAME_2=RANGE_CIDR_2: השמות של הטווחים המשניים שמתוכם יוקצו טווחי כתובות ה-IP החלופיות, וטווח כתובות ה-IP החלופיות עצמו – לדוגמה, range1=10.9.0.0/24.

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

יוצרים תת-רשת עם טווח משני אחד או יותר.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "PRIMARY_IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET_NAME",
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...]
}

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

  • PROJECT_ID: מזהה הפרויקט שמכיל את רשת ה-VPC שבה רוצים ליצור את רשת המשנה.
  • REGION: האזור שבו תמוקם רשת המשנה.
  • PRIMARY_IP_RANGE: טווח כתובות ה-IP הראשי של רשת המשנה.
  • NETWORK_URL: כתובת ה-URL או רשת ה-VPC שבהן רוצים ליצור את רשת המשנה.
  • SUBNET_NAME: שם לרשת המשנה.
  • SECONDARY_RANGE_NAME_1 ו-SECONDARY_RANGE_NAME_2: השמות שבהם צריך להשתמש לטווחים המשניים.
  • SECONDARY_IP_RANGE_1 ו-SECONDARY_IP_RANGE_2: טווח כתובות ה-IP לשימוש בטווחים המשניים.

מידע נוסף זמין במאמר בנושא השיטה subnetworks.insert.

Terraform

אתם יכולים להשתמש במשאב של Terraform כדי ליצור רשת משנה עם טווח משני אחד או יותר.

הארגומנטים של Terraform כוללים ערכים לדוגמה שאפשר לשנות.

resource "google_compute_subnetwork" "network-with-private-secondary-ip-ranges" {
  project       = var.project_id # Replace this with your project ID in quotes
  name          = "test-subnetwork"
  ip_cidr_range = "10.2.0.0/16"
  region        = "us-central1"
  network       = "test-vpc-network"
  secondary_ip_range {
    range_name    = "tf-test-secondary-range-update1"
    ip_cidr_range = "192.168.10.0/24"
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

הוספת טווחי CIDR משניים לרשת משנה קיימת

ההליך הזה מניח שיש לכם רשת משנה שאתם רוצים להשתמש בה, אבל אתם צריכים להוסיף טווח משני אחד או יותר.

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

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת המשנה שרוצים לשנות כדי לראות את דף הפרטים שלה.

  3. לוחצים על Edit.

  4. בקטע Secondary IP ranges (טווחים משניים של כתובות IP), לוחצים על Add IP range (הוספת טווח כתובות IP).

  5. מזינים שם לשם טווח רשת המשנה.

  6. מזינים טווח לטווח משני של כתובות IP בסימון CIDR – לדוגמה, 10.9.0.0/24.

  7. כדי להוסיף טווחי כתובות IP משניים, לוחצים על הוספת טווח כתובות IP לכל טווח, ואז מציינים שם וטווח.

  8. לוחצים על Save.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...

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

  • SUBNET_NAME: השם של רשת המשנה שרוצים להוסיף לה את הטווחים המשניים.
  • REGION: האזור שבו יוצרים את רשת המשנה.
  • RANGE_NAME_1=RANGE_CIDR_1 ו-RANGE_NAME_2=RANGE_CIDR_2: השמות של הטווחים המשניים שמתוכם יוגדרו טווחי כתובות ה-IP של הכינוי, וטווח כתובות ה-IP של הכינוי עצמו – לדוגמה, range1=10.9.0.0/24.

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

הוספת טווח משני לרשת משנה קיימת.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME_1",
    "ipCidrRange": "SECONDARY_IP_RANGE_1"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME_2",
    "ipCidrRange": "SECONDARY_IP_RANGE_2"
  },
  ...],
  "fingerprint": "SUBNET_FINGERPRINT"
}

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

  • PROJECT_ID: מזהה הפרויקט שמכיל את רשת המשנה שרוצים לשנות.
  • REGION: האזור שבו נמצאת רשת המשנה.
  • SUBNET_NAME: השם של רשת המשנה שרוצים לשנות.
  • SECONDARY_RANGE_NAME_1 ו-SECONDARY_RANGE_NAME_2: השמות שבהם צריך להשתמש לטווחי המשנה.
  • SECONDARY_IP_RANGE_1 ו-SECONDARY_IP_RANGE_2: טווחי כתובות ה-IP לשימוש בטווחי המשנה.
  • SUBNET_FINGERPRINT: מזהה טביעת האצבע של תת-הרשת הקיימת, שמופיע כשמבצעים תיאור של תת-רשת.

מידע נוסף זמין במאמר בנושא השיטה subnetworks.patch.

הסרת טווח CIDR משני מרשת משנה

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

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על השם של רשת המשנה שרוצים לשנות כדי לראות את דף הפרטים שלה.

  3. לוחצים על Edit.

  4. בקטע Secondary IP ranges (טווחים משניים של כתובות IP), לוחצים על X לצד הטווח המשני שרוצים להסיר.

  5. לוחצים על Save.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --region REGION \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

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

  • SUBNET_NAME: השם של רשת המשנה שרוצים להסיר ממנה את הטווחים המשניים.
  • REGION: האזור שבו יוצרים את רשת המשנה.
  • RANGE_NAME_1 ו-RANGE_NAME_2: השמות של טווחי המשנה שיוסרו מרשת המשנה של היעד SUBNET_NAME – לדוגמה, range1=10.9.0.0/24.

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

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

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
{
  "fingerprint": "SUBNET_FINGERPRINT",
  "secondaryIpRanges": [
  ]
}

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

  • PROJECT_ID: מזהה הפרויקט שמכיל את רשת המשנה שרוצים לשנות.
  • REGION: האזור שבו נמצאת רשת המשנה.
  • SUBNET_NAME: השם של רשת המשנה שרוצים לשנות.
  • SUBNET_FINGERPRINT: מזהה טביעת האצבע של תת-הרשת הקיימת, שמופיע כשמבצעים תיאור של תת-רשת.

מידע נוסף זמין במאמר בנושא השיטה subnetworks.patch.

עבודה עם מכונות וירטואליות

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

יצירת מכונה וירטואלית עם טווח כתובות IP חלופיות בטווח ה-CIDR הראשי

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

משתמשים בהליך הזה אם רוצים שכתובות ה-IP הראשיות והחלופיות של המכונה יהיו באותו טווח.

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על Create instance.

  3. מזינים שם למופע החדש.

  4. מציינים אזור.

  5. לוחצים על Networking.

  6. בקטע Network interfaces מרחיבים את ממשק ברירת המחדל של הרשת.

  7. בקטע טווחים של כתובות IP חלופיות, לוחצים על הוספת טווח IP.

  8. משאירים את ההגדרה של Subnet range 1 (טווח תת-רשת 1) כ-Primary (ראשי).

  9. בטווח כתובות IP של כינוי, מזינים טווח כתובות IP בסימון CIDR. הטווח הזה צריך להיות טווח משנה לא בשימוש של הטווח הראשי.

  10. לוחצים על יצירה.

gcloud

gcloud compute instances create vm1 \
    --zone ZONE \
    --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."

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

  • ZONE: האזור שבו תמוקם המכונה.
  • SUBNET_NAME: השם של רשת המשנה שתכיל את המכונה.
  • RANGE_CIDR_1 ו-RANGE_CIDR_2: טווחי כתובות ה-IP מרשת המשנה הראשית להקצאה לממשק. הטווחים יכולים להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR‏ (/24). אם טווח כתובות ה-IP מצוין רק על ידי מסכת רשת, כלי ההקצאה של כתובות ה-IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת. כדי לציין יותר מטווח אחד, צריך להפריד בין הטווחים באמצעות נקודה-פסיק (;).

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "CIDR_RANGE"
        }
      ]
    },
    ...
  ],
  ...
}

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

  • PROJECT_ID: מזהה הפרויקט שבו יוצרים את המכונה.
  • ZONE: Google Cloud האזור שבו תיצור את המכונה.
  • CIDR_RANGE: טווח כתובות ה-IP מרשת המשנה הראשית להקצאה לממשק. הטווח יכול להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR‏ (/24). אם מציינים את טווח כתובות ה-IP רק לפי מסכת רשת, כלי ההקצאה של כתובות ה-IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.

מידע נוסף זמין במאמר בנושא השיטה instances.insert.

יצירת מכונה וירטואלית עם טווח כתובות IP חלופיות בטווח CIDR משני

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

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על Create instance.

  3. מזינים שם למופע החדש.

  4. מציינים אזור.

  5. לוחצים על Networking.

  6. בקטע Network interfaces מרחיבים את ממשק ברירת המחדל של הרשת.

  7. בקטע טווחים של כתובות IP חלופיות, לוחצים על הוספת טווח IP.

  8. בקטע Subnet range, בוחרים את טווח כתובות ה-IP המשני שרוצים להשתמש בו.

  9. בשדה טווח כתובות IP של כינוי, מזינים טווח כתובות IP בסימון CIDR. הטווח הזה צריך להיות טווח לא בשימוש של טווח כתובות ה-IP המשני.

  10. לוחצים על יצירה.

gcloud

gcloud compute instances create vm3 \
    --zone ZONE \
    --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
 

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

  • ZONE: האזור שבו תמוקם המכונה.
  • SUBNET_NAME: השם של רשת המשנה שתכיל את המכונה.
  • RANGE_NAME: השם של טווח המשנה המשני של רשת המשנה שממנו ייקבע טווח כתובות ה-IP של הכינוי.
  • RANGE_CIDR: טווח כתובות ה-IP להקצאה לממשק. הטווח יכול להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR‏ (/24). אם טווח כתובות ה-IP מצוין רק באמצעות מסכת רשת, כלי ההקצאה של כתובות IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.

למידע על התחביר המלא , אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

יוצרים מכונה עם כתובת IP חלופית מטווח כתובות ה-IP המשני של תת-הרשת של המכונה.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "networkInterfaces": [
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "SECONDARY_CIDR_RANGE",
          "subnetworkRangeName": "SECONDARY_RANGE_NAME"
        }
      ]
    },
    ...
  ],
  ...
}

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

  • PROJECT_ID: מזהה הפרויקט שבו יוצרים את המכונה.
  • ZONE: Google Cloud האזור שבו יוצרים את המכונה.
  • SECONDARY_CIDR_RANGE: the IP range to assign to the interface. The range can be a specific range (192.168.100.0/24), a single IP address (192.168.100.1), or a netmask in CIDR format (/24`). אם מציינים את טווח כתובות ה-IP רק באמצעות מסכת רשת, כלי ההקצאה של כתובות ה-IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.
  • SECONDARY_RANGE_NAME: השם של הטווח המשני של רשת המשנה שממנו יוקצה טווח כתובות ה-IP של הכינוי.

מידע נוסף זמין במאמר בנושא השיטה instances.insert.

יצירת מכונה וירטואלית עם כמה ממשקי רשת וכתובות IP של כינוי

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

המסוף

יוצרים את הרשת ואת תת-הרשת הראשונות:

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על יצירת רשת VPC.

  3. בשדה Name (שם), מזינים my-network1.

  4. מגדירים את מצב יצירת רשת משנה לערך Custom, ואז מציינים שם של רשת משנה my-subnet1.

  5. מציינים אזור.

  6. מגדירים את טווח כתובות ה-IP ל-172.16.1.0/24.

  7. לוחצים על יצירת טווח משני של כתובות IP.

  8. מגדירים את Subnet range name לערך range1.

  9. מגדירים את Secondary IP range (טווח משני של כתובות IP) ל-10.1.0.0/16.

  10. לוחצים על סיום.

  11. לוחצים על יצירה.

יוצרים את הרשת והתת-רשת השנייה:

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. לוחצים על יצירת רשת VPC.

  3. בשדה Name (שם), מזינים my-network2.

  4. מגדירים את מצב יצירת רשת משנה לערך Custom, ואז מציינים שם של רשת משנה my-subnet2.

  5. בקטע Region, מציינים את אותו אזור שציינתם עבור הרשת ורשת המשנה הראשונות.

  6. מגדירים את טווח כתובות ה-IP ל-172.16.2.0/24.

  7. לוחצים על יצירת טווח משני של כתובות IP.

  8. מגדירים את Subnet range name לערך range2.

  9. מגדירים את Secondary IP range (טווח משני של כתובות IP) ל-10.2.0.0/16.

  10. לוחצים על סיום.

  11. לוחצים על יצירה.

יוצרים מכונה וירטואלית עם ממשקים בשתי הרשתות:

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על Create instance.

  3. מגדירים את התחום לאזור שבו יצרתם את רשתות המשנה.

  4. לוחצים על Networking.

  5. לוחצים על ממשק הרשת הראשון.

    1. מגדירים את Network לערך my-network1.
    2. מגדירים את Subnetwork לערך my-subnet1.
    3. לוחצים על Alias IP ranges (טווחי כתובות IP חלופיות).
    4. לוחצים על הוספת טווח IP.
    5. מגדירים את Subnet range לערך Primary.
    6. מגדירים את Alias IP range לערך /32.
    7. לוחצים על הוספת טווח IP.
    8. מגדירים את Subnet range לערך range1.
    9. מגדירים את Alias IP range לערך /24.
    10. לוחצים על סיום.
  6. לוחצים על הוספת ממשק רשת.

    1. בוחרים באפשרות my-network2.
    2. מגדירים את Subnetwork לערך my-subnet2.
    3. לוחצים על Alias IP ranges (טווחי כתובות IP חלופיות).
    4. לוחצים על הוספת טווח IP.
    5. מגדירים את Subnet range לערך Primary.
    6. מגדירים את Alias IP range לערך /32.
    7. לוחצים על הוספת טווח IP.
    8. מגדירים את Subnet range לערך range2.
    9. מגדירים את Alias IP range לערך /24.
    10. לוחצים על סיום.
  7. לוחצים על יצירה.

gcloud

  1. יוצרים את הרשת הראשונה:

    gcloud compute networks create my-network1 --subnet-mode CUSTOM
    
  2. מוסיפים רשת משנה:

    gcloud compute networks subnets create my-subnet1 \
        --network my-network1 \
        --range 172.16.1.0/24 \
        --secondary-range range1=10.1.0.0/16
    
  3. יוצרים רשת שנייה:

    gcloud compute networks create my-network2 --subnet-mode CUSTOM
    
  4. מוסיפים רשת משנה:

    gcloud compute networks subnets create my-subnet2 \
        --network my-network2 \
        --range 172.16.2.0/24 \
        --secondary-range range2=10.2.0.0/16
    
  5. יוצרים מכונה וירטואלית עם ממשקים בשתי הרשתות. ממשק הרשת הראשון שמופיע, זה שב-my-subnet1, הוא הממשק הראשי:

    gcloud compute instances create multi-nic-alias-vm \
        --machine-type f1-micro \
        --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \
        --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
    
  6. משתמשים בפקודה display כדי לראות את הממשקים והכתובות שלהם:

    gcloud compute instances describe multi-nic-alias-vm
    
    ...
    networkInterfaces:
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.1.2/32
      - ipCidrRange: 10.1.0.0/24
        subnetworkRangeName: range1
      name: nic0
      network: .../networks/my-network1
      networkIP: 172.16.1.3
      subnetwork: .../subnetworks/my-subnet1
      ...
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.2.2/32
      - ipCidrRange: 10.2.0.0/24
        subnetworkRangeName: range2
      name: nic1
      network: .../networks/my-network2
      networkIP: 172.16.2.3
      subnetwork: .../subnetworks/my-subnet2
      

API

  1. יוצרים שתי רשתות VPC במצב מותאם אישית בשמות my-network1 ו-my-network2. מידע נוסף זמין במאמר יצירת רשת VPC במצב מותאם אישית עם תת-רשתות IPv4 בלבד.

  2. מוסיפים רשתות משנה לרשתות ה-VPC. מידע נוסף זמין במאמר הוספת רשת משנה עם IPv4 בלבד.

    1. מוסיפים תת-רשת בשם my-subnet1 ל-my-network1. מציינים את 172.16.1.0/24 כטווח הראשי ואת 10.1.0.0/16 כטווח המשני עם השם range1.

    2. מוסיפים תת-רשת בשם my-subnet2 ל-my-network2. מציינים את 172.16.2.0/24 כטווח הראשי ואת 10.2.0.0/16 כטווח המשני עם השם range2.

  3. יוצרים מכונה וירטואלית עם ממשקים בשתי הרשתות.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
      "networkInterfaces": [
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range1",
              "ipCidrRange": "/24"
            }
          ]
        },
        {
          "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2",
          "aliasIpRanges": [
            {
              "ipCidrRange": "/32",
            },
            {
              "subnetworkRangeName": "range2",
              "ipCidrRange": "/24"
            }
          ]
        }
      ],
      ...
    }
    

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

    • PROJECT_ID: מזהה הפרויקט שבו יוצרים את המכונה.
    • ZONE: Google Cloud האזור שבו תיצור את המכונה.
    • REGION: Google Cloud האזור שבו נמצאת רשת המשנה. רשתות המשנה צריכות להיות באותו אזור כמו המופע.

    מידע נוסף זמין במאמר בנושא השיטה instances.insert.

הוספת טווחים של כתובות IP של כינויים למופע קיים

אפשר להוסיף טווח כתובות IP של כינוי למופע פעיל.

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

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על השם של מופע קיים.

  3. לוחצים על Edit.

  4. בקטע Network interfaces, לוחצים על ממשק הרשת שאליו רוצים להוסיף טווח של כתובות IP של כינוי (nic0 בדוגמה הזו).

  5. לוחצים על Alias IP ranges (טווחי כתובות IP חלופיות).

  6. לוחצים על הוספת טווח IP.

  7. בוחרים טווח רשת משנה.

  8. מזינים טווח כתובות IP של כינוי.

  9. לוחצים על סיום.

  10. לוחצים על Save.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"] \
    --aliases "RANGE_NAME_1:RANGE_CIDR_1; \
    RANGE_NAME_2:RANGE_CIDR_2;..."

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

  • INSTANCE_NAME: השם של המכונה שרוצים לשנות.
  • ZONE: האזור שבו נמצאת המכונה.
  • NETWORK_INTERFACE: השם של ממשק הרשת שאליו רוצים להוסיף טווח כתובות IP של כינוי.
  • RANGE_NAME_1 ו-RANGE_NAME_2: השמות של הטווחים המשניים של רשתות המשנה שמתוכם ייקבע טווח כתובות ה-IP של הכינוי. אם אתם מקצים טווחים מהטווח הראשי של רשת המשנה, אל תציינו את הערך הזה.
  • RANGE_CIDR_1 ו-RANGE_CIDR_2: טווחי כתובות ה-IP להקצאה לממשק. הטווחים יכולים להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR‏ (/24). אם טווח כתובות ה-IP מצוין רק על ידי מסכת רשת, כלי ההקצאה של כתובות IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

הוספת טווחי כתובות IP של כינויים למופע קיים.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    {
      "ipCidrRange": "SECONDARY_IP_RANGE",
      "subnetworkRangeName": "SECONDARY_RANGE_NAME"
    },
    existing ranges...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

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

  • PROJECT_ID: מזהה הפרויקט שמכיל את המופע שרוצים לשנות.
  • ZONE: Google Cloud האזור שבו רוצים ליצור את המכונה.
  • INSTANCE_NAME: השם של המכונה שרוצים לשנות.
  • NETWORK_INTERFACE_NAME: השם של ממשק הרשת של המופע שרוצים לשנות.
  • SECONDARY_IP_RANGE: טווח כתובות ה-IP להקצאה לממשק. הטווח יכול להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR (/24). אם מציינים את טווח כתובות ה-IP רק באמצעות מסכת רשת, כלי ההקצאה של כתובות ה-IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.
  • SECONDARY_RANGE_NAME: השם של הטווח המשני של רשת המשנה שממנו יוקצה טווח כתובות ה-IP של הכינוי. אם מקצים טווחים מהטווח הראשי של רשת המשנה, משמיטים את השדה הזה.
  • INTERFACE_FINGERPRINT: מזהה טביעת האצבע של ממשק הרשת הקיים, שמופיע כשמתארים מופע.

מידע נוסף זמין במאמר בנושא השיטה instances.updateNetworkInterface.

שינוי של טווחי כתובות IP של כינוי עבור מופע קיים

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

יכול להיות שיעבור קצת זמן עד שהשינויים בכתובת יופיעו. קריאה ל-API צריכה להסתיים ומערכת ההפעלה של האורח צריכה לשנות את הכתובות והנתיבים.

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. לוחצים על השם של מופע קיים.

  3. לוחצים על Edit.

  4. בקטע Network interfaces, לוחצים על ממשק הרשת שאליו רוצים להוסיף טווח של כתובות IP של כינוי (nic0 בדוגמה הזו).

  5. לוחצים על Alias IP ranges (טווחי כתובות IP חלופיות).

  6. כדי להוסיף טווח IP של כתובת אימייל חלופית, לוחצים על הוספת טווח IP של כתובת אימייל חלופית.

  7. כדי להסיר טווח IP של כינוי, לוחצים על X לצד טווח ה-IP של הכינוי.

  8. לוחצים על סיום.

  9. לוחצים על Save.

gcloud

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone ZONE \
    [--network-interface NETWORK_INTERFACE; default="nic0"] \
    --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."

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

  • INSTANCE_NAME: השם של המכונה שרוצים לשנות.
  • ZONE: האזור שבו נמצאת המכונה.
  • NETWORK_INTERFACE: השם של ממשק הרשת שרוצים לשנות.
  • RANGES_TO_RETAIN: הטווחים הקיימים, בפורמט CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR, שרוצים לשמור. אם מוסיפים טווחים למופע שלא כולל טווחים, הערכים האלה יהיו ריקים. אם מסירים את כל הטווחים מהמופע, השדה --aliases כולו ריק.
  • NEW_RANGE_NAME: השם של הטווח המשני של רשת המשנה שממנו יוקצו טווחי כתובות IP חדשים של כינויים. אם מקצים טווחים מהטווח הראשי של רשת המשנה, לא מציינים ערך.
  • NEW_RANGE_CIDR: טווח כתובות ה-IP להקצאה לממשק. הטווח יכול להיות טווח ספציפי (192.168.100.0/24), כתובת IP יחידה (192.168.100.1) או מסכת רשת בפורמט CIDR‏ (/24). אם טווח כתובות ה-IP מצוין רק על ידי מסכת רשת, מקצה כתובות ה-IP בוחר טווח זמין עם מסכת הרשת שצוינה ומקצה אותו לממשק הרשת.

כדי להוסיף טווחים, מריצים את הפקודה ומציינים את כל טווחי כתובות ה-IP הקיימים ואת כל טווחי כתובות ה-IP החדשים של הכינויים. הצמדים מופרדים באמצעות נקודה-פסיק – לדוגמה: --aliases "CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR".

כדי להסיר טווחים, מריצים את הפקודה ומציינים רק את טווחי כתובות ה-IP של הכינוי שרוצים לשמור. אם אתם שומרים טווחים מטווח משני, אתם צריכים לציין את השם של הטווח המשני. טווח CIDR יכול להיות טווח ספציפי (192.168.100.0/24) או כתובת IP יחידה (192.168.100.1). לדוגמה: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR".

כדי להסיר את כל הטווחים, מריצים את הפקודה ומציינים את הדגל --aliases, אבל משתמשים במירכאות כדי לספק קלט ריק – לדוגמה: --aliases "".

אי אפשר להוסיף ולהסיר טווחים באותה פקודת gcloud. כדי להסיר טווחי כתובות ולהוסיף אחרים באמצעות ה-CLI של gcloud, קודם מריצים את הפקודה להסרת טווחי כתובות לא נחוצים, ואז מריצים אותה שוב כדי להוסיף טווחי כתובות נחוצים.

למידע על התחביר המלא, אפשר לעיין במסמכי התיעוד בנושא gcloud.

API

בממשק רשת של מופע קיים, מוסיפים או מסירים טווחי כתובות IP של כינויים.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME
{
  "aliasIpRanges": [
    include new and existing ranges to add them...
    exclude existing ranges to remove them...
  ],
  "fingerprint": "INTERFACE_FINGERPRINT"
}

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

  • PROJECT_ID: מזהה הפרויקט שמכיל את המופע שרוצים לשנות.
  • ZONE: האזור שבו נמצאת המכונה.
  • INSTANCE_NAME: השם של המכונה שרוצים לשנות.
  • NETWORK_INTERFACE_NAME: השם של ממשק הרשת של המופע שרוצים לשנות.
  • INTERFACE_FINGERPRINT: מזהה טביעת האצבע של ממשק הרשת הקיים, שמופיע כשמתארים מופע.

מידע נוסף זמין במאמר בנושא השיטה instances.updateNetworkInterface.

פתרון בעיות

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

אי אפשר ליצור מופע של מכונה וירטואלית עם כתובת IP חלופית

  1. מוודאים שהרשת היא רשת VPC. אין תמיכה בכתובות IP של כינויים ברשתות מדור קודם.

    gcloud compute networks list --filter="name=NETWORK_NAME"
    

    הערך של מאפיין הרשת MODE צריך להיות auto או custom.

  2. אם מציינים שם של טווח רשתות משנה, צריך לוודא את הדברים הבאים:

    gcloud compute networks subnets describe SUBNET_NAME --region=REGION
    
    • לרשת המשנה יש טווח משני עם השם המתאים.
    • טווח כתובות ה-IP של הכינוי המבוקש נמצא בתוך הטווח המשני הזה, או שאם משתמשים במסכת רשת, הוא קטן יותר מהטווח הראשי.
  3. אם לא מציינים שם של טווח רשת משנה, צריך לוודא שטווח כתובות ה-IP של הכינוי המבוקש נמצא בתוך טווח הרשת המשנה הראשי, או שאם משתמשים במסכת רשת, הוא קטן יותר מהטווח הראשי.

אי אפשר להתחבר לכתובת IP של כינוי

  1. בודקים את הכללים של חומת האש.

    1. הצגת רשימה של כל כללי חומת האש:

      gcloud compute firewall-rules list --format=json
      
    2. מוודאים שהתנועה אל טווח כתובות ה-IP של הכינוי וממנו מותרת.

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

      gcloud compute firewall-rules create FIREWALL_NAME1 \
          --network NETWORK_NAME \
          --priority 0 \
          --source-ranges ALIAS_IP \
          --allow icmp
      
      gcloud compute firewall-rules create FIREWALL_NAME2 \
          --network NETWORK_NAME \
          --priority 0 \
          --direction out \
          --destination-ranges ALIAS_IP \
          --allow icmp
      
  2. מוודאים שהמכונה הווירטואלית מזהה את טווחי כתובות ה-IP הווירטואליות כמקומיות. במהדורות של Linux כמו Debian, בדרך כלל אפשר לעשות את זה כך:

    1. מתחברים למופע ומריצים את הפקודה הבאה:

      ip route show table local
      

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

      local ALIAS_IP_RANGE dev eth0  proto 66  scope host
      
    2. ב-/etc/default/instance_configs.cfg, מוודאים שההגדרה ip_aliases מוגדרת ל-true. אם אתם צריכים לשנות את זה, אתם צריכים גם להפעיל מחדש את סוכן האורח:

      systemctl restart google-guest-agent
      
    3. אם המסלול המקומי לא מופיע, מגדירים אותו באמצעות הפקודה הבאה:

      ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
      

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

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

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

לדוגמה, שרת Apache HTTP עשוי לצאת עם השגיאה הבאה:

could not bind to address ALIAS_IP:80

כדי לפתור את הבעיה, צריך להגדיר את השירות כך שהוא יופעל אחרי סוכן האורח. במהדורות שמשתמשות ב-systemctl, פועלים לפי השלבים הבאים.

  1. כמשתמש עם הרשאות, מריצים את הפקודה הבאה כדי להוסיף קטע קוד להחלפה לשירות שלא פועל בצורה תקינה – לדוגמה, שרת Apache HTTP ב-Debian יהיה apache2:

    systemctl edit YOUR_SERVICE
    
  2. בעורך הטקסט, מוסיפים את השורות הבאות. חשוב להוסיף את השורות מעל השורה Lines below this comment will be discarded.

    [Unit]
    After=google-guest-agent.service
    

טווחי ה-IP המשניים שלי לא מופיעים

טווחים משניים של כתובות IP לא מופיעים כרשתות משנה רגילות. כדי לוודא שטווח כתובות ה-IP המשני של רשת המשנה נוצר, משתמשים בפקודה gcloud compute networks subnets describe.

  1. יוצרים רשת משנה.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    

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

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. מציגים את רשימת רשתות המשנה.

    gcloud compute networks subnets list
    

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

    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  3. כדי לראות את הטווחים המשניים, אפשר לקבל פרטים על רשת משנה.

    gcloud compute networks subnets describe my-subnet --region us-central1
    

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

    ...
    ipCidrRange: 10.9.0.0/16
    ...
    secondaryIpRanges:
    - ipCidrRange: 172.16.0.0/12
      rangeName: secondaryrange1
    ...
    

הטווח המשני של רשת המשנה שצוין לא קיים

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

  • לרשת המשנה יש טווח משני עם השם שצוין.
  • אתם יוצרים את המכונה הווירטואלית ברשת המשנה שיש לה טווח משני.

אפשר לראות את השגיאה הזו על ידי הרצת הפקודות הבאות:

  1. יוצרים רשת משנה עם טווח משני.

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    

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

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. יצירת מכונה ברשת אחרת, כמו רשת ברירת המחדל, במקום ברשת המשנה החדשה.

    gcloud compute instances create instance-1 \
        --zone us-central1-a \
        --network default
    

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

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-1  us-central1-a  n1-standard-1               10.128.0.2     47.82.96.9  RUNNING
    
  3. מנסים להקצות טווח כתובות IP חלופיות מרשת המשנה שנוצרה בשלב 1. הפקודה נכשלת כי הטווח המשני נמצא בתת-רשת שונה מהמופע.

    gcloud compute instances network-interfaces update instance-1 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    

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

    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
    
  4. יוצרים עוד מכונה, והפעם הממשק שלה נמצא ברשת המשנה שנוצרה בשלב 1.

    gcloud compute instances create instance-2 \
        --zone us-central1-a \
        --network-interface subnet=my-subnet
    

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

    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-2  us-central1-a  n1-standard-1               10.9.0.2     38.74.204.89  RUNNING
    
  5. מוסיפים טווח כתובות IP חלופיות לממשק. הפעם הפקודה מצליחה כי הממשק והטווח המשני נמצאים באותה תת-רשת.

    gcloud compute instances network-interfaces update instance-2 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    

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

    Updating network interface [nic0] of instance [instance-2]...done.
    

אי אפשר להוסיף ולהסיר טווחי כתובות IP משניים באותה בקשה

אי אפשר להוסיף ולהסיר טווחי כתובות IP משניים של תת-רשת באותה פקודה. פקודות ה-CLI של gcloud להוספה ולהסרה של טווחים משניים שומרות את הטווחים הקיימים שלא משתנים.

כדי להוסיף ולהסיר טווחים, מריצים את שתי הפקודות בנפרד.

gcloud compute networks subnets update SUBNET_NAME \
    --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update  SUBNET_NAME \
    --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...

כדי לקבל מידע נוסף על הפקודה הזו, משתמשים בפקודה gcloud compute networks subnets update --help.

אי אפשר להוסיף ולהסיר טווחי כתובות IP של כינויים בו-זמנית

אי אפשר להוסיף ולהסיר טווחים של כתובות IP של כינוי למכונה וירטואלית באותה בקשה. כדי להוסיף את הטווח החדש, צריך להסיר במפורש את הטווח הקיים.

הפקודה של ה-CLI של gcloud לעדכון טווחי כתובות IP של כינויים לא שומרת את הטווחים הקיימים, ולכן השמטה של טווח מסוים נחשבת כבקשה למחיקת הטווח הזה.

לדוגמה, אם למכונה הווירטואלית הנוכחית יש טווח של כתובות IP וירטואליות 10.9.27.0/24, והטווח החדש המבוקש הוא /24, הפקודה לבקשת /24 תידחה כי היא תפורש כהסרה של 10.9.27.0/24 והוספה של /24.

דוגמה:

  1. יוצרים טווח כתובות IP חלופיות.

    gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
    
  2. מנסים להוסיף את /24 בלי לציין את הטווח הקיים. מוצגת שגיאה.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.
    aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
    
  3. מעדכנים את המכונה הווירטואלית כך שלא יהיה לה טווח כתובות IP חלופיות.

    gcloud compute instances network-interfaces update vm --aliases ""
    Updating network interface [nic0] of instance [vm]...done.
    
  4. מוסיפים את טווח כתובות ה-IP החדש של הכינוי.

    gcloud compute instances network-interfaces update vm --aliases "/24"
    Updating network interface [nic0] of instance [vm]...done.
    

כדי לקבל מידע נוסף על הפקודה הזו, משתמשים בפקודה gcloud compute instances network-interfaces update --help.

תגי מקור וחשבונות שירות של מקור בכלל חומת אש

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

בעיות במכונות וירטואליות עם כמה ממשקים וטווחים של כתובות IP עם כינוי

אפשר לעיין במאמר בנושא פתרון בעיות במכונות וירטואליות עם כמה ממשקי רשת.

הפעלת כינוי לכתובת IP בתמונות Google Cloud משביתה את cbr0 הגשר באשכולות Kubernetes בניהול עצמי

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

תסמינים:

  • ל-Pods של Kubernetes אין יותר גישה לרשת אם המסלול המקומי שנוצר על ידי Guest agent מסיר את טווח ה-IP של הכינוי מהממשק cbr0.

  • תיעוד חבילות במכשיר הגישור של Linux ‏ (tcpdump -ni cbr arp) מראה שאין תגובות ARP מהממשק cbr0, למרות שהממשק הזה פעיל.

  • בדיקה של טבלת הניתוב המקומית (ip route show table local) מגלה שטווח כתובות ה-IP של כתובת האימייל החלופית הוקצה לממשק הרשת הראשי (לדוגמה, eth0 או ens4) במקום לממשק הגשר של הקונטיינר (cbr0).

הפתרון:

  1. מריצים את הפקודה המתאימה שמפורטת במאמר Installed packages for the guest environment כדי לבדוק אם המכונה הווירטואלית של הצומת מריצה את Google guest agent או חבילה קודמת של Compute Engine.

  2. אם מכונת ה-VM של הצומת לא מריצה את סוכן האורח של Google, צריך להתקין את סוכן האורח או להשתמש בתמונה עדכנית יותר שסופקה על ידי Google.

  3. מגדירים את סוכן האורח של Google כך שידלג על יצירת מסלולים מקומיים לטווחי כתובות IP של כינויים ולכללי העברה.

    1. עריכה של /etc/default/instance_configs.cfg, הגדרה ip_forwarding=false בקטע [NetworkInterfaces]. אפשר ליצור את הקטע [NetworkInterfaces] אם הוא עדיין לא מופיע בקובץ instance_configs.cfg.

    2. מבצעים אחת מהמשימות הבאות:

      • מפעילים מחדש את ה-VM של הצומת.

      • מפעילים מחדש את השירות google-guest-agent.service ועורכים את טבלת הניתוב המקומית.

        כדי להפעיל מחדש את שירות google-guest-agent.service, מריצים את הפקודה sudo systemctl restart google-guest-agent.service. לאחר מכן עורכים את טבלת הניתוב המקומית כדי להסיר את כל הרשומות של טווחי כתובות ה-IP של הכינוי – למשל:

        sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
        

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

        • ALIAS_IP_RANGE: טווח כתובות ה-IP של הכינוי.
        • DEVICE_IDENTIFIER: המזהה של ממשק הרשת, לדוגמה: ens4 או eth0.

    מידע נוסף זמין במאמר בנושא הגדרה במאמרי העזרה של Google Guest Agent.

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