כתובות 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 החיצוניות האזוריות שדרושות לשער Public 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 שהוקצתה באופן ידני. הפעולה Draining (ניקוי) מורה לשער 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 המערכת משתמשת בערך ברירת המחדל.
הקצאת יציאות סטטית מופעלת כברירת מחדל ב-NAT ציבורי. לעומת זאת, ב-NAT פרטי מופעלת כברירת מחדל הקצאת יציאות דינמית.
מכיוון שלכל המכונות הווירטואליות מוקצה אותו מספר יציאות, הקצאה סטטית של יציאות מתאימה במיוחד אם השימוש בתעבורת נתונים יוצאת (egress) של כל המכונות הווירטואליות דומה. כשמוגדרת הקצאה סטטית של יציאות, מספר היציאות שמוקצות לכל מכונה וירטואלית הוא קבוע ולא משתנה אם חלק מהמכונות הווירטואליות משתמשות ביותר יציאות מאחרות או אם מכונה וירטואלית ממצה את כל היציאות שלה. אם השימוש בתעבורת נתונים יוצאת משתנה, כדאי להגדיר הקצאת יציאות דינמית.
אם רוצים להגדיר מיפוי ללא תלות בנקודת קצה בשער NAT ציבורי, צריך להשתמש בהקצאת יציאות סטטית. מיפוי ללא תלות בנקודת קצה (Endpoint-Independent Mapping) לא זמין לשערי NAT פרטיים.
הקצאת יציאות דינמית
כשמגדירים הקצאה דינמית של יציאות, מציינים מספר מינימלי של יציאות לכל מכונת VM ומספר מקסימלי של יציאות לכל מכונת VM.
הקצאה דינמית של יציאות מופעלת כברירת מחדל ב-NAT פרטי. ב-NAT ציבורי, הקצאה סטטית של יציאות מופעלת כברירת מחדל.
הגדרת הקצאה דינמית של יציאות מאפשרת לאותו שער Cloud NAT להקצות מספרים שונים של יציאות לכל VM, בהתאם לשימוש ב-VM. בהתחלה, למכונה וירטואלית מוקצה מספר היציאות המינימלי לכל מכונה וירטואלית. אם מכונה וירטואלית קרובה למיצוי כל היציאות שהוקצו לה, מספר היציאות שמוקצות למכונה הווירטואלית מוכפל. המכונה הווירטואלית יכולה לבקש שוב ושוב עוד יציאות, עד למספר המקסימלי של יציאות לכל מכונה וירטואלית. כשהשימוש ביציאה יורד באופן משמעותי, המערכת מבטלת את ההקצאה של היציאות, ואפשר להקצות אותן למכונות וירטואליות אחרות שמשתמשות באותו שער NAT.
להקצאה דינמית של יציאות יש את היתרונות הבאים:
מספר היציאות שהוקצו אבל לא נמצאות בשימוש יצטמצם.
שער ה-NAT עוקב אחרי השימוש ביציאות של כל מכונה וירטואלית ומשנה את מספר היציאות שהוקצו לכל מכונה וירטואלית בהתאם לצורך. אין צורך לעקוב אחרי השימוש ביציאה או לשנות את ההגדרות של שער ה-NAT.
לפני שמשתמשים בהקצאה דינמית של יציאות, כדאי לקחת בחשבון את הנקודות הבאות:
אם מיפוי ללא תלות בנקודת קצה מופעל בשער Cloud NAT, אי אפשר להגדיר הקצאת יציאות דינמית. אם אתם צריכים מיפוי ללא תלות בנקודת קצה, אתם צריכים להשתמש בהקצאת יציאות סטטית.
בזמן שהקצאת יציאות נוספות למכונות וירטואליות מתבצעת, יכול להיות שיופיעו הודעות על זמן קצוב לתפוגה של החיבור או על זמן אחזור. כדי לקבל מידע על אסטרטגיות שיעזרו לכם למנוע ניתוקים, אפשר לעיין במאמר בנושא הפחתת ניתוקים באמצעות הקצאה דינמית של יציאות.
החלפת שיטת הקצאת יציאות
אפשר לעבור בין הקצאת יציאות סטטית לבין הקצאת יציאות דינמית לשער Cloud NAT נתון.
המעבר לשיטת הקצאת היציאות הדינמית גורם לניתוק של חיבורי ה-NAT הקיימים רק אם מתקיים אחד מהתנאים הבאים:
מגדירים את המספר המקסימלי של יציאות לכל מכונה וירטואלית לערך שקטן מהמספר המינימלי של יציאות לכל מכונה וירטואלית שצוין בהגדרת ה-NAT הקודמת (עם הקצאת יציאות סטטית).
אם בהגדרה הקודמת, מספר היציאות המינימלי לכל מכונה וירטואלית הוגדר למספר גדול מ-
1024, ואם בהגדרה החדשה ציינתם1024כמספר היציאות המקסימלי לכל מכונה וירטואלית, החיבורים הקיימים ייפסקו כי התנאי הראשון מקבל עדיפות.הגדרתם את המספר המקסימלי של יציאות לכל מכונה וירטואלית לערך שקטן מ-
1024.
אלא אם מתקיים אחד מהתנאים הקודמים, המעבר להקצאת יציאות דינמית לא יגרום לניתוק של חיבורי NAT קיימים.
השבתה של הקצאת יציאות דינמית ומעבר להקצאת יציאות סטטית גורמים לשיבוש, והם מנתקים את כל חיבורי ה-NAT הפעילים.
תהליך הזמנת העברה
ב-Cloud NAT נעשה שימוש בהליך הבא כדי להקצות כתובת IP של מקור NAT וטפלים של יציאת מקור NAT לכל מכונה וירטואלית ששער Cloud NAT (גם Public NAT וגם Private NAT) משרת.
Cloud NAT קובע את כתובות ה-IP הפנימיות של המכונות הווירטואליות שעבורן צריך לבצע NAT. כתובות ה-IP הפנימיות של ה-VM נקבעות לפי טווח כתובות ה-IP של תת-הרשת שהוגדר בשער.
אם שער NAT ציבורי מוגדר לבצע NAT עבור טווח כתובות ה-IP הראשי של רשת המשנה שבה משתמש ממשק הרשת של המכונה הווירטואלית, השער מבצע NAT עבור גם כתובת ה-IP הפנימית הראשית של המכונה הווירטואלית וגם עבור טווח כתובות ה-IP של הכינוי של המכונה הווירטואלית מטווח כתובות ה-IP הראשי של רשת המשנה.
אם שער NAT ציבורי מוגדר לבצע NAT עבור טווח כתובות IP משני של רשת המשנה שבה משתמש ממשק הרשת של המכונה הווירטואלית, השער מבצע NAT עבור כל טווחי כתובות ה-IP של הכינויים מטווח כתובות ה-IP המשני של רשת המשנה הזו.
מכיוון ששער NAT פרטי מוגדר לבצע NAT לכל טווחי כתובות ה-IP של תת-הרשת שבה נעשה שימוש בממשק הרשת של מכונת ה-VM, השער מבצע NAT לכל טווחי כתובות ה-IP מתת-הרשת הזו.
שירות Cloud NAT מתאים את מספר היציאות המינימלי לכל מכונה וירטואלית אם יש צורך בכך. אם מוגדרת הקצאה סטטית של יציאות, והשער מבצע NAT לטווחים של כתובות IP של כינויים שיש להם יותר מכתובת אחת (מסכת רשת קטנה מ-
/32), שירות Cloud NAT משנה את מספר היציאות המינימלי לכל מכונת VM למקסימום מבין שני הערכים הבאים:מספר היציאות המינימלי לכל מכונה וירטואלית שאתם מציינים
המספר 1,024
בכל מצב אחר, כולל כשמוגדרת הקצאה דינמית של יציאות, שער Cloud NAT ממשיך לשלב הבא באמצעות היציאות המינימליות שצוינו לכל מכונת VM כקלט. אם לא מציינים את מספר היציאות המינימלי לכל מכונה וירטואלית, נעשה שימוש בערך ברירת המחדל:
64להקצאת יציאות סטטית ו-32להקצאת יציאות דינמית.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.
נניח ששער 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. יכול להיות ש-Public 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 לטווח כתובות ה-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 יציאות לכל מכונת VM × 2)⌋ = 2,016 מכונות VM
בדוגמה הקודמת, אם מגדירים את המספר המינימלי של יציאות לכל מכונה וירטואלית ל-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 חיצונית לממשק הרשת שלה.
המכונה הווירטואלית פותחת חיבור עם המאפיינים הבאים:
- כתובת ה-IP הפנימית של המקור והיציאה:
10.0.0.2:10001 - שלישיית היעד:
203.0.113.1:80באמצעות TCP - NAT ציבורי משתמש בכתובת ה-IP של מקור ה-NAT ובטופל של יציאת המקור הבאים:
192.0.2.10:30009
- כתובת ה-IP הפנימית של המקור והיציאה:
המכונה הווירטואלית פותחת חיבור שני עם המאפיינים הבאים:
- כתובת ה-IP הפנימית של המקור והיציאה:
10.0.0.2:10002 - שלישיית היעד:
203.0.113.2:80באמצעות TCP - יכול להיות ש-NAT ציבורי יבחר להשתמש בטופל של כתובת ה-IP של המקור של NAT ובמספר יציאת המקור זהים,
192.0.2.10:30009, גם עבור החיבור הזה. אפשר להשתמש באותה כתובת IP של מקור NAT ובאותו טאפל של יציאת מקור עבור כתובת IP שונה של לקוח ויציאת מקור זמנית.
- כתובת ה-IP הפנימית של המקור והיציאה:
בזמן שגם החיבור הראשון וגם החיבור השני פעילים, אי אפשר לפתוח חיבור TCP שלישי עם המאפיינים הבאים:
- אותה כתובת IP פנימית ומספר יציאה כמו בחיבור הראשון:
10.0.0.2:10001 - אותו טווח 3-tuple של יעד כמו בחיבור השני:
203.0.113.2:80באמצעות TCP
ניסיון החיבור השלישי נכשל עם שגיאת התנגשות בלתי תלויה בנקודת הקצה, כי המיפוי הבלתי תלוי בנקודת הקצה שנוצר על ידי החיבור הראשון מחייב שכל החיבורים מ-
10.0.0.2:10001ישתמשו באותה כתובת IP של מקור NAT ובאותו טווח יציאות של מקור,192.0.2.10:30009. עם זאת, השם192.0.2.10:30009כבר נמצא בשימוש בחיבור ה-TCP השני אל203.0.113.2:80.- אותה כתובת IP פנימית ומספר יציאה כמו בחיבור הראשון:
כדי למנוע דו-משמעות, ניסיון חיבור נוסף בדוגמה הזו יצליח אם אחד מהתנאים הבאים יתקיים:
- החיבור הראשון של 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.
- החיבור הראשון של TCP נסגר. סגירת החיבור מסירה את המיפוי הבלתי תלוי בנקודת הקצה בין
במאמר צמצום התנגשויות בלתי תלויות בנקודת קצה מוסבר על שיטות שאפשר להשתמש בהן כדי להימנע מהתנגשויות.
המאמרים הבאים
- מגדירים שער Public NAT.
- מגדירים שער Private NAT.
- יוצרים הגדרה לדוגמה של Compute Engine.
- יוצרים הגדרה לדוגמה של GKE.
- פתרון בעיות נפוצות