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

1. מבוא

'גישה פרטית ל-Google' למארחים מקומיים מאפשרת למערכות מקומיות להתחבר לממשקי API ולשירותים של Google על ידי ניתוב תעבורת הנתונים דרך מנהרת Cloud VPN או קובץ VLAN מצורף עבור Cloud Interconnect. הגישה הפרטית ל-Google למארחים מקומיים היא חלופה לחיבור לממשקי ה-API ולשירותים של 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 שתבחרו יקבע לאילו שירותים תהיה לכם גישה. בקודלאב הזה נשתמש ב-private.googleapis.com. מידע נוסף זמין במאמר אפשרויות דומיין.

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

מה תפַתחו

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

איור 1

a0fc56abf24f3535.png

מה תלמדו

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

מה נדרש

  • פרויקט ב-Google Cloud

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

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

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

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

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

3. יוצרים את תחבורה ציבורית-vpc

f6932f551b5acac0.png

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

Inside 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

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

Inside 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 האלה כדי להשתמש בהן בשלבים הבאים של הגדרת השירות.

Inside Cloud Shell, יוצרים את רשת HA VPN GW עם סטאק מסוג IPV4_IPV6.

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

יצירת HA VPN GW עבור vpc בארגון

Inside Cloud Shell, יוצרים את רשת HA VPN GW עם סטאק מסוג IPV4_IPV6

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

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

באמצעות המסוף, עוברים אל 'קישוריות היברידית' ← 'VPN' ← CLOUD VPN GATEWAYS.

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

Inside 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.

יצירת מנהרת VPN0

ב-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

יצירת מנהרת VPN1

בתוך 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 ל-vpc בארגון

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

יצירת מנהרת VPN0

ב-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

יצירת מנהרת VPN1

בתוך 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

באמצעות המסוף, עוברים אל 'קישוריות היברידית' ← 'VPN' ← CLOUD VPN TUNNELS.

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

Inside 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

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

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) בממשק מקומי של 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

Inside 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

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

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

Inside 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

עוברים אל קישוריות היברידית ← VPN כדי להציג את הפרטים של מנהרת ה-VPN.

e100e31ea22c8124.png

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

מכיוון שקיימות מנהרות HA VPN וסשנים של BGP, מסלולים מ-vpc בארגון לומדים מ-transit-vpc. באמצעות המסוף, עוברים אל רשת VPC ← רשתות VPC ← transit-vpc ← ROUTES.

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

216bde7d08d75ec4.png

בדיקה שמערכת vpc בארגון לא לומדת מסלולים דרך HA VPN

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

6. פרסום של IPv6 private.googleapis.com VIP

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

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

במסוף, עוברים אל Hybrid Connectivity → Cloud Routers → transit-vpc-cr-us-central1 ובוחרים באפשרות EDIT.

3e36e3b5ea741ec5.png

בקטע Advertised routes (מסלולים שפורסמו), בוחרים באפשרות Create custom routes (יצירת מסלולים מותאמים אישית), מעדכנים את השדות לפי הדוגמה שבהמשך, בוחרים באפשרות DONE (סיום) ולוחצים על SAVE (שמירה).

9283aba7b214f70d.png

בדיקה שה-vpc בארגון לומד נתיבי IPv6

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

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

caf3b79b035b2a20.png

7. יצירת תקשורת עם ממשקי Google API באמצעות Private Google Access

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

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

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

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

  • רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
  • הכלל מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-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

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

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

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

יוצרים את שער NAT בתוך Cloud Shell.

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

יצירת מופע בדיקה מקומי

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

יוצרים את המכונה ב-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. בהמשך מפורטים השלבים הנדרשים.

ב-Inside 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 APIs באמצעות כתובות IPv6

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

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

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

בטרמינל הראשון של 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

Inside 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

בודקים את קטע המענה, storage.googleapis.com CNAME פרטי של DNS אל private.googleapis.com AAAA 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, בודקים את ה-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

דוגמה לשימוש בקטגוריה 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, בודקים את ה-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. הסרת המשאבים

Inside 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 ואחסון בענן.

Cosmopup אומר ש-Codelabs מדהימים!

8c2a10eb841f7b01.jpeg

מה השלב הבא?

כדאי לנסות כמה מ-Codelabs האלה...

המשך קריאה וסרטונים

מסמכי עזר