כתובות IP ויציאות

בדף הזה מוסבר איך שערים של Cloud NAT משתמשים בכתובות IP, ואיך הם מקצים יציאות מקור למופעים של מכונות וירטואליות (VM) ב-Compute Engine ולצמתים של Google Kubernetes Engine‏ (GKE) שמשתמשים בשערים.

לפני שקוראים את המידע הזה, מומלץ לעיין בסקירה הכללית על Cloud NAT.

כתובות IP ציבוריות של NAT

כתובת IP ציבורית של NAT היא כתובת IP חיצונית אזורית שאפשר לנתב באינטרנט. מכונה וירטואלית ללא כתובת IP חיצונית, שנמצאת ברשת משנה (subnet) שמשרת שער NAT ציבורי, משתמשת בכתובת IP של NAT ציבורי כשהיא שולחת מנות ליעד באינטרנט.

כדי להקצות כתובות IP של תרגום כתובות רשת (NAT) לשער NAT ציבורי, משתמשים באחת מהשיטות הבאות:

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

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

    בנוסף, NAT ציבורי מסיר אוטומטית כתובת IP של NAT כשאין יותר צורך ביציאות מקוריות בכתובת ה-IP הזו של NAT.

    אלה המאפיינים של הקצאת כתובות IP של NAT באופן אוטומטי:

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

      אפשר לראות את כתובות ה-IP של NAT שנוספו באופן אוטומטי ברשימה של כתובות IP חיצוניות סטטיות. הכתובות האלה לא נכללות במכסות לכל פרויקט.

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

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

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

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

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

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

הקצאה ידנית של כתובות IP במסלול פרימיום ובמסלול הרגיל

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

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

החלפת שיטת ההקצאה

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

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

הוצאת כתובות IP של NAT ציבורי

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

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

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

כתובות IP פרטיות של NAT

כתובת NAT פרטית היא כתובת IPv4 פנימית אזורית שמגיעה מטווח כתובות ה-IPv4 הראשי של תת-רשת NAT פרטית שנמצאת באותו אזור ובאותה רשת VPC כמו שער NAT פרטי. אי אפשר לנתב באינטרנט כתובת IP פרטית של NAT. אפשר להשתמש בכתובות IP מטווחי כתובות IPv4 ראשיים של רשתות משנה של NAT פרטי רק בשערי NAT פרטיים. כדי ליצור רשת משנה של NAT פרטי, מוסיפים רשת משנה של IPv4 בלבד באמצעות Google Cloud CLI והדגל --purpose=PRIVATE_NAT.

אחרי שמגדירים שער NAT פרטי כדי לספק שירותי NAT לתת-רשת ברשת VPC, מכונות וירטואליות עם ממשקי רשת באותה תת-רשת יכולות לשלוח מנות למשאבים שנמצאים ברשתות אחרות, כמו רשתות VPC שמצורפות לאותו מרכז Network Connectivity Center כמו הרשת שמארחת את שער ה-NAT הפרטי, או רשתות מחוץ ל- Google Cloud שמחוברות ל-Google Cloud דרך Cloud Interconnect או Cloud VPN. ביציאה,Google Cloud משנה את כתובת ה-IP של המקור לכתובת IP מתת-הרשת של NAT פרטי שמשויכת לשער.

המאפיינים של כתובות IP פרטיות של NAT הם:

  • אי אפשר להקצות באופן אוטומטי כתובות IP של NAT פרטי לשער NAT פרטי. במקום זאת, כשיוצרים כלל בשער NAT פרטי, מציינים באופן ידני את רשתות המשנה של ה-NAT הפרטי. רשתות משנה של NAT פרטי צריכות להיות באותה רשת VPC ובאותו אזור כמו השער. השער משתמש בכתובות IP רק מטווח כתובות ה-IPv4 הראשי של רשתות המשנה של NAT פרטי.
  • כדי לקבוע כמה כתובות IP של NAT יכולה לספק כל רשת משנה של NAT פרטי, משתמשים בנוסחה הבאה: 2(32 - PREFIX_LENGTH) - 4, כאשר PREFIX_LENGTH הוא אורך מסכה של רשת משנה של טווח כתובות ה-IPv4 הראשי של רשת המשנה של NAT פרטי. ארבע כתובות IP לא ניתנות לשימוש בכל טווח כתובות IPv4 ראשי של רשת משנה.

