با استفاده از آدرس‌های IPv6 از میزبان‌های داخلی به Google API دسترسی داشته باشید

1. مقدمه

دسترسی خصوصی Google برای میزبان‌های داخلی، راهی را برای سیستم‌های داخلی فراهم می‌کند تا با مسیریابی ترافیک از طریق یک تونل Cloud VPN یا یک پیوست VLAN برای Cloud Interconnect، به APIها و سرویس‌های Google متصل شوند. دسترسی خصوصی Google برای میزبان‌های داخلی جایگزینی برای اتصال به APIها و سرویس‌های Google از طریق اینترنت است.

دسترسی خصوصی Google برای میزبان‌های داخلی مستلزم این است که درخواست‌های Google API را به آدرس‌های IP مجازی (VIP) هدایت کنید. برای IPv6 از آدرس های IP زیر استفاده می شود:

  • برای private.googleapis.com: 2600:2d00:0002:2000::/64
  • برای limited.googleapis.com: 2600:2d00:0002:1000::/64

VIP که انتخاب می کنید تعیین می کند که به کدام خدمات می توانید دسترسی داشته باشید. در این لبه کد از private.googleapis.com استفاده خواهیم کرد. برای اطلاعات بیشتر، گزینه‌های دامنه را ببینید.

این لبه کد نحوه فعال کردن دسترسی Google خصوصی را برای میزبان‌های داخلی که از آدرس‌های IPv6 استفاده می‌کنند، توضیح می‌دهد. شما یک شبکه VPC به نام on-premises-vpc راه اندازی خواهید کرد تا یک محیط داخلی را نشان دهد. برای استقرار شما، on-premises-vpc وجود نخواهد داشت، در عوض از شبکه ترکیبی به مرکز داده داخلی یا ارائه دهنده ابری شما استفاده می شود.

چیزی که خواهی ساخت

در این لبه کد، می‌خواهید یک شبکه IPv6 سرتاسر بسازید که دسترسی داخلی به API ذخیره‌سازی ابری را با استفاده از CNAME *.googleapis.com به آدرس IPv6 private.googleapis.com 2600:2d00:0002:2000::/64 همانطور که در شکل 1 نشان داده شده است.

شکل 1

a0fc56abf24f3535.png

چیزی که یاد خواهید گرفت

  • نحوه ایجاد یک شبکه VPC دو پشته
  • نحوه ایجاد HA VPN با IPv6
  • نحوه به روز رسانی DNS برای دسترسی به دسترسی گوگل خصوصی
  • نحوه ایجاد و اعتبار سنجی اتصال Google Access خصوصی

آنچه شما نیاز دارید

  • پروژه 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 GW را برای transit-vpc ایجاد کنید

a0fc56abf24f3535.png

هنگامی که هر دروازه ایجاد می شود، دو آدرس IPv4 خارجی به طور خودکار اختصاص می یابد، یکی برای هر رابط دروازه. این آدرس های IP را یادداشت کنید تا بعداً در مراحل پیکربندی استفاده کنید.

در داخل 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 را برای on-premises-vpc ایجاد کنید

در داخل 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 GW را تأیید کنید

با استفاده از کنسول، به اتصال Hybrid → 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 ایجاد کنید

در داخل 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 tunnel1

در داخل 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 tunnel1

در داخل 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 بروید.

85fd5aef4b2c4010.png

ایجاد جلسات BGP

در این بخش، رابط های Cloud Router و همتایان BGP را پیکربندی می کنید.

هنگام ایجاد تونل های VPN که به ترافیک IPv6 اجازه می دهد، هنگام اجرای دستور add-bgp-peer --enable-ipv6 مشخص کنید.

یک رابط BGP و peering برای 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

برای مشاهده جزئیات تونل VPN، به اتصال Hybrid → VPN بروید.

e100e31ea22c8124.png

تأیید کنید که transit-vpc مسیرهای IPv4 و IPv6 را از طریق HA VPN یاد می‌گیرد

از آنجایی که تونل‌های HA VPN و جلسات BGP ایجاد شده‌اند، مسیرهای مربوط به on-premises-vpc از transit-vpc آموخته می‌شوند. با استفاده از کنسول، به شبکه VPC → شبکه های VPC → Transit-vpc → ROUTES بروید.

مسیرهای دینامیکی IPv4 و IPv6 را که در زیر نشان داده شده است مشاهده کنید:

216bde7d08d75ec4.png

تأیید کنید که on-premises-vpc مسیرها را از طریق HA VPN یاد نمی‌گیرد

Transit-vpc یک زیرشبکه ندارد، بنابراین Cloud Router هیچ زیرشبکه ای را برای on-premises-vpc تبلیغ نمی کند. با استفاده از کنسول، به شبکه VPC → شبکه های VPC → On-Premises-vpc → ROUTES بروید.

6. IPv6 private.googleapis.com VIP را تبلیغ کنید

برای دسترسی به Google Access خصوصی از داخل محل، باید یک تبلیغ مسیر سفارشی از transit-vpc ایجاد کنید. آدرس IPv6 2600:2d00:0002:2000:: در محیط داخلی تبلیغ می شود و پس از به روز رسانی DNS محلی توسط بارهای کاری برای دسترسی به API های Google مانند Cloud Storage، Cloud BigQuery و Cloud Bigtable استفاده می شود.

