כתובות 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:

    • כששער 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, אתם יכולים להשתמש בהקצאות ידניות של כתובות IP ל-NAT. הקצאה ידנית של כתובות IP של NAT מאפשרת הפסקת שימוש בכתובות IP ציבוריות של NAT.

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

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

    • אפשר להגדיל או להקטין את מספר כתובות ה-IP של NAT שהוקצו באופן ידני על ידי עריכת שער Cloud NAT.
    • כשמשתמשים בהקצאה ידנית של כתובות IP ל-NAT, צריך לחשב את מספר כתובות ה-IP החיצוניות האזוריות שדרושות לשער Public NAT. אם לשער שלכם נגמרות כתובות ה-IP של NAT, ‏ Public 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. ב-egress,‏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) משתנה, כדאי להגדיר הקצאה דינמית של יציאות.

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

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

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

הקצאה דינמית של יציאות מופעלת כברירת מחדל ב-NAT פרטי. ב-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 לטווח כתובות ה-IPv4 הראשי של רשת המשנה שבה משתמש ממשק הרשת של המכונה הווירטואלית, השער מבצע NAT גם לכתובת ה-IPv4 הפנימית הראשית של המכונה הווירטואלית וגם לכל טווח כתובות ה-IP של הכינוי של המכונה הווירטואלית מטווח כתובות ה-IPv4 הראשי של רשת המשנה.

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

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

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

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

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

    • המספר 1,024

    בכל המצבים האחרים, כולל כשמוגדרת הקצאה דינמית של יציאות, שער Cloud NAT ממשיך לשלב הבא באמצעות היציאות המינימליות שצוינו לכל מכונה וירטואלית כקלט. אם לא מציינים את מספר היציאות המינימלי לכל מופע של מכונה וירטואלית, נעשה שימוש בערך ברירת המחדל: 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 מקצה יציאות נוספות, עד הערך שצוין ביציאות מקסימליות לכל מכונת VM. אחרי שהשימוש ביציאות של המכונה הווירטואלית ירד מתחת לסף, היציאות ישוחררו ויוקצו למכונות וירטואליות אחרות.

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

אם הגדרתם שער 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.

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

דוגמאות:

  • השער תומך ב-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. כתוצאה מכך, יכול להיות שמספר החיבורים בו-זמנית שמכונה וירטואלית של לקוח יכולה ליצור לטריפלט ייחודי של יעד יצטמצם אם NAT ציבורי מקצה את אותו טריפלט של כתובת IP של מקור ושל יציאת מקור של NAT ליותר מכתובת IP פנימית אחת וליותר מיציאת מקור זמנית אחת של מכונה וירטואלית של לקוח. הסיכוי שזה יקרה גדל אם למכונת ה-VM של הלקוח יש מספר גדול של כתובות IP פנימיות של המקור, והיא יוצרת מספר גדול של חיבורים לאותו טריפל של יעד. בפעם הראשונה שמכונת 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 יעד. יכול להיות ש-Public NAT יקצה את אותו טווח של כתובת IP של מקור NAT ויציאת מקור לשני טווחי כתובות ה-IP הפנימיות האלה ויציאות המקור הזמניות, ויגרום לסכסוך בלתי תלוי בנקודת הקצה במצבים מסוימים.

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

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

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

עיכוב בשימוש חוזר ביציאת מקור TCP

כשמכונה וירטואלית שמשתמשת בשער Cloud NAT סוגרת חיבור TCP, שני עיכובים בלתי תלויים נכנסים לתוקף:

  • פסק הזמן של Cloud NAT TIME_WAIT: ‏Cloud NAT אוכף השהיה לפני שהוא יכול למפות חיבור חדש לאותו 5-tuple אחרי NAT (כתובת IP של מקור NAT, יציאת מקור NAT, כתובת IP של יעד, יציאת יעד ופרוטוקול). ההשהיה הזו נשלטת על ידי ההגדרה TCP TIME_WAIT Timeout. ערך ברירת המחדל של TIME_WAIT ב-Cloud NAT הוא 30 שניות או 120 שניות, בהתאם למועד שבו יצרתם את השער. כאן מוסבר איך מגדירים ערך זמן קצוב לתפוגה (timeout) של Cloud NAT בהתאמה אישית.TIME_WAIT

  • הזמן הקצוב לתפוגה של TIME_WAIT במכונה הוירטואלית: למערכת ההפעלה של מכונת הלקוח הוירטואלית יש TIME_WAIT משלה, שמייצג את העיכוב לפני שמכונת הלקוח הוירטואלית יכולה ליצור חיבור חדש באמצעות 5-tuple זהה לפני NAT (כתובת IP מקורית, יציאת מקור, כתובת IP של יעד, יציאת יעד ופרוטוקול). במערכות Linux, ערך ברירת המחדל של TIME_WAIT הוא 60 שניות, ובמערכות Windows, ערך ברירת המחדל של TIME_WAIT הוא 240 שניות.

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

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

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

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

  • כדי שתהליך שרשור היציאות יקצה למכונה הווירטואלית יותר כתובות 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, תוכלו לתמוך ב-2, 016 מכונות וירטואליות,אם תשמרו על מספר הפורטים המינימלי לכל מכונה וירטואלית (64).

    ⌊(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, ומגדירים את המספר המינימלי של יציאות לכל מכונה וירטואלית ל-64, השער יכול לספק שירותי NAT לעד 6,048 מכונות וירטואליות:

    ‫⌊(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 של המקור ובטופל של יציאת המקור הבאים: 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.

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

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