גישה ל-Google APIs ממארחים מקומיים שמשתמשים בכתובות IPv6

1. מבוא

גישה פרטית ל-Google למארחים מקומיים מאפשרת למערכות מקומיות להתחבר אל ממשקי API ושירותים של Google על ידי ניתוב התנועה דרך מנהרת Cloud VPN או דרך צירוף ל-VLAN ל-Cloud Interconnect. גישה פרטית ל-Google למארחים מקומיים היא חלופה לחיבור ל-Google APIs ולשירותים של Google דרך האינטרנט.

כדי להשתמש בגישה פרטית ל-Google עבור מארחים מקומיים, צריך להפנות בקשות ל-Google APIs לכתובות IP וירטואליות (VIP). ב-IPv6, נעשה שימוש בכתובות ה-IP הבאות:

  • ‫private.googleapis.com: ‏ 2600:2d00:0002:2000::/64
  • ‫restricted.googleapis.com: ‏ 2600:2d00:0002:1000::/64

כתובת ה-VIP שתבחרו תקבע לאילו שירותים תהיה לכם גישה. ב-codelab הזה נשתמש ב-private.googleapis.com. מידע נוסף זמין במאמר בנושא אפשרויות לדומיין.

ב-codelab הזה מוסבר איך להפעיל גישה פרטית ל-Google עבור מארחים מקומיים שמשתמשים בכתובות IPv6. תגדירו רשת VPC בשם on-premises-vpc כדי לייצג סביבה מקומית. בפריסה שלכם, ה-VPC המקומי לא יתקיים, ובמקומו ייעשה שימוש ברשת היברידית למרכז הנתונים המקומי או לספק שירותי הענן.

מה תפַתחו

ב-Codelab הזה תבנו רשת IPv6 מקצה לקצה שמדגימה גישה מקומית ל-API של Cloud Storage באמצעות CNAME ‏ *.googleapis.com לכתובת IPv6 ‏2600:2d00:0002:2000::/64 private.googleapis.com, כמו שמוצג באיור 1.

איור 1

a0fc56abf24f3535.png

מה תלמדו

  • איך יוצרים רשת VPC עם תמיכה כפולה ב-IPv4 ו-IPv6
  • איך יוצרים HA VPN עם IPv6
  • איך מעדכנים את ה-DNS כדי לגשת לגישה פרטית ל-Google
  • איך יוצרים ומאמתים קישוריות של גישה פרטית ל-Google

הדרישות

  • פרויקט ב-Google Cloud

‫2. לפני שמתחילים

עדכון הפרויקט כדי לתמוך ב-codelab

ב-Codelab הזה נעשה שימוש במשתנים כדי להקל על הטמעת ההגדרה של gcloud ב-Cloud Shell.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

3. יצירת רשת transit-vpc

f6932f551b5acac0.png

יצירת רשת VPC למעבר

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

4. יצירת הרשת המקומית

58d75cbc9cb20a51.png

רשת ה-VPC הזו מייצגת סביבה מקומית.

יצירת רשת VPC מקומית

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

יצירת רשת המשנה

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1

5. יצירת HA VPN עבור transit-vpc ו-on-premises-vpc

יצירת שער HA VPN לרשת transit-vpc

a0fc56abf24f3535.png

כשכל שער נוצר, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער. חשוב לרשום את כתובות ה-IP האלה כדי להשתמש בהן בהמשך בשלבי ההגדרה.

ב-Cloud Shell, יוצרים את שער HA VPN עם סוג הערימה IPV4_IPV6.

gcloud compute vpn-gateways create transit-vpc-vpngw \
   --network=transit-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

יצירת שער HA VPN לרשת on-premises-vpc

ב-Cloud Shell, יוצרים שער HA VPN עם סוג הערימה IPV4_IPV6

gcloud compute vpn-gateways create on-premises-vpc-vpngw \
   --network=on-premises-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

אימות של יצירת שער HA VPN

במסוף, עוברים אל Hybrid Connectivity (קישוריות היברידית) ← VPN ← CLOUD VPN GATEWAYS (שערי Cloud VPN).

c8eed6ca929935bc.png

יצירת Cloud Router לרשת transit-vpc

ב-Cloud Shell, יוצרים את Cloud Router שנמצא ב-us-central1

gcloud compute routers create transit-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=transit-vpc\
   --asn=65001

יצירת Cloud Router עבור on-premises-vpc

ב-Cloud Shell, יוצרים את Cloud Router שנמצא ב-us-central1

gcloud compute routers create on-premises-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=on-premises-vpc \
   --asn=65002

יצירת מנהרות VPN עבור transit-vpc

