כללי Cloud NAT
בדף הזה מוסבר על כללי Cloud NAT ל-NAT ציבורי. הכללים האלה מאפשרים להגדיר איך Cloud NAT משמש לחיבור לאינטרנט.
כללי Cloud NAT ל-Public NAT תומכים בתרגום כתובת רשת המקור (SNAT) על סמך כתובת המקור (גרסת Preview) או כתובת היעד.
כללי NAT
כברירת מחדל, כשמגדירים שער Cloud NAT ל-NAT ציבורי, המנות שעוברות תרגום על ידי שער ה-NAT הזה משתמשות באותה קבוצה של כתובות IP של NAT כדי להגיע לכל כתובות האינטרנט. אם אתם צריכים יותר שליטה על מנות שעוברות תרגום על ידי Cloud NAT, אתם יכולים להוסיף כללי NAT.
כלל NAT מגדיר תנאי התאמה ופעולה תואמת. אחרי שמציינים כללי NAT, כל מנה עוברת התאמה לכל כלל NAT. אם חבילת נתונים תואמת לתנאי שמוגדר בכלל, הפעולה שמתאימה להתאמה הזו מתבצעת.
כללי NAT ל-NAT ציבורי תומכים בהתאמה של כתובות מקור וכתובות יעד:
- בכללים שמבוססים על מקור (תצוגה מקדימה), המערכת משייכת חבילות לכללים לפי כתובת ה-IP של המקור. יש תמיכה רק בכתובות מקור מסוג IPv4.
- בכללים שמבוססים על יעד, המערכת מתאימה מנות לפי כתובת ה-IP של היעד. יש תמיכה רק בכתובות יעד מסוג IPv4.
אסור לשלב תנאים שמבוססים על המקור ועל היעד בכלל NAT יחיד. מידע נוסף זמין במאמר בנושא מפרטים של כללי NAT.
דוגמאות להגדרת כללים של Cloud NAT
בקטע הזה מוצגות דוגמאות להגדרות של כללי NAT שמבוססים על מקור ועל יעד.
כללים שמבוססים על מקור
בדוגמה הבאה אפשר לראות איך משתמשים בכללי NAT שמבוססים על מקור.
כברירת מחדל, כשמגדירים שער Cloud NAT לתעבורת IPv4 ברשת משנה, השער מספק NAT לכתובת ה-IP הפנימית הראשית ולטווחים של כתובות IP של כינויים של כל מכונה וירטואלית ברשת המשנה הזו. באמצעות כללי NAT מבוססי-מקור, אפשר גם להגדיר NAT למכונות וירטואליות עם הפניית IP מופעלת.
בדוגמה הזו, 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או מטווח כתובות ה-IP10.2.1.0/24, המכונה הווירטואלית צריכה להשתמש בכתובת ה-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), המנה מושמטת.
דוגמה נוספת לשימוש בכללי 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 יש כלל ברירת מחדל:
- כלל ברירת המחדל מוחל אם אין התאמה לכלל אחר של NAT באותה הגדרת NAT.
- העדיפות של כלל ברירת המחדל היא
65001. - בכללים שמבוססים על מקור וגם בכללים שמבוססים על יעד, טווח ה-CIDR של כתובות ה-IP בכלל ברירת המחדל הוא
0.0.0.0/0. - כלל ברירת המחדל לא חל על חבילות נתונים שהועברו. כדי להשתמש ב-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.
בנוסף, לכל מכונות ה-VM מוקצות יציאות מהערך של היציאות המינימליות לכל מכונת VM לכל כלל Cloud NAT. אם היציאות שהוקצו למכונה וירטואלית מכלל NAT מוצו, חיבורים חדשים שתואמים לכלל NAT ייפסלו.
לדוגמה, אם מגדירים 4,096 יציאות לכל מכונה וירטואלית ויש 16 מכונות וירטואליות ו-2 כללי NAT (rule1 עם כתובת IP אחת ו-rule2 עם 2 כתובות IP), בנוסף לכלל ברירת המחדל (default) עם 2 כתובות IP, כל 16 המכונות הווירטואליות יקבלו 4,096 יציאות בכל חבילה של כללי NAT. בדוגמה הזו, אין בעיות ב-default או ב-rule2 בכל מכונות ה-VM שלהם, אבל rule1 לא מצליח להקצות יציאות לכל מכונות ה-VM שלו.
לכן, יכול להיות שתנועה ממכונות וירטואליות שצריכה לעבור דרך rule1 תיחסם ותציג סימנים של חוסר במשאבים, כי התנועה לא משתמשת בכלל ברירת המחדל.
שפת ביטויים של כללים
כללי NAT נכתבים באמצעות תחביר של Common Expression Language.
ביטוי צריך לכלול שני רכיבים:
- מאפיינים שאפשר לבדוק בביטויי כללים.
- פעולות שאפשר לבצע במאפיינים כחלק מביטוי.
לדוגמה, הביטוי הבא משתמש במאפיינים 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')"