יציאות

כל כתובת IP של NAT בשער Cloud NAT (גם NAT ציבורי וגם NAT פרטי) מציעה 64,512 יציאות מקור TCP ו-64,512 יציאות מקור UDP. כל אחד מהפרוטוקולים TCP ו-UDP תומך ב-65,536 יציאות לכל כתובת IP. ב-Cloud NAT לא נעשה שימוש ביציאות מוכרות (עם הרשאות) (0 עד 1,023).

כששער Cloud NAT מבצע תרגום כתובות רשת (NAT) של המקור (SNAT) בחבילת נתונים שנשלחת על ידי מכונה וירטואלית, הוא משנה את כתובת ה-IP של המקור ב-NAT ואת יציאת המקור של חבילת הנתונים.

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

אם הקציתם באופן ידני כמה כתובות IP חיצוניות אזוריות סטטיות (שמורות) לשער NAT ציבורי, מכונה וירטואלית אחת שמשתמשת בשער יכולה לקבל את היציאות הנדרשות מכל אחת מכתובות ה-IP של ה-NAT שהוקצו – ואפילו מכמה כתובות IP של NAT בו-זמנית.

הקצאה סטטית של יציאות

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

הקצאת יציאות סטטית מופעלת כברירת מחדל ב-Public NAT. לעומת זאת, ב-Private NAT מופעלת כברירת מחדל הקצאת יציאות דינמית.

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

אם רוצים להגדיר מיפוי ללא תלות בנקודת קצה בשער NAT ציבורי, צריך להשתמש בהקצאת יציאות סטטית. מיפוי ללא תלות בנקודת קצה (Endpoint-Independent Mapping) לא זמין לשערי NAT פרטיים.

הקצאת יציאות דינמית

כשמגדירים הקצאת יציאות דינמית, מציינים מספר מינימלי של יציאות לכל מכונת VM ומספר מקסימלי של יציאות לכל מכונת VM.

הקצאה דינמית של יציאות מופעלת כברירת מחדל ב-Private NAT. ב-Public NAT, הקצאה סטטית של יציאות מופעלת כברירת מחדל.

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

להקצאה דינמית של יציאות יש את היתרונות הבאים:

  • מספר היציאות שהוקצו אבל לא נמצאות בשימוש יצטמצם.

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

לפני שמשתמשים בהקצאה דינמית של יציאות, כדאי לשקול את הנקודות הבאות:

  • אם מיפוי ללא תלות בנקודת קצה מופעל בשער Cloud NAT, אי אפשר להגדיר הקצאה דינמית של יציאות. אם אתם צריכים מיפוי ללא תלות בנקודת קצה, אתם צריכים להשתמש בהקצאת יציאות סטטית.

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

החלפת שיטת הקצאת היציאות

אפשר לעבור בין הקצאת יציאות סטטית לבין הקצאת יציאות דינמית עבור שער Cloud NAT נתון.

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

  • מגדירים את המספר המקסימלי של יציאות לכל מכונה וירטואלית לערך שקטן מהמספר המינימלי של יציאות לכל מכונה וירטואלית שצוין בהגדרת ה-NAT הקודמת (עם הקצאת יציאות סטטית).

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

  • הגדרתם את המספר המקסימלי של יציאות לכל מכונה וירטואלית לערך שקטן מ-1024.

אלא אם מתקיים אחד מהתנאים הקודמים, המעבר להקצאת יציאות דינמית לא יגרום לניתוק של חיבורי NAT קיימים.

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

