פתרון בעיות במכונות וירטואליות עם כמה ממשקי רשת
בדף הזה מפורטים שלבים לפתרון בעיות נפוצות שאתם עשויים להיתקל בהן כשאתם יוצרים מכונות וירטואליות עם כמה ממשקי רשת ומשתמשים בהן.
לא ניתן ליצור מכונה וירטואלית עם כמה ממשקים
יכול להיות שתופיע אחת מהודעות השגיאה הבאות:
Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.אם מופיעה הודעת השגיאה הזו, סימן שניסיתם ליצור יותר ממשקים מהמספר המקסימלי של ממשקים שנתמכים על ידי סוג המכונה של המופע. ראו את הטבלה בנושא מספר הממשקים המקסימלי.
Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.אם ההודעה הזו מופיעה, טווחי ה-CIDR שמשויכים לממשקי המכונה הווירטואלית חופפים. טווחי ה-CIDR האלה כוללים את כל הטווחי המשנה הראשיים שמשויכים לממשקי מכונות וירטואליות, וגם טווחי משנה משניים שמשמשים לטווחי כתובות IP חלופיות. כל ממשק מצורף לתת-רשת שאסור שתהיה חפיפה בינה לבין תת-רשתות של ממשקים אחרים. לדוגמה, אם אתם מנסים ליצור את המופע באזור
REGION_A, אתם יכולים לבדוק את טווחי ה-CIDR הראשיים של רשת המשנה באמצעות הפקודה הבאה או באמצעות מסוףGoogle Cloud .gcloud compute networks subnets list --regions REGION_A NAME REGION NETWORK RANGE default REGION_A default 10.138.0.0/20 overlapping-subnet REGION_A test-network 10.138.8.0/24
כדי לבדוק את טווחי ה-CIDR של רשתות המשנה המשניות, משתמשים בפקודה הבאה או במסוףGoogle Cloud .
gcloud compute networks subnets describe overlapping-subnet --region REGION_A
... ipCidrRange: 10.128.8.0/24 ... secondaryIpRanges: - ipCidrRange: 10.138.8.0/24 rangeName: conflicting-range
Multiple network interfaces are not supported on legacy networks.אם ההודעה הזו מופיעה, סימן שאתם מנסים ליצור את המופע ברשת מדור קודם. אין תמיכה במופעים עם כמה ממשקים ברשתות מדור קודם. כדי לבדוק אם רשת היא רשת מדור קודם, אפשר להשתמש באחת מהשיטות הבאות:
- נכנסים לדף VPC Networks במסוף Google Cloud ובודקים את העמודה Mode.
- מריצים את הפקודה
gcloud compute networks listובודקים את השדהSUBNET_MODE.
Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'אם מופיעה ההודעה הזו, לחשבון שאיתו התחברתם אין את הרשאות ה-IAM שנדרשות ליצירת מופע. מידע נוסף על התפקידים שנדרשים ליצירת מכונות זמינות במאמר הרשאות, IAM ומכונות עם כמה ממשקי רשת. אתם יכולים לבדוק אם מדיניות ה-IAM שמשויכת לפרויקט מעניקה לכם אחד מהתפקידים הבאים:
OWNER, EDITORאוcompute.instanceAdmin.v1. כדי ליצור מכונות וירטואליות ב-VPC משותף, צריך גם את התפקידcompute.networkUser. בדוגמה הבאה, לחשבוןemail2@gmail.comאין הרשאות IAM מספיקות ליצירת מכונה. הוראות מפורטות יותר זמינות במדריך IAM במאמר הענקה, שינוי וביטול של הרשאות גישה למשאבים.gcloud projects get-iam-policy PROJECT_ID bindings: - members: - user:email1@gmail.com role: roles/owner - members: - serviceAccount:our-project-123@appspot.gserviceaccount.com - serviceAccount:123456789012-compute@developer.gserviceaccount.com role: roles/editor - members: - user:email2@gmail.com role: roles/viewer etag: BwUjMhXbSPU= version: 1אתם יכולים לבקש מבעלי הפרויקט או מהעורכים שלו להקצות לכם את התפקיד
OWNER,EDITORאוcompute.instanceAdmin.v1. תצטרכו גם את התפקידcompute.networkUserאם אתם משייכים ממשק כלשהו לרשת משנה ששייכת ל-VPC משותף.gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
אי אפשר להתחבר לכתובת ה-IP הפנימית של ממשק משני
בודקים את הכללים של חומת האש כדי לוודא שהם מאפשרים קישוריות לממשק המשני של המכונה הווירטואלית. כדי לבדוק את זה, אפשר לעיין בכללי חומת האש של הרשת שמצורפת לממשק המשני. אפשר לעשות את זה במסוף Google Cloud – פשוט לוחצים על רשת ה-VPC המתאימה – או באמצעות הפקודה הבאה של
gcloud.gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
בודקים אם אתם מנסים להתחבר לממשק משני מכתובת אינטרנט או מחוץ לרשת של הממשק המשני. אפשר להתחבר לכתובת IP פנימית של ממשק רק מתוך הרשת שלו. אם אתם צריכים להגיע לממשק הזה מחוץ לרשת, אתם יכולים להקצות כתובת IP חיצונית לממשק המשני.
בודקים אם אתם מנסים להתחבר לכתובת ה-IP הפנימית של הממשק המשני מחוץ לרשת המשנה שהממשק המשני מצורף אליה, מרשת משנה אחרת של אותה רשת או מרשת משנית. Multiple Network Interfaces per instance explains the interplay between VPC Peering and VM instances with multiple interfaces. כדי להגיע לממשקים משניים מחוץ לרשת המשנה של הממשק, יכול להיות שתצטרכו להגדיר נתיבים במכונה הווירטואלית. במאמר מפרטים מוסבר איך DHCP מתכנת מסלולי ברירת מחדל במכונה הווירטואלית.
אם אתם מנסים לגשת לכתובת IPv6, כדאי לעיין גם במאמר לא מצליח להתחבר לכתובת IPv6 של ממשק משני.
לא הצלחתי להתחבר לממשק משני באמצעות כתובת IP חיצונית
שרת ה-DHCP מתכנת נתיב ברירת מחדל רק בממשק הרשת הראשי של המכונה הווירטואלית. אם רוצים להתחבר לממשק המשני באמצעות כתובת IP חיצונית, יש שתי אפשרויות. אם אתם צריכים להתחבר מחוץ לרשת רק בממשק הרשת המשני, אתם יכולים להגדיר נתיב ברירת מחדל בממשק הרשת הזה. אפשר גם להשתמש בגישה שמתוארת במדריך הגדרת ניתוב לממשק נוסף כדי להגדיר טבלת ניתוב נפרדת באמצעות ניתוב מדיניות מבוסס-מקור במכונה הווירטואלית.
אם אתם מנסים לגשת לכתובת IPv6, כדאי לעיין גם במאמר לא מצליח להתחבר לכתובת IPv6 של ממשק משני.
אי אפשר להתחבר לכתובת IPv6 של ממשק משני
אם אתם מנסים לגשת לכתובת IPv6, צריך לוודא שבמכונה הווירטואלית מותקנת גרסה google-guest-agent20220603.00 ואילך. מידע נוסף על ניהול google-guest-agent
גרסאות זמין במאמר סביבת אורח.
אם יש לכם גרסה קודמת של google-guest-agent, הממשקים המשניים לא מקבלים מסלול רשת משנה של IPv6. מומלץ לעדכן את סוכן האורח כדי שהנתיבים יוגדרו בצורה נכונה.
עם זאת, כפתרון עקיף, אפשר ליצור סקריפט לטעינה בזמן ההפעלה כדי לבצע את שינוי ההגדרה הבא לכל ממשק משני.
sudo sysctl -w net.ipv6.conf.INTERFACE_NAME.accept_ra_rt_info_max_plen=128
מחליפים את INTERFACE_NAME בשם הממשק – לדוגמה, eth1 או ens5.
נתקלתי בבעיות קישוריות כשהשתמשתי במסכת רשת שלא הייתה /32
מידע על הגדרת ממשקי רשת עם מסכות רשת שונות מ-/32 זמין במאמר מסכות רשת של מכונות Compute.
לא ניתן לזהות את שם המארח הפנימי של מכונה וירטואלית עם כמה ממשקי רשת
כשמריצים שאילתת DNS עם שם מארח פנימי, היא מתורגמת לממשק הרשת הראשי (nic0) של המכונה.
אם nic0 מצורף לרשת VPC ששונה מרשת ה-VPC של המופע ששולח את שאילתת ה-DNS, שאילתת ה-DNS תיכשל.
רזולוציית DNS פנימית מתבצעת רק בתוך רשת VPC נתונה. למידע נוסף, ראו DNS פנימי של Compute Engine.
מוצגת שגיאה כשמנסים למחוק NIC דינמי על ידי עדכון של מאפייני המופע
במקרים נדירים, אם מוחקים ממשק רשת דינמי (NIC) כשמעדכנים את המאפיינים של מופע, יכול להיות שהעדכון ייכשל. אחרי הכשל, המופע חוזר למצב המקורי שלו. במקרים נדירים מאוד, יכול להיות שכרטיס ה-NIC הדינמי יישאר מחוק.
אם נתקלים בבעיה הזו, אפשר לנסות את הפעולות הבאות:
כדי לפתור את הבעיה: משתמשים באותה פקודה או בקשה כדי לעדכן שוב את מאפייני המכונה. הפעלה מחדש של הפעולה מבטיחה שהמופע יגיע למצב שציינתם בבקשה המקורית.
כדי למנוע את הבעיה בעתיד: אל תמחקו כרטיסי NIC דינמיים ממופע על ידי עדכון של מאפייני המופע. במקום זאת, אפשר למחוק ישירות כרטיסי NIC דינמיים כמו שמתואר במאמר מחיקת כרטיסי NIC דינמיים.
מופיעה שגיאה כשמוחקים NIC דינמי על ידי עדכון של הגדרות MIG
במקרים נדירים, אם מוחקים NIC דינמי כשמעדכנים הגדרות של מכונה בקבוצת מופעים מנוהלת (MIG), יכול להיות שהעדכון ייכשל. אחרי כשל, המופעים חוזרים למצב המקורי שלהם.
Compute Engine פותר את הבעיה הזו באופן אוטומטי על ידי ניסיון חוזר של פעולת העדכון עד שהיא מצליחה. אתם יכולים לבדוק את הסטטוס של המופעים המנוהלים מעת לעת עד שהשגיאה בניסיון האחרון תיפתר.
פתרון בעיות באמצעות המסוף הטורי
לרוב מומלץ להפעיל את המסוף הטורי במכונה וירטואלית כדי לנפות באגים בבעיות שקשורות להגדרות. כדי להפעיל את המסוף הטורי לניפוי באגים אינטראקטיבי, פועלים לפי השלבים במאמר פתרון בעיות באמצעות המסוף הטורי.