כללי NAT של Cloud NAT
בדף הזה מוסבר על כללי NAT של Cloud NAT ל-NAT ציבורי. הכללים האלה מאפשרים להגדיר איך Cloud NAT משמש לחיבור לאינטרנט.
כללי NAT של Cloud NAT לתמיכה ב-NAT ציבורי מתבססים על תרגום כתובת רשת של המקור (SNAT) על סמך כתובת המקור או היעד.
כללי NAT
כברירת מחדל, כשמגדירים שער Cloud NAT ל-NAT ציבורי, המנות שמתורגמות על ידי שער ה-NAT הזה משתמשות באותה קבוצה של כתובות IP של NAT כדי להגיע לכל כתובות האינטרנט. אם אתם צריכים יותר שליטה על מנות שעוברות תרגום על ידי Cloud NAT, אתם יכולים להוסיף כללי NAT.
כלל NAT מגדיר תנאי התאמה ופעולה תואמת. אחרי שמציינים כללי NAT, כל מנה מותאמת לכל כלל NAT. אם חבילת נתונים תואמת לתנאי שמוגדר בכלל, הפעולה שמתאימה להתאמה הזו מתבצעת.
כללי NAT ציבורי תומכים בהתאמה של כתובת המקור וכתובת היעד:
- בכללים שמבוססים על מקור, מתבצעת התאמה של חבילות הנתונים לפי כתובת ה-IP של המקור. יש תמיכה רק בכתובות מקור מסוג IPv4.
- בכללים שמבוססים על יעד, המערכת מתאימה מנות לפי כתובת ה-IP של היעד. יש תמיכה רק בכתובות יעד מסוג IPv4.
אסור לשלב תנאים שמבוססים על המקור ועל היעד בכלל NAT יחיד. מידע נוסף זמין במאמר בנושא מפרטים של כללי NAT.
דוגמאות להגדרת כללי NAT ב-Cloud NAT
בקטע הזה מוצגות דוגמאות להגדרות של כללי NAT שמבוססים על מקור ועל יעד.
כללים שמבוססים על מקור
אפשר להשתמש בכללי NAT מבוססי-מקור לכל תעבורה שנתמכת על ידי NAT ציבורי. בקטע הזה מוצגת דוגמה להגדרה של מופעים של מכונות וירטואליות עם העברת IP מופעלת.
כברירת מחדל, כשמגדירים שער Cloud NAT לתעבורת IPv4 ברשת משנה, השער מספק NAT לכתובת ה-IP הפנימית הראשית ולטווחים של כתובות IP של כינויים של כל מכונה וירטואלית ברשת המשנה הזו. באמצעות כללי NAT מבוססי-מקור, אפשר גם להגדיר NAT למכונות וירטואליות שמעבירות מנות עם כתובות מקור אחרות.
בדוגמה הזו, Cloud NAT מוגדר ב-Subnet A. ברשת המשנה, מכונת VM עם כתובת ה-IP הפנימית הראשית 10.1.1.2 וטווח כתובות IP חלופיות 10.2.1.0/24 שולחת תנועה לאינטרנט. כדאי להביא בחשבון את הדרישות הבאות לגבי מופע ה-VM:
- אם חבילת נתונים מגיעה מטווח כתובות ה-IP
192.168.1.0/24, המכונה הווירטואלית צריכה להשתמש בכתובת ה-IP של NAT203.0.113.10כדי לשלוח תעבורה לכל יעד באינטרנט. - אם חבילת נתונים מגיעה מטווח כתובות ה-IP
192.168.2.0/24, המכונה הווירטואלית צריכה להשתמש בכתובת ה-IP של NAT203.0.113.20כדי לשלוח תעבורה לכל יעד באינטרנט. - אם חבילת נתונים מגיעה מכתובת ה-IP
10.1.1.2(כתובת ה-IP הפנימית הראשית של המכונה הווירטואלית) או מטווח כתובות ה-IP10.2.1.0/24(טווח כתובות ה-IP של הכינוי של המכונה הווירטואלית), המכונה הווירטואלית צריכה להשתמש בכתובת ה-IP של ה-NAT203.0.113.30כדי לשלוח תעבורה לכל יעד באינטרנט.
כדי לעמוד בדרישות האלה, צריך ליצור שני כללי NAT מבוססי-מקור למנות שהועברו, ואת כלל ברירת המחדל למנות מכתובת ה-IP הפנימית הראשית ומטווח כתובות ה-IP של הכינוי של המכונה הווירטואלית:
- כלל 1 שמבוסס על מקור: אם כתובת המקור היא
192.168.1.0/24, משתמשים ב-203.0.113.10כדי לשלוח תנועה לאינטרנט. - כלל 2 שמבוסס על מקור: אם כתובת המקור היא
192.168.2.0/24, משתמשים ב-203.0.113.20כדי לשלוח תנועה לאינטרנט. - כלל ברירת המחדל: לכל שאר החבילות, משתמשים ב-
203.0.113.30כדי לשלוח תעבורה לאינטרנט.
אם כתובת המקור של מנה שהועברה על ידי המכונה הווירטואלית לא תואמת לאף אחד מהכללים (1 או 2), המנה תיפסל. מידע על הקצאת יציאות למכונות וירטואליות עם העברת IP מופעלת ב-Cloud NAT זמין במאמר הקצאת יציאות להעברת IP.
למידע נוסף על שימוש בכללי NAT מבוססי-מקור, אפשר לעיין במאמר Cloud WAN under the hood: A closer look at its differentiated networking capabilities.
כללים שמבוססים על יעד
בדוגמה הבאה אפשר לראות איך משתמשים בכללי NAT כשהיעד מאפשר גישה רק מכמה כתובות IP. מומלץ שתעבורת הנתונים ליעדים כאלה מהמכונות הווירטואליות שלכם ברשתות משנה פרטיות תעבור תרגום SNAT רק עם כתובות ה-IP המותרות. Google Cloud מומלץ לא להשתמש בכתובות ה-IP האלה ליעדים אחרים.
נניח שיש מכונות וירטואליות ב-Subnet-1 (10.10.10.0/24), שנמצא באזור א' של רשת ה-VPC test, ושיש להן את הדרישות הבאות:
- המכונות הווירטואליות צריכות להשתמש בכתובת ה-IP של NAT
203.0.113.20כדי לשלוח תעבורה ליעד198.51.100.20/30. - המכונות הווירטואליות צריכות להשתמש בכתובת ה-IP של NAT
203.0.113.30כדי לשלוח תנועה ליעד198.51.100.30או198.51.100.31. - המכונות הווירטואליות צריכות להשתמש בכתובת ה-IP של NAT
203.0.113.40כדי לשלוח תעבורה לכל יעד אחר באינטרנט.
רשת ה-VPC הזו מכילה גם שתי תת-רשתות נוספות באותו אזור. המכונות הווירטואליות האלה צריכות להשתמש בכתובת IP של NAT 203.0.113.10 כדי לשלוח תנועה לכל יעד.
אפשר להשתמש בכללי NAT בדוגמה הזו, אבל צריך שני שערים של NAT כי ל-Subnet-1 (10.10.10.0/24) יש כללי NAT ששונים מאלה של רשתות המשנה האחרות. כדי ליצור את ההגדרה הזו, מבצעים את השלבים הבאים:
- יוצרים שער בשם
Cloud NAT Gateway 1עבורSubnet-1עם כתובת IP של NAT203.0.113.40ומוסיפים את הכללים הבאים:- כלל NAT 1 ב-
Cloud NAT Gateway 1: כשכתובת היעד היא198.51.100.20/30, צריך להשתמש ב-203.0.113.20ל-NAT. - כלל NAT מספר 2 ב-
Cloud NAT Gateway 1: כשכתובת היעד היא198.51.100.30או198.51.100.31, משתמשים ב-203.0.113.30ל-NAT.
- כלל NAT 1 ב-
- יוצרים שער בשם
Cloud NAT Gateway 2עבור רשתות המשנה האחרות באזור, ומקצים את כתובת ה-IP של ה-NAT כ-203.0.113.10. לא צריך כללי NAT בשלב הזה.
מפרטים של כללי NAT
- Cloud NAT תומך בכללים שמבוססים על מקור ויעד. כל כלל מגדיר תנאי שמבוסס על כתובת המקור או היעד, אבל לא על שתיהן.
- עדיפות של כלל מזהה באופן ייחודי כלל NAT, מ-0 (העדיפות הגבוהה ביותר) עד 65,000 (העדיפות הנמוכה ביותר). אי אפשר להגדיר את אותה עדיפות לשני כללים.
- לכל הגדרת NAT יש כלל ברירת מחדל (עדיפות הכלל היא 65,001):
- הכלל שמוגדר כברירת מחדל יחול אם מנות לא תואמות לאף כלל NAT שמבוסס על מקור או על יעד באותה הגדרת NAT. חריג: כלל ברירת המחדל לא חל על מנות שהועברו. כדי להשתמש ב-NAT עבור המנות האלה, הגדרת ה-NAT צריכה לכלול כלל תואם שמבוסס על מקור. מידע נוסף זמין במאמרים בנושא כללים שמבוססים על מקור והקצאת יציאות להעברת IP.
- טווח ה-CIDR של כתובות ה-IP של כלל ברירת המחדל הוא
0.0.0.0/0. אם בהגדרת ה-NAT יש כללים שמבוססים על מקור ועל יעד, כל תנועה שעומדת בדרישות של כלל ברירת המחדל ולא תואמת לאף אחד מהכללים המותאמים אישית שלכם, תעובד על ידי כלל ברירת המחדל הזה, באמצעות כתובות ה-IP של ה-NAT שהוקצו לו.
- כללי NAT של Cloud NAT נתמכים רק אם הערך של האפשרות NAT IP allocate הוא
MANUAL_ONLY. כל כתובות ה-IP שהוגדרו בכלל נתון צריכות להיות באותו מסלול.
אי אפשר להשתמש בשילוב של כתובות IP במסלול פרימיום ובמסלול רגיל באותו כלל (כולל כלל ברירת המחדל).
טווחים של כתובות IP בפורמט CIDR בתנאי התאמה לא יכולים לחפוף בין כללי NAT. אפשר להחיל כלל אחד לכל היותר על כל מנה נתונה. אם חבילת נתונים תואמת גם לכלל שמבוסס על כתובת מקור וגם לכלל שמבוסס על כתובת יעד, Cloud NAT יחיל את הכלל עם העדיפות הגבוהה יותר.
אי אפשר ליצור כלל NAT עם
0.0.0.0/0כטווח המקור או היעד, כי הוא נמצא בשימוש בכלל ברירת המחדל.כתובות ה-IP של NAT בכללי NAT לא יכולות להיות חופפות.
בכלל צריך להיות ערך לא ריק בשדה
Activeאו בשדה כתובת ה-IPDrain. אם לכלל יש כתובת IP ריקהActive, חיבורים חדשים שתואמים לכלל ה-NAT נפסלים.אי אפשר להוסיף כללי NAT לשער NAT שמופעל בו מיפוי בלתי תלוי בנקודת קצה (EIM). אי אפשר להפעיל EIM בשער NAT שיש בו כללי NAT.
הקצאת יציאות
שער Cloud NAT משתמש בהגדרה של מספר היציאות המינימלי לכל מכונה וירטואלית (minPortsPerVm) כדי לקבוע כמה יציאות מקוריות להקצות לכל מכונה וירטואלית.
כתובת IP אחת של NAT מספקת 64,512 יציאות שמישות, ולכן הערך של minPortsPerVm קובע את המספר המקסימלי של מכונות וירטואליות שכתובת IP אחת של NAT יכולה לתמוך בהן. לדוגמה, אם minPortsPerVm הוא 1,024 יציאות, כתובת IP אחת יכולה לתמוך בעד 63 מכונות וירטואליות (64,512 חלקי 1,024).
הערך של minPortsPerVm משמש לחישוב עצמאי של הקצאת יציאות לכל כלל NAT שהוגדר, כולל כלל ברירת המחדל. אם מכונה וירטואלית ממצה את היציאות שהוקצו לה מכלל ספציפי, חיבורים חדשים שתואמים לכלל הזה נפסלים.
סוגי כללים והקצאת יציאות
Cloud NAT מקצה יציאות לכללי NAT על סמך הסוג שלהם:
- כלל ברירת המחדל. יציאות מוקצות לכל מכונה וירטואלית שכתובת ה-IP הפנימית הראשית שלה או טווחי כתובות ה-IP החלופיות שלה מוגשות על ידי שער Cloud NAT, גם אם העברת ה-IP מופעלת במכונה הווירטואלית. כלל ברירת המחדל מעבד רק תנועה שמגיעה מכתובות IP פנימיות ראשיות או מטווחים של כתובות IP של כינויים, ולא מעבד תנועה מועברת.
כללים שמבוססים על מקורות. יציאות מוקצות למכונה וירטואלית רק אם כתובת ה-IP הפנימית הראשית שלה או טווח כתובות ה-IP החלופיות שלה תואמים לכתובת המקור שצוינה בכלל ה-NAT. לדוגמה, נניח ששער Cloud NAT מוגדר לשרת טווח כתובות IP ראשי שמכיל גם את
10.1.1.1וגם את10.1.1.2. אם כלל שמבוסס על מקור מציין10.1.1.1לתנאי ההתאמה, אבל מכונה וירטואלית שולחת מנות באמצעות כתובת ה-IP הפנימית הראשית שלה10.1.1.2, שירות Cloud NAT לא מקצה יציאות למכונה הווירטואלית מהכלל הספציפי הזה.מגבלה: אם במכונה וירטואלית מופעלת העברת כתובת IP, הקצאת היציאות פועלת בצורה שונה. במקרה כזה, Cloud NAT מקצה יציאות למכונה הווירטואלית מהכלל שמוגדר כברירת מחדל ומכל הכללים שמבוססים על מקור בהגדרת ה-NAT בו-זמנית. מידע נוסף זמין במאמר בנושא הקצאת יציאות להעברת כתובות IP.
כללים לפי יעד. לכל כלל, מוקצים פורטים לכל מכונה וירטואלית שכתובת ה-IP הפנימית הראשית שלה או טווחי כתובות ה-IP של הכינוי שלה מוגשים על ידי שער Cloud NAT. כל מכונה וירטואלית מקבלת יציאות מהכלל שמוגדר כברירת מחדל ומכל כלל שמבוסס על יעד.
לדוגמה, אם השער מוגדר עם 1,024 יציאות לכל מכונה וירטואלית ויש לו שני כללי NAT מבוססי-יעד בנוסף לכלל ה-NAT שמוגדר כברירת מחדל, לכל מכונה וירטואלית מוקצות 1,024 יציאות מכל כלל.
הקצאת יציאות להעברת כתובות IP
כדי לתמוך במכונות וירטואליות עם העברת IP מופעלת, התאמת הכללים למכונות וירטואליות כאלה פועלת בצורה שונה במהלך הקצאת היציאות ועיבוד המנות:
הקצאת ניוד. מכיוון שמכונות וירטואליות להעברת נתונים יכולות לפלוט מנות עם כתובות IP שרירותיות של מקור, שירות Cloud NAT מתייחס למכונות הווירטואליות האלה כהתאמה לכלל ברירת המחדל ולכל כללי ה-NAT שמבוססים על מקור בהגדרת ה-NAT. לכן, עבור כל מכונה וירטואלית להעברת תעבורה, שער Cloud NAT מקצה את הערך
minPortsPerVmמהכלל שמוגדר כברירת מחדל וכל כלל שמבוסס על מקור בו-זמנית.לדוגמה, נניח שמוגדר שער Cloud NAT עם
minPortsPerVmשל 1,024, כלל NAT מבוסס-מקור עם כתובת IP אחת של NAT וכלל NAT שמוגדר כברירת מחדל עם 10 כתובות IP של NAT. לכל מכונה וירטואלית להעברה מוקצים 1,024 יציאות משני הכללים. מכיוון שלכלל שמבוסס על מקור יש רק כתובת IP אחת של NAT, הוא יכול לתמוך בעד 63 מכונות וירטואליות להעברת תעבורה. שער Cloud NAT גם שומר 64,512 יציאות (63 מכונות וירטואליות × 1,024 יציאות) בשבילן מכלל ברירת המחדל.עיבוד חבילות. בתרגום כתובות בפועל, כלל שמבוסס על מקור מעבד חבילת נתונים רק אם כתובת ה-IP של המקור של חבילת הנתונים תואמת לכתובת המקור שמוגדרת בתנאי הכלל. כלל ברירת המחדל לא מעבד תעבורה מועברת ממכונות וירטואליות שהעברת ה-IP שלהן מופעלת. מנות עם כתובות IP שרירותיות של מקור נפסלות אם הן לא תואמות לכלל מבוסס-מקור.
כדי למנוע מצב של מיצוי יציאות שמוביל לשגיאה בהגדרות NAT שכוללות מכונות וירטואליות עם הפניית IP מופעלת, צריך לוודא שכללי ה-NAT מוגדרים עם קיבולת יציאות מספקת:
- לכלל ברירת המחדל צריך להיות מספר מספיק של כתובות IP של NAT כדי לתמוך בכל המכונות הווירטואליות להעברת נתונים שמקבלות שירות משער Cloud NAT, בנוסף לכל מכונה וירטואלית שמשתמשת בכלל ברירת המחדל לתעבורה מכתובת ה-IP הפנימית הראשית שלה או מטווחים של כתובות IP של כינוי.
- לכל כלל שמבוסס על כתובת מקור צריכות להיות מספיק כתובות IP של NAT כדי לתמוך בכל המכונות הווירטואליות להעברת תנועה שמשרתות את השער. בנוסף, בכלל צריך להיות מספר מספיק של כתובות IP של NAT כדי לתמוך בכל מכונה וירטואלית שמשתמשת בכלל הספציפי הזה שמבוסס על מקור, לתנועה מכתובת ה-IP הפנימית הראשית שלה או מטווחים של כתובות IP של כינוי.
קיבולת היציאה
כלל NAT יכול למצות את היציאות הזמינות שלו אם כתובות ה-IP של הכלל לא יכולות לתמוך בהקצאות היציאות הנדרשות.
נניח שיש לכם תת-רשת עם 16 מכונות וירטואליות ושער Cloud NAT שהוגדר עם 4,096 יציאות לכל מכונה וירטואלית. לשער יש שלושה כללים:
- כלל NAT שמוגדר כברירת מחדל עם שתי כתובות IP של NAT
- לפי היעד
rule-1עם כתובת IP אחת של NAT - לפי היעד
rule-2עם שתי כתובות IP של NAT
הקצאת הפורטים מחושבת בנפרד לכל כלל, ולכן כל כלל צריך לספק 65,536 פורטים (16 מכונות וירטואליות × 4,096 פורטים).
לכלל ברירת המחדל ול-rule-2 יש מספיק קיבולת. עם זאת, ל-rule-1 יש רק כתובת IP אחת (64,512 יציאות שניתן להשתמש בהן), וזה לא מספיק כדי לספק את ההקצאה המלאה לכל 16 המכונות הווירטואליות. כתוצאה מכך, יכול להיות שתנועת גולשים שתואמת ל-rule-1 תיפסל בכל מכונה וירטואלית שלא מקבלת את הקצאת היציאות המלאה שלה.
כדי לבדוק אם כלל NAT צריך עוד כתובות IP, אפשר להשתמש בשדה minExtraIpsNeeded.
בשדה הזה מוצג מספר כתובות ה-IP שצריך להקצות אם כתובות ה-IP הקיימות בכלל NAT לא יכולות לעמוד בדרישות של היציאות לכל המכונות הווירטואליות שהוגדרו.
תכנון קיבולת של ניוד
כשמתכננים את קיבולת היציאות של כללי ה-NAT, כדאי להבין איך Cloud NAT מקצה יציאות לכללי NAT:
- הקצאת יציאות
- סוגי כללים והקצאת יציאות
- הקצאת יציאות להעברת כתובות IP (להגדרות NAT שכוללות מכונות וירטואליות עם העברת כתובות IP מופעלת)
שפת ביטויים של כללים
כללי NAT נכתבים באמצעות תחביר של Common Expression Language (CEL).
ביטוי צריך לכלול שני רכיבים:
- מאפיינים שאפשר לבדוק בביטויי כללים.
- פעולות שאפשר לבצע במאפיינים כחלק מביטוי.
לדוגמה, הביטוי הבא משתמש במאפיינים destination.ip ו-198.51.100.0/24 בפעולה inIpRange(). במקרה הזה, הביטוי מחזיר true אם destination.ip נמצא בטווח כתובות ה-IP של 198.51.100.0/24.
inIpRange(destination.ip, '198.51.100.0/24')
כללי NAT תומכים רק במאפיינים ובפעולות הבאים:
מאפיינים
המאפיינים מייצגים מידע מחבילת נתונים יוצאת, כמו כתובת ה-IP של המקור ושל היעד.
| שם המאפיין | תיאור |
|---|---|
source.ip |
כתובת ה-IP של המקור של חבילת הנתונים |
destination.ip |
כתובת ה-IP של היעד של חבילת הנתונים |
תפעול
בקטע הבא מפורטים האופרטורים שאפשר להשתמש בהם עם מאפיינים כדי להגדיר ביטויי כללים.
| פעולה | תיאור |
|---|---|
inIpRange(string, string) -> bool |
הפונקציה inIpRange(x, y) מחזירה את הערך true
אם טווח ה-CIDR של כתובת ה-IP y מכיל את כתובת ה-IP
x. |
|| |
אופרטור לוגי. הפונקציה x || y מחזירה את הערך true אם x או y הם true. |
== |
אופרטור השוויון. הפונקציה x == y מחזירה את הערך true אם x שווה ל-y. |
ביטויים לדוגמה
אפשר להתאים מנות על סמך כתובת המקור או כתובת היעד, אבל לא על סמך שתיהן.
דוגמאות להתאמה לפי מקור
התאמת חבילות לכתובת ה-IP של המקור 10.0.0.25:
"source.ip == '10.0.0.25'"
התאמת חבילות עם כתובת ה-IP של המקור 10.0.0.25 או 10.0.0.26:
"source.ip == '10.0.0.25' || source.ip == '10.0.0.26'"
התאמה של חבילות לטווח כתובות ה-IP של המקור 10.0.2.0/24:
"inIpRange(source.ip, '10.0.2.0/24')"
התאמת חבילות עם כתובת IP של מקור 10.0.0.25 או טווח כתובות IP של מקור
10.0.2.0/24:
"source.ip == '10.0.0.25' || inIpRange(source.ip, '10.0.2.0/24')"
דוגמאות להתאמה לפי יעד
התאמה של חבילות עם כתובת IP של היעד 198.51.100.20:
"destination.ip == '198.51.100.20'"
התאמת חבילות עם כתובת ה-IP של היעד 198.51.100.20 או
198.51.100.21:
"destination.ip == '198.51.100.20' || destination.ip == '198.51.100.21'"
התאמת חבילות לטווח כתובות IP של היעד 198.51.100.10/30:
"inIpRange(destination.ip, '198.51.100.10/30')"
התאמת חבילות עם כתובת IP של היעד 198.51.100.20 או עם טווח כתובות IP של היעד 198.51.100.10/30:
"destination.ip == '198.51.100.20' || inIpRange(destination.ip, '198.51.100.10/30')"