תהליך הזמנת העברה

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

  1. Cloud NAT קובע את כתובות ה-IP של המכונות הווירטואליות שעבורן צריך לבצע NAT. שירות Cloud NAT יכול לבצע NAT לכתובות IPv4 פנימיות (NAT44) ולכתובות IPv6 פנימיות וחיצוניות (NAT64).

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

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

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

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

    ב-NAT64, שער Cloud NAT מבצע NAT לכתובות IPv6 פנימיות וחיצוניות.

  2. שירות Cloud NAT מתאים את מספר היציאות המינימלי לכל מכונה וירטואלית אם יש צורך בכך. אם מוגדרת הקצאה סטטית של יציאות, והשער מבצע NAT לטווחים של כתובות IP של כינויים שיש להם יותר מכתובת אחת (מסכת רשת קטנה מ-/32), שירות Cloud NAT משנה את מספר היציאות המינימלי לכל מכונת VM למקסימום מבין שני הערכים האלה:

    • מספר הפורטים המינימלי לכל מכונה וירטואלית שאתם מציינים

    • המספר 1,024

    בכל המצבים האחרים, כולל כשמוגדרת הקצאה דינמית של יציאות, שער Cloud NAT ממשיך לשלב הבא באמצעות היציאות המינימליות שצוינו לכל מכונת VM כקלט. אם לא מציינים את מספר היציאות המינימלי לכל מכונה וירטואלית, נעשה שימוש בערך ברירת המחדל: 64 להקצאת יציאות סטטית ו-32 להקצאת יציאות דינמית.

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

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

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

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

    • שער Cloud NAT מקצה לכל מכונה וירטואלית טפלים של כתובת IP של המקור ושל יציאת המקור.

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

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

הגדלת מספר היציאות לכל מכונה וירטואלית

אם הגדרתם שער Cloud NAT עם הקצאת יציאות סטטית, לא תהיה הפרעה לתעבורה כשתגדילו את מספר היציאות המינימלי לכל מכונה וירטואלית בשער.

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

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

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

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

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

הפחתת מספר היציאות לכל מכונה וירטואלית

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

אם הגדרתם שער Cloud NAT עם הקצאה דינמית של יציאות, ההצהרות הבאות נכונות:

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

יציאות וחיבורים

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

  • יעד ייחודי הוא טריפלט ייחודי שכולל כתובת IP של יעד, יציאת יעד ופרוטוקול IP (כמו TCP או UDP).

  • חיבור הוא 5-tuple ייחודי שכולל את כתובת ה-IP של מקור ה-NAT ואת ה-tuple של יציאת המקור, בשילוב עם 3-tuple ייחודי של היעד. מכיוון שפרוטוקול ה-UDP הוא פרוטוקול ללא חיבור, מושג החיבור מצטמצם ל-5-tuple שמשויך ל-UDP datagram ייחודי.

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

דוגמאות:

  • השער תומך ב-1,024 חיבורים בו-זמניים לכתובת ה-IP של היעד 203.0.113.99 ביציאה 80 באמצעות פרוטוקול TCP.

  • השער תומך ב-1,024 חיבורים בו-זמניים נוספים לאותה כתובת IP של היעד ביציאה 443, גם באמצעות פרוטוקול TCP.

  • השער תומך ב-1,024 חיבורים בו-זמניים נוספים לכתובת IP אחרת של יעד ביציאה 80, גם באמצעות פרוטוקול TCP.

שימוש חוזר ביציאה בו-זמנית ומיפוי בלתי תלוי בנקודת קצה

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

