1. מבוא
באמצעות Private Service Connect, אתם יכולים ליצור נקודות קצה פרטיות באמצעות כתובות IP פנימיות גלובליות ברשת ה-VPC שלכם כדי לגשת לממשקי Google API. אתם יכולים להקצות שמות DNS לכתובות ה-IP הפנימיות האלה עם שמות משמעותיים כמו storage-pscendpoint.p.googleapis.com ו-bigtable-adsteam.p.googleapis.com. במקום לשלוח בקשות API לנקודות קצה של שירותים ציבוריים כמו storage.googleapis.com, אתם יכולים לשלוח את הבקשות לנקודת הקצה של Private Service Connect, שהיא פרטית ופנימית לרשת ה-VPC שלכם.
השמות וכתובות ה-IP האלה הם פנימיים לרשת ה-VPC ולכל רשת מקומית שמחוברת אליה באמצעות מנהרות Cloud VPN או קבצים מצורפים של Cloud Interconnect (רשתות VLAN).
אתם יכולים לקבוע לאיזו נקודת קצה יועבר התנועה, ולהוכיח שהתנועה נשארת בתוך Google Cloud.
מה תלמדו
- תרחישי שימוש ב-Private Service Connect
- דרישות רשת
- ממשקי API נתמכים
- יצירת נקודת קצה מסוג Private Service Connect
- יצירת קטגוריה של אחסון בענן
- יצירה ועדכון של תחומים פרטיים ב-Cloud DNS
- יצירת NAT GW כדי לגשת ל-googleapis ציבורי
- יצירה ועדכון של קובץ תצורה של BOTO
- מבצעים gsutil list ב-VM1 שפועל מול נקודת הקצה של שירות ה-PSC
- מבצעים gsutil list ב-VM2 שפועל מול googleapis.com הציבורי
- שימוש ב-Tcpdump כדי לאמת את פענוח ה-DNS
מה תצטרכו
- ידע ב-DNS, בעורך nano או בעורך vi
2. תרחישי שימוש ב-Private Service Connect
אפשר ליצור כמה נקודות קצה של Private Service Connect באותה רשת VPC. אין הגבלה על רוחב הפס לנקודת קצה מסוימת. מכיוון שנקודות קצה של Private Service Connect משתמשות בכתובות IP פנימיות גלובליות, כל משאב ברשת ה-VPC יכול להשתמש בהן.
אם יש לכם כמה נקודות קצה, אתם יכולים לציין נתיבי רשת שונים באמצעות Cloud Router וכללים בחומת האש.
- אתם יכולים ליצור כללי חומת אש כדי למנוע ממכונות וירטואליות מסוימות לגשת לממשקי Google API דרך נקודת קצה של Private Service Connect, ולאפשר למכונות וירטואליות אחרות לגשת אליהם.
- יכול להיות שיהיה לכם כלל חומת אש במכונה וירטואלית שיחסום את כל התעבורה לאינטרנט, אבל התעבורה שנשלחת לנקודות קצה של Private Service Connect עדיין תגיע ל-Google.
- אם יש לכם מארחים מקומיים שמחוברים ל-VPC באמצעות מנהרת Cloud VPN או צירוף ל-Cloud Interconnect (VLAN), אתם יכולים לשלוח חלק מהבקשות דרך המנהרה או ה-VLAN, ולשלוח בקשות אחרות דרך האינטרנט הציבורי. ההגדרה הזו מאפשרת לעקוף את המנהרה או את ה-VLAN בשביל שירותים כמו Google ספרים שלא נתמכים בגישה פרטית ל-Google. כדי ליצור את ההגדרה הזו, צריך ליצור נקודת קצה של Private Service Connect, לפרסם את כתובות ה-IP של נקודת הקצה של Private Service Connect באמצעות פרסום מסלולים בהתאמה אישית ב-Cloud Router ולהפעיל מדיניות להעברת תנועה נכנסת ב-Cloud DNS. האפליקציה יכולה לשלוח חלק מהבקשות דרך מנהרת Cloud VPN או דרך צירוף ל-Cloud Interconnect (VLAN) באמצעות השם של נקודת הקצה של Private Service Connect, וחלק אחר דרך האינטרנט באמצעות שם ה-DNS שמוגדר כברירת מחדל.
- אם מחברים את הרשת המקומית לרשת ה-VPC באמצעות כמה צירופים ל-Cloud Interconnect (VLAN), אפשר לשלוח חלק מהתנועה מהרשת המקומית דרך VLAN אחד ואת השאר דרך VLAN אחרים, כמו שמוצג באיור 2. האפשרות הזו מאפשרת לכם להשתמש ברשתות תקשורת רחבות משלכם במקום ברשתות של Google, ולשלוט בהעברת הנתונים כדי לעמוד בדרישות גיאוגרפיות. כדי ליצור את ההגדרה הזו, צריך ליצור שתי נקודות קצה של Private Service Connect. יוצרים פרסום של מסלול מותאם אישית לנקודת הקצה הראשונה בסשן ה-BGP של Cloud Router שמנהל את ה-VLAN הראשון, ויוצרים פרסום שונה של מסלול מותאם אישית לנקודת הקצה השנייה בסשן ה-BGP של Cloud Router שמנהל את ה-VLAN השני. מארחים מקומיים שהוגדרו להשתמש בשם של נקודת הקצה (endpoint) של Private Service Connect שולחים תנועה דרך צירוף ה-Cloud Interconnect המתאים (VLAN).
- אפשר גם להשתמש בכמה קבצים מצורפים של Cloud Interconnect (VLAN) בטופולוגיה פעילה/פעילה. אם מפרסמים את אותה כתובת IP של נקודת הקצה של Private Service Connect באמצעות פרסום מסלולים בהתאמה אישית עבור סשנים של BGP בנתבי Cloud שמנהלים את רשתות ה-VLAN, מנות שנשלחות ממערכות מקומיות לנקודות הקצה מנותבות ברשתות ה-VLAN באמצעות ECMP.