תצרו שתי מנהרות VPN בכל שער HA VPN.

יצירת מנהרת VPN‏ tunnel0

ב-Cloud Shell, יוצרים את tunnel0:

gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
    --peer-gcp-gateway on-premises-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router transit-vpc-cr-us-central1 \
    --vpn-gateway transit-vpc-vpngw \
    --interface 0

יצירת מנהרת VPN‏ 1

ב-Cloud Shell, יוצרים את המנהרה tunnel1:

gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
    --peer-gcp-gateway on-premises-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router transit-vpc-cr-us-central1 \
    --vpn-gateway transit-vpc-vpngw \
    --interface 1

יצירת מנהרות VPN עבור on-premises-vpc

תצרו שתי מנהרות VPN בכל שער HA VPN.

יצירת מנהרת VPN‏ tunnel0

ב-Cloud Shell, יוצרים את tunnel0:

gcloud compute vpn-tunnels create on-premises-tunnel0 \
    --peer-gcp-gateway transit-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-premises-vpc-cr-us-central1 \
    --vpn-gateway on-premises-vpc-vpngw \
    --interface 0

יצירת מנהרת VPN‏ 1

ב-Cloud Shell, יוצרים את המנהרה tunnel1:

gcloud compute vpn-tunnels create on-premises-tunnel1 \
    --peer-gcp-gateway transit-vpc-vpngw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-premises-vpc-cr-us-central1 \
    --vpn-gateway on-premises-vpc-vpngw \
    --interface 1

אימות של יצירת מנהרת VPN

במסוף, עוברים אל Hybrid Connectivity (קישוריות היברידית) → VPN → CLOUD VPN TUNNELS (מנהרות Cloud VPN).

85fd5aef4b2c4010.png

יצירת סשנים של BGP

בקטע הזה תגדירו ממשקים של Cloud Router ורשתות שכנות של BGP.

כשיוצרים מנהרות VPN שמאפשרות תעבורת IPv6, מציינים --enable-ipv6 כשמריצים את הפקודה add-bgp-peer.

יצירת ממשק BGP וקישור בין רשתות שכנות עבור transit-vpc

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface transit-vpc-cr-us-central1 \
    --interface-name if-tunnel1-to-onpremise \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel transit-vpc-tunnel0 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onpremise \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface transit-vpc-cr-us-central1 \
    --interface-name if-tunnel2-to-onpremise \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel transit-vpc-tunnel1 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel2 \
    --interface if-tunnel2-to-onpremise \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12

יצירת ממשק BGP וקישור בין רשתות שכנות (peering) עבור on-premises-vpc

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
    --interface-name if-tunnel1-to-hub-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-premises-tunnel0 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
    --peer-name bgp-transit-vpc-tunnel0 \
    --interface if-tunnel1-to-hub-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
    --interface-name if-tunnel2-to-hub-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-premises-tunnel1 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer  on-premises-vpc-cr-us-central1\
    --peer-name bgp-transit-vpc-tunnel1\
    --interface if-tunnel2-to-hub-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1 \
    --enable-ipv6 \
    --ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
    --peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11

עוברים אל Hybrid Connectivity → VPN כדי לראות את פרטי מנהרת ה-VPN.

e100e31ea22c8124.png

אימות שלומדים ב-transit-vpc מסלולי IPv4 ו-IPv6 דרך HA VPN

מכיוון שמנהרות ה-HA VPN וסשני ה-BGP נוצרו, המערכת לומדת את הנתיבים מ-on-premises-vpc מ-transit-vpc. במסוף, עוברים אל VPC network (רשת VPC) → VPC networks (רשתות VPC) → transit-vpc → ROUTES (מסלולים).

אפשר לראות את המסלולים הדינמיים של IPv4 ו-IPv6 שנלמדו באיור הבא:

216bde7d08d75ec4.png

אימות לכך שרשת on-premises-vpc לא לומדת נתיבים דרך HA VPN

ל-transit-vpc אין רשת משנה, ולכן Cloud Router לא יפרסם רשתות משנה ל-on-premises-vpc. במסוף, עוברים אל VPC network (רשת VPC) → VPC networks (רשתות VPC) → on-premises-vpc (רשת VPC מקומית) → ROUTES (מסלולים).

6. פרסום כתובת ה-VIP הפרטית של private.googleapis.com

כדי לגשת לגישה פרטית ל-Google ממיקום מקומי, תצטרכו ליצור פרסום ניתוב (route advertisement) מותאם אישית מ-transit-vpc. כתובת ה-IPv6‏ 2600:2d00:0002:2000:: תפורסם בסביבה המקומית ותשמש את עומסי העבודה כדי לגשת אל ממשקי Google API כמו Cloud Storage,‏ Cloud BigQuery ו-Cloud Bigtable אחרי עדכון ה-DNS המקומי.