‫NAT ציבורי משתמש במיפוי בלתי תלוי בנקודת קצה, כפי שמוגדר בסעיף 2.3 של RFC 5128. כתוצאה מכך, מספר החיבורים בו-זמנית שמכונה וירטואלית של לקוח יכולה ליצור ליעד ייחודי של 3 טאפלים עשוי להיות קטן יותר אם NAT ציבורי מקצה את אותו טאפל של כתובת IP של מקור ושל יציאת מקור של NAT ליותר מכתובת IP פנימית אחת וליותר מיציאת מקור זמנית של מכונה וירטואלית של לקוח. הסיכויים לכך גדלים אם למכונת ה-VM של הלקוח יש מספר גדול של כתובות IP פנימיות של מקורות, והיא יוצרת מספר גדול של חיבורים לאותו יעד של 3-tuple. בפעם הראשונה שמכונת VM של לקוח שולחת מנה מכתובת IP פנימית ומנמל מקור אפימרי, שירות ה-NAT הציבורי יוצר מיפוי מסוג רבים לאחד שאינו תלוי בנקודת קצה בין הרכיבים הבאים:

  • הטופל של כתובת ה-IP הפנימית ויציאת המקור האפימרית
  • טופל של כתובת IP של מקור NAT ויציאת מקור ייחודיות

לדוגמה, כשמכונת VM של לקוח שולחת מנה מכתובת ה-IP הפנימית שלה 10.0.0.2 באמצעות יציאת מקור ארעית 10001, שירות ה-NAT הציבורי מקצה 10.0.0.2:10001. הטופל של כתובת ה-IP של המקור ושל יציאת המקור של NAT משמש לכל החיבורים הבאים מ-10.0.0.2:10001 לכל טופל של 3 רכיבים של יעד.

אם אותה מכונה וירטואלית משתמשת ביציאת מקור אפימרית שונה כדי לשלוח חבילת נתונים, למשל 10.0.0.2:20002, גם NAT ציבורי מקצה טופל של כתובת IP של מקור NAT ויציאת מקור לכל החיבורים הבאים מ-10.0.0.2:20002 לכל טופל של יעד 3. יכול להיות ש-NAT ציבורי יקצה את אותה כתובת IP של מקור NAT ואת אותו טאפל של יציאת מקור לשני הטאפלים האלה של כתובת IP פנימית ויציאת מקור זמנית, ויגרום לקונפליקט בלתי תלוי בנקודת הקצה במצבים מסוימים.

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

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

אפשר לבצע שינויים בהגדרות כדי לצמצם את ההתנגשויות הבלתי תלויות בנקודת הקצה. מידע נוסף זמין במאמר Packets dropped with reason endpoint independent conflict (מנות שהושמטו בגלל סכסוך בלתי תלוי בנקודת הקצה).

השהיה לשימוש חוזר ביציאת מקור TCP

אחרי ששער Cloud NAT סוגר חיבור TCP, Google Cloud הוא מחכה פרק זמן מסוים לפני שהוא יכול להשתמש מחדש באותה כתובת IP של מקור NAT ובאותו טווח של יציאות מקור עם אותו יעד (כתובת IP של יעד, יציאת יעד ופרוטוקול). משך ההשהיה נקבע על ידי ההגדרה TCP TIME_WAIT Timeout.

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

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

  • אם מכונה וירטואלית צריכה לפתוח ולסגור במהירות חיבורי TCP לאותה כתובת IP של יעד ולאותה יציאת יעד באמצעות אותו פרוטוקול, אז במקום Cloud NAT, מקצים כתובת IP חיצונית למכונה הווירטואלית ומשתמשים בכללים של חומת אש כדי להגביל חיבורים נכנסים לא רצויים.

יציאות מקור ואבטחה

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

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

  • מקצים כתובת IP חיצונית למכונה הווירטואלית במקום להשתמש ב-Public NAT.

דוגמאות

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

הזמנת יציאה

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