איור 1. באמצעות הגדרה של Private Service Connect, Cloud Router ומארחים מקומיים, אתם יכולים לשלוט בצירוף ל-Cloud Interconnect (רשת VLAN) שמשמש לשליחת תעבורה אל Google APIs.
3. דרישות רשת
כדי להשתמש ב-Private Service Connect, למכונות וירטואליות (VM) ללא כתובות IP חיצוניות צריך להיות ממשק ראשי ברשת משנה שמופעלת בה גישה פרטית ל-Google.
מכונה וירטואלית עם כתובת IP חיצונית יכולה לגשת לממשקי API ולשירותים של Google באמצעות נקודות קצה של Private Service Connect, גם אם הגישה הפרטית ל-Google מופעלת ברשת המשנה שלה וגם אם לא. הקישוריות לנקודת הקצה של Private Service Connect נשארת בתוך הרשת של Google.
אי אפשר לגשת לנקודות קצה של Private Service Connect מרשתות VPC מקושרות.
ממשקי API נתמכים
כשיוצרים נקודת קצה של Private Service Connect, בוחרים את חבילת ממשקי ה-API שרוצים לגשת אליה: all-apis או vpc-sc.
חבילות ה-API מאפשרות גישה לאותם ממשקי API שזמינים דרך כתובות ה-IP הווירטואליות של גישה פרטית ל-Google.
- חבילת all-apis מספקת גישה לאותם ממשקי API כמו private.googleapis.com.
- חבילת vpc-sc מספקת גישה לאותם ממשקי API כמו restricted.googleapis.com.
4. טופולוגיה ותרחיש לדוגמה של Codelab