ב-Codelab הזה תפעילו גישה לרוב ממשקי ה-API והשירותים של Google, בלי קשר לשאלה אם הם נתמכים על ידי VPC Service Controls.

במסוף, עוברים אל Hybrid Connectivity (קישוריות היברידית) → Cloud Routers (נתבי Cloud) → transit-vpc-cr-us-central1 ולוחצים על EDIT (עריכה).

3e36e3b5ea741ec5.png

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

9283aba7b214f70d.png

אימות שלומדים מסלולי IPv6 ב-on-premises-vpc

עכשיו, אחרי שכתובת ה-VIP של private.googleapis.com ב-IPv6 פורסמה מ-transit-vpc, רשת on-premises-vpc תלמד מסלולים דינמיים של IPv6 לכתובת ה-VIP. במסוף, עוברים אל VPC network (רשת VPC) → VPC networks (רשתות VPC) → on-premises-vpc (רשת VPC מקומית) → ROUTES (מסלולים).

בודקים את מסלולי IPv6 שפורסמו מ-transit-vpc:

caf3b79b035b2a20.png

7. יצירת תקשורת עם ממשקי Google API באמצעות גישה פרטית ל-Google

בקטע הבא נסביר איך לגשת ל-Cloud Storage ולאמת את הקישוריות אליו באמצעות כתובת ה-VIP של private.googleapis.com ב-IPv6. כדי לעשות זאת, צריך לבצע את הפעולות הבאות ב-VPC המקומי.

  • יוצרים כלל חומת אש לתעבורת נתונים נכנסת (ingress) כדי לאפשר גישה ל-SSH באמצעות שרת proxy לאימות זהויות (IAP).
  • יוצרים Cloud Router ו-Cloud NAT כדי להוריד את tcpdump ואת dnsutils.
  • יוצרים תחום DNS פרטי ב-Cloud DNS עבור googleapis.com.
  • יצירת קטגוריה של Cloud Storage.

יצירת כלל לחומת האש של IAP

כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:

  • רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
  • מאפשר תנועה נכנסת מטווח כתובות ה-IP‏ 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.

ב-Cloud Shell, יוצרים את הכלל בחומת האש של IAP.

gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
    --network on-premises-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

הגדרת Cloud Router ו-NAT

משתמשים ב-Cloud NAT ב-codelab להתקנת חבילות תוכנה כי למופע של המכונה הווירטואלית אין כתובת IP חיצונית.

ב-Cloud Shell, יוצרים את Cloud Router.

gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1

ב-Cloud Shell, יוצרים את שער ה-NAT.

gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

יצירת מכונת בדיקה, on-premises-testbox

יוצרים מכונת בדיקה שתשמש לבדיקה ולאימות של הקישוריות לכתובת ה-VIP של IPv6 private.googleapis.com.

ב-Cloud Shell, יוצרים את המכונה.

gcloud compute instances create on-premises-testbox \
    --project=$projectname \
    --machine-type=e2-micro \
    --stack-type=IPV4_IPV6 \
    --image-family debian-10 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=on-premises-subnet1-us-central1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

יצירת תחום פרטי ב-Cloud DNS

אנחנו נשתמש ב-Cloud DNS כדי ליצור תחום פרטי ורשומות עבור ‎ *.googleapis.com. בהמשך מפורטים השלבים הנדרשים.

ב-Cloud Shell, יוצרים תחום DNS פרטי v6-googleapis.com.

gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"

ב-Cloud Shell, יוצרים את רשומת AAAA עבור private.googleapis.com שמפנה לכתובת IPv6‏ 2600:2d00:0002:2000::.

gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"

ב-Cloud Shell, יוצרים רשומת CNAME עבור ‎ *.googleapis.com כדי להפנות אל private.googleapis.com.

gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."

אימות של אזור פרטי ב-Cloud DNS

עוברים אל Network services (שירותי רשת) → Cloud DNS → v6-googleapis.

455e355195a2a48f.png

יצירת קטגוריה של Cloud Storage

ב-Cloud Shell, יוצרים קטגוריה של Cloud Storage ומחליפים את bucket_name בשם ייחודי גלובלית שרוצים, ואם השם כבר בשימוש, מנסים שם אחר.

gsutil mb  -l us-central1 -b on gs://bucket_name

8. גישה לממשקי Google API ואימות שלהם באמצעות כתובות IPv6

