שימוש ב-NAT ציבורי עם Compute Engine
בדף הזה מוצגת הדגמה של שער NAT ציבורי שמספק שירותי תרגום כתובות רשת (NAT) למכונה וירטואלית ב-Compute Engine. לפני שמתחילים, כדאי לקרוא את סקירת NAT ציבורי.
דרישות מוקדמות
לפני שמגדירים NAT ציבורי, צריך לבצע את הפעולות הבאות.
קבלת הרשאות IAM
התפקיד roles/compute.networkAdmin מעניק הרשאות ליצור שער NAT ב-Cloud Router, להזמין ולהקצות כתובות IP של NAT, ולציין רשתות משנה (subnets) שתעבורת הנתונים שלהן צריכה להשתמש בתרגום כתובות רשת (NAT) דרך שער ה-NAT.
הגדרה של Google Cloud
לפני שמתחילים, צריך להגדיר את הפריטים הבאים ב- Google Cloud.
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
דוגמה
הדוגמה הבאה היא דוגמה מקצה לקצה שמציגה שער לדוגמה של NAT ציבורי ומכונת VM לדוגמה של Compute Engine שמשתמשת בשער ה-NAT הציבורי.
שלב 1: יצירת רשת VPC ורשת משנה
אם כבר יש לכם רשת ותת-רשת, אתם יכולים לדלג על השלב הזה.
המסוף
נכנסים לדף VPC networks במסוף Google Cloud .
לוחצים על יצירת רשת VPC.
מזינים שם של
custom-network1.בקטע Subnets (תת-רשתות), מגדירים את Subnet creation mode (מצב יצירת תת-רשת) לערך Custom (מותאם אישית).
בקטע New subnet (רשת משנה חדשה), מזינים שם של
subnet-us-east-192.בקטע Region (אזור), בוחרים באפשרות us-east4.
מזינים טווח כתובות IP של
192.168.1.0/24.לוחצים על Done ואז על Create.
gcloud
יוצרים רשת VPC חדשה במצב מותאם אישית בפרויקט:
gcloud compute networks create custom-network1 \ --subnet-mode customמציינים את קידומת רשת המשנה לאזור הראשון. בדוגמה הזו, אנחנו מקצים את הערך
192.168.1.0/24לאזורus-east4.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Terraform
אפשר להשתמש במודול Terraform כדי ליצור רשת ותת-רשת של ענן וירטואלי פרטי (VPC) בהתאמה אישית.
שלב 2: יצירת מכונה וירטואלית ללא כתובת IP חיצונית
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Create instance.
מציינים שם של
nat-test-1למכונה.מגדירים את Region לערך us-east4.
מגדירים את Zone לערך us-east4-c.
לוחצים על הקישור Management, security, disks, networking, sole tenancy.
נכנסים לכרטיסייה Networking.
בקטע Network interfaces, לוחצים על Edit בממשק ברירת המחדל של מכונת ה-VM.
- מגדירים את Network ל-
custom-network1. - מגדירים את Subnetwork ל-
subnet-us-east-192. - מגדירים את External IP (כתובת IP חיצונית) לערך None (ללא).
- לוחצים על סיום.
- מגדירים את Network ל-
כדי ליצור את המכונה ולהפעיל אותה, לוחצים על Create.
gcloud
gcloud compute instances create nat-test-1 \
--image-family debian-9 \
--image-project debian-cloud \
--network custom-network1 \
--subnet subnet-us-east-192 \
--zone us-east4-c \
--no-addressTerraform
אתם יכולים להשתמש במשאב של Terraform כדי ליצור מכונה וירטואלית.
שלב 3: יוצרים כלל חומת אש שמאפשר חיבורי SSH
המסוף
נכנסים לדף Firewall policies במסוף Google Cloud .
לוחצים על יצירת כלל לחומת האש.
מזינים שם של
allow-ssh.מציינים רשת של
custom-network1.מגדירים את Direction of traffic (כיוון התנועה) ל-Ingress (נכנסת).
מגדירים את הפעולה במקרה של התאמה לאישור.
מגדירים את היעדים לכל המופעים ברשת.
מגדירים את Source filter בתור IPv4 ranges.
מגדירים את Source IP ranges (טווחי כתובות IP של המקור) לערך
35.235.240.0/20.מגדירים את הפרוטוקולים והיציאות לפרוטוקולים ויציאות שצוינו.
מסמנים את תיבת הסימון tcp ומזינים את היציאה
22.לוחצים על יצירה.
gcloud
gcloud compute firewall-rules create allow-ssh \
--network custom-network1 \
--source-ranges 35.235.240.0/20 \
--allow tcp:22Terraform
אתם יכולים להשתמש במשאב של Terraform כדי ליצור כלל לחומת האש.
שלב 4: יוצרים הרשאות SSH ל-IAP עבור מופע הבדיקה
בשלב מאוחר יותר, תשתמשו בשרת proxy לאימות זהויות (IAP) כדי להתחבר למופע הבדיקה.
המסוף
נכנסים לדף שרת proxy לאימות זהויות (IAP) במסוף Google Cloud .
לוחצים על הכרטיסייה SSH and TCP resources (משאבי SSH ו-TCP).
כדי לעדכן את הרשאות החברים במשאבים, מסמנים את תיבת הסימון לצד All Tunnel Resources > us-east4-c > nat-test-1.
בחלונית השמאלית, לוחצים על הוספת חברים.
כדי להעניק למשתמשים, לקבוצות או לחשבונות שירות גישה למשאבים, מציינים את כתובות האימייל שלהם בשדה משתמשים חדשים.
אם אתם רק בודקים את התכונה הזו, אתם יכולים להזין את כתובת האימייל שלכם.
כדי לתת לחברים גישה למשאבים באמצעות התכונה להעברת TCP של Cloud IAP, בתפריט הנפתח Role בוחרים באפשרות Cloud IAP > IAP-secured Tunnel User.
לוחצים על Save.
gcloud
הפקודה הזו מעניקה גישת SSH באמצעות IAP לכל מופעי מכונות ה-VM בפרויקט. אם רוצים להעניק גישת SSH למכונה וירטואלית ספציפית באמצעות IAP, אפשר להיעזר בהוראות לשימוש במסוף Google Cloud .
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER_INFO \
--role=roles/iap.tunnelResourceAccessorמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
MEMBER_INFO: רשימה מופרדת בפסיקים של זוגות של חבריםtype:email. דוגמאות:- למשתמש אחד:
user:test-user@example.com - לקבוצה:
group:admins@example.com - לחשבון שירות:
serviceAccount:test123@example.domain.com
- למשתמש אחד:
Terraform
אתם יכולים להשתמש במשאב של Terraform כדי ליצור הרשאות SSH ל-IAP עבור מכונת הבדיקה.
שלב 5: מתחברים ל-nat-test-1 ומוודאים שאי אפשר להתחבר לאינטרנט
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Connect של
nat-test-1, לוחצים על החץ לתפריט הנפתח SSH ובוחרים באפשרות Open in browser window.בשורת הפקודה של מכונת ה-VM, מזינים
curl example.comומקישים על Enter.לא אמורה להתקבל תוצאה. אם כן, יכול להיות שיצרתם את
nat-test-1עם כתובת IP חיצונית, או שיש בעיה אחרת. לפתרון בעיות, אפשר לעיין במאמר מכונות וירטואליות יכולות להתחבר לאינטרנט באופן לא צפוי בלי Cloud NAT.כדי לסיים את הפקודה, יכול להיות שתצטרכו להזין
Ctrl+C.
gcloud
הוספה של מפתח SSH של Compute Engine למארח המקומי:
ssh-add ~/.ssh/google_compute_engine
מתחברים אל
nat-test-1ומריצים פקודה:gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iapלא אמורה להתקבל תוצאה. אם כן, יכול להיות שיצרתם את
nat-test-1עם כתובת IP חיצונית, או שיש בעיה אחרת. לפתרון בעיות, אפשר לעיין במאמר מכונות וירטואליות יכולות להתחבר לאינטרנט באופן לא צפוי בלי Cloud NAT.כדי לסיים את הפקודה, יכול להיות שתצטרכו להזין
Ctrl+C.
שלב 6: יצירת הגדרת NAT באמצעות Cloud Router
צריך ליצור את Cloud Router באותו אזור שבו נמצאות המכונות שמשתמשות ב-NAT ציבורי. Cloud Router משמש רק להצבת פרטי NAT במכונות הווירטואליות. הוא לא משמש כחלק משער NAT בפועל.
ההגדרה הזו מאפשרת לכל המכונות באזור להשתמש ב-NAT ציבורי לכל טווחי ה-IP הראשיים וכתובות ה-IP של הכינויים. בנוסף, המערכת מקצה באופן אוטומטי את כתובות ה-IP החיצוניות לשער ה-NAT. אפשרויות נוספות מפורטות במאמרי העזרה בנושא Google Cloud CLI.
המסוף
נכנסים לדף Cloud NAT במסוף Google Cloud .
לוחצים על שנתחיל? או על יצירת שער NAT.
מזינים שם שער של
nat-config.מגדירים את רשת ה-VPC ל-
custom-network1.מגדירים את Region לערך us-east4.
בקטע Cloud Router, בוחרים באפשרות יצירת נתב חדש.
- מזינים שם של
nat-router. - לוחצים על יצירה.
- מזינים שם של
לוחצים על יצירה.
gcloud
יוצרים Cloud Router:
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4מוסיפים הגדרה לנתב:
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
אתם יכולים להשתמש במשאב של Terraform כדי ליצור Cloud Router.
אתם יכולים להשתמש במודול של Terraform כדי ליצור הגדרת NAT.
שלב 7: מנסים להתחבר שוב לאינטרנט
יכול להיות שיחלפו עד שלוש דקות עד שהגדרת ה-NAT תתעדכן במכונה הווירטואלית, לכן צריך לחכות לפחות דקה לפני שמנסים לגשת לאינטרנט שוב.
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Connect של
nat-test-1, לוחצים על החץ לתפריט הנפתח SSH ובוחרים באפשרות Open in browser window.בשורת הפקודה של מכונת ה-VM, מזינים
curl example.comומקישים על Enter.
gcloud
מתחברים אל nat-test-1 ומריצים פקודה:
gcloud compute ssh nat-test-1 \
--zone us-east4-c \
--command "curl example.com" \
--tunnel-through-iap
הפלט אמור להכיל את התוכן הבא:
<html>
<head>
<title>Example Domain</title>
...
...
...
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You can use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>