איור 1 – טופולוגיית Codelab
תרחיש לדוגמה לשימוש ב-Codelab –
לקוח שלנו צריך גישה מעורבת ל-googleapis פרטי (interconnect) וציבורי להעברת נתונים ב-Cloud Storage. כדי לעמוד בדרישות הלקוחות שלנו, נפעיל את Private Service Connect, שכולל כתובת ייחודית מסוג /32, הגדרת BOTO ועדכונים של רשומות DNS. המכונה הווירטואלית 1 תשתמש ב-PSC כדי לגשת לקטגוריית Cloud Storage, לעומת זאת, המכונה הווירטואלית 2 תשתמש בטווחים של כתובות IP ציבוריות של googleapis.com דרך שער ה-NAT.
כל ההיבטים של המעבדה נפרסים ב-Google Cloud Platform, אבל אותו תרחיש לדוגמה רלוונטי לפריסה של ענן היברידי שדורשת הפרדה של התעבורה.
5. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
6. לפני שמתחילים
הפעלת ממשקי ה-API
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname
הפעלת כל השירותים הנדרשים
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
7. יצירת רשת VPC
רשת VPC
מ-Cloud Shell
gcloud compute networks create psc-lab --subnet-mode custom
יצירת רשת משנה
מ-Cloud Shell
gcloud compute networks subnets create psclab-subnet \ --network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access
יצירת כללים לחומת האש
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תנועה נכנסת מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
מ-Cloud Shell
gcloud compute firewall-rules create psclab-ssh \
--network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
יצירת מופע Cloud NAT
יצירת Cloud Router
מ-Cloud Shell
gcloud compute routers create crnat \
--network psc-lab \
--asn 65000 \
--region us-central1
יצירת Cloud NAT
מ-Cloud Shell
gcloud compute routers nats create cloudnat \
--router=crnat \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--enable-logging \
--region us-central1
8. יצירת נקודת קצה מסוג Private Service Connect
כשמגדירים את כתובת ה-IP של נקודת הקצה של Private Service Connect <pscendpointip>, צריך לספק כתובת IP ייחודית שלא מוגדרת ב-VPC.
מ-Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=192.168.255.250 \
--network=psc-lab
שמירת הערך pscendpointip למשך ה-Lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
יוצרים כלל העברה כדי לחבר את נקודת הקצה לממשקי API ולשירותים של Google.
מ-Cloud Shell
gcloud compute forwarding-rules create pscendpoint \
--global \
--network=psc-lab \
--address=psc-ip \
--target-google-apis-bundle=all-apis
הצגת רשימה של נקודות הקצה המוגדרות של Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
תיאור של נקודות הקצה שהוגדרו ב-Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules describe \
pscendpoint --global
9. יצירת קטגוריה
יוצרים קטגוריה של Cloud Storage ומחליפים את BUCKET_NAME בשם ייחודי גלובלית שאתם מעדיפים.
מ-Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
שמירת הערך 'BUCKET_NAME' למשך ה-Lab
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. הגדרת DNS
כשיוצרים נקודת קצה של Private Service Connect, Service Directory יוצר רשומת DNS לממשקי ה-API ולשירותים שזמינים באמצעות נקודת הקצה הזו.
רשומות ה-DNS מצביעות על כתובת ה-IP של נקודת הקצה של Private Service Connect, והן בפורמט הבא: SERVICE-ENDPOINT.p.googleapis.com.
אתם יכולים להשתמש בשמות ה-DNS האלה בבקשות ה-API כדי להפנות את הבקשה לנקודת הקצה של Private Service Connect. אפשר גם להשתמש בשמות ה-DNS האלה בכותרת Host של הבקשה.
אם אתם רוצים להשתמש בנקודת קצה של Private Service Connect עם לקוח או אפליקציה שניגשים לשירותים ול-Google APIs, אתם צריכים לעדכן את הלקוח או האפליקציה כך שישתמשו בשמות ה-DNS של p.googleapis.com.
פרטים נוספים זמינים במסמכי התיעוד של הלקוח או של ספריית הלקוח. לדוגמה:
- Python: אפשר להגדיר את api_endpoint במחלקה Client options בחבילה google-api-core.
- Go: אפשר להגדיר את WithEndpoint בחבילת אפשרויות הלקוח בחבילת ה-API.
- gcloud: You can configure api_endpoint_overrides using this command. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL
לדוגמה: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/
אם אי אפשר להגדיר את הלקוח או האפליקציה לשימוש בנקודת קצה אחרת, צריך ליצור רשומות DNS שתואמות לשמות ה-DNS שמוגדרים כברירת מחדל. לדוגמה, storage.googleapis.com. מידע נוסף זמין במאמר בנושא יצירת רשומות DNS באמצעות שמות DNS שמוגדרים כברירת מחדל.
אימות רשומת DNS
במסוף Cloud, מאמתים את רשומת ה-DNS שנוצרה בקטע Network Services (שירותי רשת) → Cloud DNS. שימו לב לשם ה-DNS שנוצר, p.googleapis.com.
11. יצירת מכונות וירטואליות
יצירת מכונה וירטואלית (psc-instance-1) שמשמשת לאימות של Private Service Connect
מ-Cloud Shell
gcloud compute instances create psc-instance-1 \
--subnet psclab-subnet \
--zone us-central1-a \
--image=centos-7-v20210122 \
--image-project=centos-cloud \
--no-address \
--metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
מתחברים למכונת ה-VM (psc-instance-1)
התחברות למכונה הווירטואלית באמצעות SSH דרך Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
לוחצים על הסמל + (צילום מסך בהמשך) שלוש פעמים כדי ליצור עוד טרמינלים של Cloud Shell.