בקטע הבא תתבצע כניסה באמצעות SSH אל שני טרמינלים של Cloud Shell. הטרמינל הראשון משמש לאימות של חיפוש IPv6 באמצעות tcpdump, והטרמינל השני משמש לגישה לקטגוריה של Cloud Storage.

בתוך Cloud Shell, מבצעים SSH למכונת הבדיקה on-premises-testbox.

 gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

בטרמינל מספר 1 של Cloud Shell, מפעילים את tcpdump ועוקבים אחרי יציאה 53 כדי לראות את תעבורת ה-DNS.

sudo tcpdump -nn -i ens4 port 53

דוגמה:

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53

פותחים טרמינל חדש ב-Cloud Shell על ידי לחיצה על '+'. אחרי שפותחים את הכרטיסייה החדשה, מעדכנים את משתנה שם הפרויקט.

ב-Cloud Shell, מעדכנים את המשתנה של שם הפרויקט.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

ב-Cloud Shell 2, מבצעים SSH למכונת הבדיקה on-premises-testbox.

gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

ביצוע dig לאימות חיפוש DNS

בטרמינל השני של Cloud Shell, מריצים dig נגד storage.googleapis.com.

dig AAAA storage.googleapis.com

בודקים את קטע התשובה, את ה-CNAME של תחום ה-DNS הפרטי storage.googleapis.com ל-AAAA של private.googleapis.com‏ 2600:2d00:2:2000::, כמו בדוגמה שלמטה:

user@on-premises-testbox:~$ dig AAAA storage.googleapis.com

; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com.                IN      AAAA

;; ANSWER SECTION:
storage.googleapis.com. 300     IN      CNAME   private.googleapis.com.
private.googleapis.com. 300     IN      AAAA    2600:2d00:2:2000::

;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE  rcvd: 101

בטרמינל Cloud Shell מספר 1, בודקים את ה-tcpdump שמאשר עוד יותר את פענוח ה-DNS ל-AAAA 2600:2d00:2:2000::.

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)

על סמך הפקודות dig ו-tcpdump, אפשר להסיק שפענוח ה-DNS אל storage.googleapis.com מתבצע דרך 2600:2d00:2:2000::, כתובת ה-IPv6 של private.googleapis.com.

ביצוע gsutil list כדי לאמת את הגישה לאחסון בענן

בטרמינל השני של Cloud Shell, מריצים פקודת רשימה על קטגוריית האחסון שנוצרה קודם באמצעות gsutil. מחליפים את bucket_name בקטגוריה שיצרתם קודם.

gsutil -d ls gs://bucket_name

דוגמה לשימוש בקטגוריית Cloud Storage‏ codelab-ipv6. בודקים את פלט הניפוי באגים שמציין storage.googleapis.com ו-HTTP/1.1 200 OK.

user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
 bucket: 'codelab-ipv6'
 delimiter: '/'
 maxResults: 1000
 projection: ProjectionValueValuesEnum(noAcl, 1)
 versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
               'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
 items: []
 prefixes: []>
user@on-premises-testbox:~$ 

בטרמינל Cloud Shell מספר 1, בודקים את ה-tcpdump שמאשר עוד יותר את פענוח ה-DNS ל-AAAA 2600:2d00:2:2000::.

eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)

יוצאים ממערכת ההפעלה של מופע on-premises-testbox וחוזרים להנחיה של Cloud Shell.

9. הסרת המשאבים

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1   --region=us-central1 --quiet

gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet

gcloud compute routers delete transit-vpc-cr-us-central1  on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet

gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet

gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet

gcloud compute networks delete on-premises-vpc --quiet


gcloud compute networks delete transit-vpc --quiet

gsutil rb gs://bucket_name

gcloud dns record-sets delete *.googleapis.com. \
    --type=CNAME \
    --zone=v6-googleapis
        
gcloud dns record-sets delete private.googleapis.com. \
        --type=AAAA \
        --zone=v6-googleapis
        
gcloud dns managed-zones delete v6-googleapis

10. מזל טוב

הגדרתם ואימתתם בהצלחה גישה פרטית ל-Google עם IPv6.

יצרתם את התשתית של התחבורה והתשתית המקומית, ויצרתם תחום DNS פרטי שמאפשר לפתור בעיות בדומיינים של Google API באמצעות IPv6. למדתם איך לבדוק ולאמת גישה ל-IPv6 באמצעות dig ו-Cloud Storage.

‫Cosmopup חושב ש-codelabs הם מדהימים!!

8c2a10eb841f7b01.jpeg

מה השלב הבא?

כדאי לעיין ב-Codelabs הבאים…

קריאה נוספת וסרטונים

מאמרי עזרה