נניח שאתם מגדירים שער NAT ציבורי כדי לספק NAT לטווח כתובות ה-IP הראשי של רשת משנה, ולמכונות הווירטואליות שמשתמשות ברשת המשנה הזו אין טווחי כתובות IP של כינויים מטווח כתובות ה-IP הראשי של רשת המשנה. מעגלים כלפי מטה את התוצאה של כל פעולת חילוק למספר השלם הקרוב ביותר. ‫⌊⌋ היא פונקציית הערך השלם התחתון (המספר השלם הגדול ביותר), כלומר, כל תוצאה של חילוק שהיא לא מספר שלם נמחקת.

  • אם מגדירים את שער ה-NAT הציבורי עם כתובת IP אחת של NAT באמצעות הקצאה ידנית, ומגדירים את המספר המינימלי של יציאות לכל מופע של מכונה וירטואלית ל-64, השער יכול לספק שירותי NAT לעד 1,008 מכונות וירטואליות:

    ‫⌊(1 כתובת IP של NAT) × (64,512 יציאות לכל כתובת) / (64 יציאות לכל מכונת VM)⌋ = 1,008 מכונות VM

  • אם אתם צריכים לתמוך ביותר מ-1,008 מכונות וירטואליות, אתם יכולים להקצות כתובת IP שנייה של NAT לשער Cloud NAT. אם יש לכם שתי כתובות IP של NAT, ואתם שומרים על המספר המינימלי של יציאות לכל מכונה וירטואלית (64), תוכלו לתמוך ב-2,016 מכונות וירטואליות:

    ‫⌊(2 כתובות IP של NAT) × (64,512 יציאות לכל כתובת) / (64 יציאות לכל מכונת VM)⌋ = 2,016 מכונות VM

  • אם מגדירים את המספר המינימלי של יציאות לכל מכונה וירטואלית ל-4,096, כל כתובת IP של NAT יכולה לתמוך ב-15 מכונות וירטואליות. החישוב הזה מעוגל כלפי מטה למספר השלם הקרוב ביותר:

    ‫⌊(1 כתובות IP של NAT) × (64,512 יציאות לכל כתובת) / (4,096 יציאות לכל מכונה וירטואלית)⌋ = 15 מכונות וירטואליות

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

  • גודל רשת המשנה המינימלי שאפשר ליצור הוא שמונה כתובות IPv4, כלומר מסכה של רשת משנה של /29. אם מגדירים שער NAT פרטי עם רשת משנה של NAT בגודל מינימלי, ומגדירים את מספר הפורטים המינימלי לכל מכונה וירטואלית ל-64, השער יכול לספק שירותי NAT לעד 2,016 מכונות וירטואליות:

    ‫⌊(2(32-29) - 4) כתובות IP של NAT × (64,512 יציאות לכל כתובת) / (64 יציאות לכל מכונה וירטואלית × 2)⌋ = 2,016 מכונות וירטואליות

    בדוגמה הקודמת, אם מגדירים את המספר המינימלי של יציאות לכל מכונה וירטואלית ל-1,024, שער הרשת יכול לספק שירותי NAT לעד 126 מכונות וירטואליות:

    ‫⌊(2(32-29) - 4) כתובות IP של NAT × (64,512 יציאות לכל כתובת) / (1024 יציאות לכל מכונה וירטואלית × 2)⌋ = 126 מכונות וירטואליות

  • אם מגדירים שער NAT פרטי עם מסכה של רשת משנה NAT של /28, ומגדירים את המספר המינימלי של יציאות לכל מכונת VM ל-64, השער יכול לספק שירותי NAT לעד 6,048 מכונות VM:

    ‫⌊(2(32-28) - 4) כתובות IP של NAT × (64,512 יציאות לכל כתובת) / (64 יציאות לכל מכונה וירטואלית × 2)⌋ = 6,048 מכונות וירטואליות