در این لبه کد، دسترسی API به اکثر APIها و سرویس‌های Google را بدون توجه به اینکه آیا توسط کنترل‌های سرویس VPC پشتیبانی می‌شوند، فعال می‌کنید.

از کنسول به مسیر Hybrid Connectivity → Cloud Routers → transit-vpc-cr-us-central1 بروید، سپس EDIT را انتخاب کنید.

3e36e3b5ea741ec5.png

در قسمت Advertised routes گزینه Create custom routes را انتخاب کنید و فیلدها را بر اساس مثال زیر به روز کنید و DONE را انتخاب کنید و سپس SAVE را بزنید.

9283aba7b214f70d.png

تأیید کنید که on-premises-vpc در حال یادگیری مسیرهای IPv6 است

اکنون که IPv6 private.googleapis.com VIP از transit-vpc تبلیغ می شود، on-premises-vpc مسیرهای پویا IPv6 را برای VIP آموخته است. با استفاده از کنسول، به شبکه VPC → شبکه های VPC → On-Premises-vpc → ROUTES بروید.

مسیرهای IPv6 تبلیغ شده از transit-vpc را مشاهده کنید:

caf3b79b035b2a20.png

7. با استفاده از Google Access خصوصی با Google API ارتباط برقرار کنید

در بخش بعدی، با استفاده از IPv6 private.googleapis.com VIP، به Cloud Storage دسترسی پیدا کرده و آن را تأیید می کنیم. برای انجام این کار، باید اقدامات زیر را در on-premises-vpc انجام دهیم.

  • یک قانون فایروال ورودی ایجاد کنید تا امکان دسترسی به پروکسی آگاه از هویت (IAP) برای دسترسی SSH فراهم شود.
  • برای دانلود tcpdump و dnsutils یک Cloud Router و Cloud NAT ایجاد کنید.
  • یک منطقه خصوصی Cloud DNS برای googleapis.com ایجاد کنید.
  • یک سطل Cloud Storage ایجاد کنید.

قانون فایروال IAP را ایجاد کنید

برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های 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

روتر ابری و پیکربندی NAT

Cloud NAT در نرم افزار کد برای نصب بسته نرم افزاری استفاده می شود زیرا نمونه VM آدرس 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

یک نمونه آزمایشی، در محل-تست باکس ایجاد کنید

یک نمونه آزمایشی ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به 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 استفاده خواهیم کرد، در زیر مراحل مورد نیاز آمده است.

در داخل 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 را اعتبارسنجی کنید

به خدمات شبکه → Cloud DNS → v6-googleapis بروید.

455e355195a2a48f.png

سطل Cloud Storage را ایجاد کنید

در داخل Cloud Shell، یک سطل ذخیره‌سازی ابری ایجاد کنید و bucket_name را با نام منحصربه‌فرد جهانی که ترجیح می‌دهید جایگزین کنید، اگر از قبل استفاده می‌کنید، نام دیگری را امتحان کنید.

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

8. با استفاده از آدرس های IPv6 به API های Google دسترسی داشته باشید و آن ها را تأیید کنید

در بخش زیر، یک SSH را در دو ترمینال Cloud Shell انجام خواهید داد. ترمینال اول برای اعتبارسنجی جستجوی IPv6 با استفاده از tcpdump استفاده می شود در حالی که ترمینال دوم برای دسترسی به سطل ذخیره سازی ابری استفاده می شود.

در داخل Cloud Shell، یک ssh برای آزمایش نمونه در محل-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

در داخل Cloud Shell 2، یک ssh برای آزمایش نمونه در محل-testbox انجام دهید.

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

برای تأیید اعتبار جستجوی DNS، حفاری انجام دهید

در ترمینال دو Cloud Shell، حفاری را در برابر storage.googleapis.com انجام دهید.

dig AAAA storage.googleapis.com

بخش پاسخ، منطقه DNS خصوصی storage.googleapis.com CNAME به 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 از طریق آدرس IPv6 private.googleapis.com 2600:2d00:2:2000:: به دست می‌آید.

لیست gsutil را برای تأیید اعتبار دسترسی به فضای ذخیره سازی ابری انجام دهید

در داخل ترمینال دو 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)

از سیستم عامل نمونه تست باکس داخل محل خارج شوید و به اعلان 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 Access خصوصی را با IPv6 پیکربندی و تأیید کردید.

شما زیرساخت حمل و نقل و داخلی را ایجاد کردید و یک منطقه DNS خصوصی ایجاد کردید که با استفاده از IPv6، وضوح را برای دامنه های Google API فعال می کند. شما یاد گرفتید که چگونه دسترسی IPv6 را با استفاده از دیگ و فضای ذخیره سازی ابری آزمایش و تأیید کنید.

Cosmopup فکر می کند که نرم افزارهای کدنویسی عالی هستند!!

8c2a10eb841f7b01.jpeg

بعدش چی؟

برخی از این کدها را بررسی کنید...

ادامه مطلب و ویدیوها

اسناد مرجع