יצירת מכונה וירטואלית (psc-instance-2) שמשמשת לאימות של Googleapis ציבורי
מכרטיסייה 2
gcloud compute instances create psc-instance-2 \
--subnet psclab-subnet \
--zone us-central1-a \
--image=centos-7-v20210122 \
--image-project=centos-cloud \
--no-address \
--metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
בכרטיסייה 2, מתחברים למכונה הווירטואלית באמצעות SSH דרך Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
בכרטיסייה 3, מתחברים ל-psc-instance-1 באמצעות SSH דרך Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
בכרטיסייה 4 Shell, מתחברים באמצעות SSH אל psc-instance-2 דרך Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
12. אימות ההתנהגות הקיימת של Gsutil
בכרטיסייה 4 (psc-instance-2), מפעילים את tcpdump ועוקבים אחרי תנועת ה-DNS
sudo tcpdump -vv -i eth0 port 53
בדיקת חיפוש DNS של מאגר אחסון מכרטיסייה 2 (psc-instance-2)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
בדיקת ניפוי הבאגים של gsutil, הכתובת HOST storage.googleapis.com משמשת לפתרון DNS
<snip> send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
בכרטיסייה 4 (psc-instance-2), מוודאים שרשומות ה-A של ה-DNS הציבורי של GoogleAPI.com משמשות לגישה לקטגוריית האחסון.
metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128
13. שינוי ההתנהגות של Gsutil
כפי שציינתם בשלב הקודם, יצרתם תחום DNS פרטי ורשומת A שמופנים לכתובת ה-IP של נקודת הקצה (endpoint) של PSC. בשלב הבא, נעדכן את קובץ BOTO של המכונה הווירטואלית ב-psc-instance-1 כדי לקבוע את אופן הפעולה של gsutil.
הצגת הגדרת ברירת המחדל של BOTO ממסוף המכונה הווירטואלית מהכרטיסייה 1 (psc-instance-1)
[psc-instance ~]$ more /etc/boto.cfg
פלט (מזהה הפרויקט שלכם יהיה שונה)
[GSUtil] default_project_id = [your project number] default_api_version = 2 [GoogleCompute] service_account = default
מעדכנים את ההגדרות של BOTO באמצעות nano או VI Editor, ומקפידים להעתיק ולהדביק את כל הרשומות.
דוגמה: sudo nano /etc/boto.cfg
או
דוגמה: sudo vi /etc/boto.cfg
מכרטיסיית הטרמינל של מכונת ה-VM 1(psc-instance-1)
[Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com
אימות ההגדרה, הסדר של [Credentials] הוא קריטי לחיפוש DNS
more /etc/boto.cfg [Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com [GSUtil] default_project_id = [your project number default_api_version = 2 [GoogleCompute] service_account = default
14. אימות התנהגות מעודכנת של חיפוש gsutil
בכרטיסייה 3 (psc-instance-1), מפעילים את tcpdump ועוקבים אחרי תנועת ה-DNS
sudo tcpdump -vv -i eth0 port 53
בדיקת חיפוש של gsutil ב-bucket אחסון מכרטיסייה 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
יומני ניפוי הבאגים מאשרים שאפשר להגיע לקטגוריית האחסון דרך נקודת הקצה של Private Service Connect pscendpoint
פלט:
<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>
בכרטיסייה 3 (psc-instance-1), מוודאים שכתובת ה-IP של נקודת הקצה של ה-PSC היא רשומת ה-DNS A שנעשה בה שימוש כשמנסים לגשת לדלי האחסון.
@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)
איך מוודאים שכתובת ה-IP של נקודת הקצה מסוג Private Service Connect משמשת עכשיו לפענוח DNS
מכרטיסייה 1
nslookup storage-pscendpoint.p.googleapis.com
פלט
@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: storage-pscendpoint.p.googleapis.com Address: <pscip>
15. שלבי הניקוי
יציאה ממופע ב-VM (כל הכרטיסיות)
exit
מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד
gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet gcloud compute routers delete crnat --region=us-central1 --quiet gcloud compute forwarding-rules delete pscendpoint --global --quiet gcloud compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
ב-Console, מוודאים שמוצג הפרויקט הנכון, ואז בוחרים באפשרות Networking Services (שירותי רשת) → Cloud DNS.
16. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- תרחישי שימוש ב-Private Service Connect
- דרישות רשת
- ממשקי API נתמכים
- יצירת נקודת קצה מסוג Private Service Connect
- יצירת קטגוריה של אחסון בענן
- עדכון של קובץ תצורה של BOTO
- יצירת שער NAT
- מבצעים gsutil list ב-VM1 שפועל מול נקודת הקצה של שירות ה-PSC
- מריצים את הפקודה gsutil list במכונה הווירטואלית VM2 שפועלת מול googleapis.com הציבורי
- שימוש ב-Tcpdump כדי לאמת את פענוח ה-DNS