התנגשות במיפוי שלא תלוי בנקודת הקצה

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

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

  1. המכונה הווירטואלית פותחת חיבור עם המאפיינים הבאים:

    • כתובת ה-IP הפנימית של המקור והיציאה: 10.0.0.2:10001
    • שלישיית היעד: 203.0.113.1:80 באמצעות TCP
    • ‫NAT ציבורי משתמש בכתובת ה-IP של מקור ה-NAT ובטופל של יציאת המקור הבאים: 192.0.2.10:30009
  2. המכונה הווירטואלית פותחת חיבור שני עם המאפיינים הבאים:

    • כתובת ה-IP הפנימית של המקור והיציאה: 10.0.0.2:10002
    • שלישיית היעד: 203.0.113.2:80 באמצעות TCP
    • יכול להיות ש-NAT ציבורי יבחר להשתמש באותה כתובת IP של מקור NAT וטופל של יציאת מקור,192.0.2.10:30009, גם עבור החיבור הזה. אפשר להשתמש באותה כתובת IP של מקור NAT ובאותו טאפל של יציאת מקור עבור כתובת IP שונה של לקוח ויציאת מקור זמנית.
  3. בזמן שגם החיבור הראשון וגם החיבור השני פעילים, אי אפשר לפתוח חיבור TCP שלישי עם המאפיינים הבאים:

    • אותה כתובת IP פנימית ויציאה של המקור כמו בחיבור הראשון: 10.0.0.2:10001
    • אותו טריפל של יעד כמו בחיבור השני: 203.0.113.2:80 באמצעות TCP

    ניסיון החיבור השלישי נכשל עם שגיאת התנגשות בלתי תלויה בנקודת הקצה, כי המיפוי הבלתי תלוי בנקודת הקצה שנוצר על ידי החיבור הראשון מחייב שכל החיבורים מ-10.0.0.2:10001 ישתמשו באותה כתובת IP של מקור NAT ובאותו טופל של יציאת מקור, 192.0.2.10:30009. עם זאת, כתובת ה-IP‏ 192.0.2.10:30009 כבר נמצאת בשימוש בחיבור ה-TCP השני אל 203.0.113.2:80.

  4. כדי למנוע אי-ודאות, ניסיון חיבור נוסף בדוגמה הזו יצליח אם אחד מהתנאים הבאים יתקיים:

    • החיבור הראשון ל-TCP נסגר. סגירת החיבור מסירה את המיפוי הבלתי תלוי בנקודת הקצה בין 10.0.0.2:10001 לבין 192.0.2.10:30009, כך שהחיבור השלישי יכול להיות ממופה לכתובת IP שונה של מקור NAT ולטופל של יציאת מקור כדי לתקשר עם 203.0.113.2:80 באמצעות TCP.
    • החיבור השני של TCP נסגר. סגירת החיבור מפנה את 10.0.0.2:10001 לשימוש בכתובת ה-IP של המקור ב-NAT ובמספר יציאת המקור 192.0.2.10:30009 כדי לתקשר עם 203.0.113.2:80 באמצעות TCP.
    • בניסיון החיבור השלישי נבחר יציאת מקור זמנית (פנימית) אחרת. בדוגמה הזו, מיפוי בלתי תלוי בנקודת קצה יצר מיפוי של רבים לאחד לכתובות IP פנימיות של מקור NAT ויציאות מקור 10.0.0.2:10001 ו-10.0.0.2:10002 לשימוש ב-192.0.2.10:30009 כשמתקשרים עם 203.0.113.2:80 באמצעות TCP. אם הניסיון השלישי להתחבר משתמש ביציאת מקור ארעית ששונה מ-10001 ומ-10002, יכול להיות שכתובת IP של מקור NAT ויציאת מקור שונות ישמשו לתקשורת עם 203.0.113.2:80 באמצעות TCP.
    • השבתה של ההגדרה 'נקודת קצה עצמאית'. ההשבתה מאפשרת לחיבור החדש מ-10.0.0.2:10001 לא להשתמש ב-192.0.2.10:30009, ולכן הוא יכול להשתמש בכתובת IP ויציאה שונות של מקור NAT.

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

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