Private Service Connect for Google APIs

1. مقدمه

با Private Service Connect، می توانید با استفاده از آدرس های IP داخلی جهانی در شبکه VPC خود، نقاط پایانی خصوصی ایجاد کنید. می‌توانید نام‌های 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 باقی می‌ماند.

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

  • موارد استفاده اتصال سرویس خصوصی
  • الزامات شبکه
  • API های پشتیبانی شده
  • یک نقطه پایانی Private Service Connect ایجاد کنید
  • یک سطل ذخیره سازی ابری ایجاد کنید
  • مناطق خصوصی Cloud DNS را ایجاد و به روز کنید
  • یک NAT GW برای دسترسی به googleapis عمومی ایجاد کنید
  • یک فایل پیکربندی BOTO ایجاد و به روز کنید
  • لیست gsutil را در VM1 انجام دهید که در مقابل نقطه پایانی سرویس PSC شما حل شده است
  • لیست gsutil را در VM2 حل شده در برابر googleapis.com عمومی انجام دهید
  • از Tcpdump برای تایید رزولوشن DNS استفاده کنید

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

  • آشنایی با ویرایشگر DNS، nano یا vi

2. موارد استفاده اتصال سرویس خصوصی

می توانید چندین نقطه پایانی Private Service Connect را در یک شبکه VPC ایجاد کنید. هیچ محدودیتی در پهنای باند برای یک نقطه پایانی خاص وجود ندارد. از آنجا که نقاط پایانی Private Service Connect از آدرس های IP داخلی جهانی استفاده می کنند، می توانند توسط هر منبعی در شبکه VPC شما استفاده شوند.

با چندین نقطه پایانی، می توانید مسیرهای شبکه مختلف را با استفاده از روتر ابری و قوانین فایروال مشخص کنید.

  • می‌توانید قوانین فایروال را ایجاد کنید تا از دسترسی برخی ماشین‌های مجازی به APIهای Google از طریق یک نقطه پایانی Private Service Connect جلوگیری کنید، در حالی که به سایر ماشین‌های مجازی اجازه دسترسی بدهید.
  • شما می توانید یک قانون فایروال در نمونه VM داشته باشید که تمام ترافیک به اینترنت را ممنوع می کند. ترافیک ارسال شده به نقاط پایانی Private Service Connect همچنان به Google می رسد.
  • اگر میزبان های داخلی دارید که با استفاده از یک تونل Cloud VPN یا یک پیوست Cloud Interconnect (VLAN) به VPC متصل هستند، می توانید برخی از درخواست ها را از طریق تونل یا VLAN ارسال کنید در حالی که سایر درخواست ها را از طریق اینترنت عمومی ارسال می کنید. این پیکربندی به شما امکان می‌دهد تونل یا VLAN را برای سرویس‌هایی مانند Google Books که توسط Google Access خصوصی پشتیبانی نمی‌شوند دور بزنید. برای ایجاد این پیکربندی، یک نقطه پایانی Private Service Connect ایجاد کنید، آدرس‌های IP پایانی Private Service Connect را با استفاده از تبلیغات مسیریاب Cloud سفارشی تبلیغ کنید و یک خط‌مشی حمل و نقل ورودی Cloud DNS را فعال کنید. این برنامه می‌تواند برخی از درخواست‌ها را از طریق تونل Cloud VPN یا پیوست Cloud Interconnect (VLAN) با استفاده از نام نقطه پایانی Private Service Connect و سایر درخواست‌ها را از طریق اینترنت با استفاده از نام پیش‌فرض DNS ارسال کند.
  • اگر شبکه داخلی خود را با استفاده از چندین پیوست Cloud Interconnect (VLAN) به شبکه VPC خود متصل کنید، می‌توانید مقداری از ترافیک را از داخل محل بر روی یک VLAN و بقیه را روی دیگران ارسال کنید، همانطور که در شکل 2 نشان داده شده است. این به شما امکان می‌دهد از به جای شبکه های گوگل، شبکه های گسترده ای را در اختیار داشته باشید و حرکت داده ها را برای برآوردن نیازهای جغرافیایی کنترل کنید. برای ایجاد این پیکربندی، دو نقطه پایانی Private Service Connect ایجاد کنید. یک تبلیغ مسیر سفارشی برای اولین نقطه پایانی در جلسه BGP Cloud Router که VLAN اول را مدیریت می کند و یک تبلیغ مسیر سفارشی متفاوت برای نقطه پایانی دوم در جلسه BGP روتر Cloud که VLAN دوم را مدیریت می کند ایجاد کنید. میزبان‌های داخلی که برای استفاده از نام نقطه پایانی Private Service Connect پیکربندی شده‌اند، ترافیک را از طریق پیوست Cloud Interconnect (VLAN) مربوطه ارسال می‌کنند.
  • همچنین می توانید از چندین پیوست Cloud Interconnect (VLAN) در یک توپولوژی فعال/فعال استفاده کنید. اگر همان آدرس IP نقطه پایانی Private Service Connect را با استفاده از تبلیغات مسیر سفارشی برای جلسات BGP در مسیریاب های ابری که VLAN ها را مدیریت می کنند، تبلیغ می کنید، بسته های ارسال شده از سیستم های داخلی به نقاط پایانی با استفاده از ECMP در سراسر VLAN ها هدایت می شوند.

5e142c2fbf6f010e.png

شکل 1. با پیکربندی Private Service Connect، Cloud Router، و میزبان های داخلی، می توانید کنترل کنید که کدام پیوست Cloud Interconnect (VLAN) برای ارسال ترافیک به Google API استفاده می شود.

3. الزامات شبکه

برای استفاده از Private Service Connect، نمونه‌های ماشین مجازی (VM) بدون آدرس IP خارجی باید رابط اصلی خود را در زیرشبکه‌ای با دسترسی Google خصوصی فعال داشته باشند.

ماشین مجازی با آدرس IP خارجی می‌تواند با استفاده از نقاط پایانی Private Service Connect به APIها و سرویس‌های Google دسترسی داشته باشد، چه Private Google Access برای زیرشبکه آن فعال باشد یا نه. اتصال به نقطه پایانی Private Service Connect در شبکه Google باقی می ماند.

نقاط پایانی Private Service Connect از شبکه‌های VPC همتا قابل دسترسی نیستند.

API های پشتیبانی شده

وقتی یک نقطه پایانی Private Service Connect ایجاد می‌کنید، انتخاب می‌کنید که به کدام دسته از APIها نیاز دارید: all-apis یا vpc-sc.

بسته‌های API به همان APIهایی دسترسی می‌دهند که از طریق Private Google Access VIP در دسترس هستند.

  • بسته all-apis دسترسی به API های مشابه private.googleapis.com را فراهم می کند.
  • بسته vpc-sc دسترسی به APIهای مشابه limited.googleapis.com را فراهم می کند.

4. توپولوژی Codelab و مورد استفاده

2ac275eb86f26338.png

شکل 1 - توپولوژی Codelab

مورد استفاده Codelab -

مشتری ما به ترکیبی از دسترسی googleapis خصوصی (متقابل) و عمومی برای انتقال داده های ذخیره سازی ابری نیاز دارد. برای برآورده کردن نیازهای مشتریان خود، Private Service Connect شامل یک آدرس /32 منحصر به فرد، پیکربندی BOTO و به‌روزرسانی‌های رکورد DNS را مستقر خواهیم کرد. ماشین مجازی 1 از PSC برای دسترسی به سطل ذخیره سازی ابری استفاده می کند. در مقابل، VM2 از محدوده IP عمومی googleapis.com از طریق NAT GW استفاده خواهد کرد.

همه جنبه‌های آزمایشگاه در Google Cloud Platform مستقر شده‌اند، اما همان مورد استفاده برای استقرار Hybrid Cloud که نیاز به جداسازی ترافیک دارد، قابل اجرا است.

5. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)

MrEseyJH4tg9PuS3GzJa72onCqawwQiRm04c0YjnpR6WD3IciP1ICDh5e5RoxrG3tc5y44_Ynn9GB0Igjo3sTE0BlsAnCxJdhXn7egP3tX4rkzvl0cb7TX4rkzOKcb7TX4rkzv0Kb7TX4rkzv00b7TX4rkzv00b7TX4rkzv0b70

HgKQ1sLCGDGbz0e3RCc-FNa3fQliCtq67H-Oj9jzzYn_upkmNN1lOMQrQm8Jdvo6EEYAvSwDEjpH37bIG9ouBJcmS_xFYV1IHJoyAhsasS1SfYRB1WZt

KHAY2ncSMFGZ2vGxcMEcNoIy_cuWGCaWAsrH0KsOVwkV5e93Ypfcq3sQ_HPIrV-NSocegQN2PnRUku_CVi1MM89O6qHIU6E32ZypJPxojkbRTJXIXETjCz4FNt

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعمل‌های موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه می‌کند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورت‌حساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

yEqEFRN4OGfeGJEfJplSt5sGY95BluU78i3Lk0Opo9caOYfrWUPBi_RglIfo9x078tH5Z_Obgq1wOhrEPV8k5OvMgI5e3aam1a7teXuimwcTy3AFKV5-evc

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

BxRCLVCDNXX4OxwHppzaY9ghvuFTsgsozreyEHvRK9GPfsh3sW-kdwev6_gZdkX5FWPvb7M_Vp4FoyjFWwZxBMK6CLXiPwJgFbhz8Tgec-tyQMBcawGE05N

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.

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

خروجی

Created
NAME     SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
psc-lab  CUSTOM       REGIONAL

زیر شبکه ایجاد کنید

از 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

خروجی

Created
NAME             REGION       NETWORK  RANGE
psclab-subnet  us-central1  psc-lab  10.0.0.0/24

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

از Cloud Shell

gcloud compute firewall-rules create psclab-ssh \
        --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

خروجی

NAME        NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
psclab-ssh  psc-lab  INGRESS    1000      tcp:22        False

نمونه 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 <pscendpointip> را به صورت Private Service Connect پیکربندی می کنید، باید یک آدرس IP منحصر به فرد ارائه دهید که در VPC شما تعریف نشده است.

از Cloud Shell

gcloud beta compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=psc-lab

"pscendpointip" را برای مدت زمان آزمایشگاه ذخیره کنید

(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip

یک قانون بازارسال برای اتصال نقطه پایانی به APIها و سرویس‌های Google ایجاد کنید.

از Cloud Shell

gcloud beta 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» را برای مدت زمان آزمایشگاه ذخیره کنید

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. پیکربندی DNS

فرض کنید برنامه‌ای دارید که از Google Cloud Storage استفاده می‌کند. بدون Private Service Connect، برنامه های شما ممکن است به "storage.googleapis.com" متصل شوند که به طور پیش فرض به برخی از آدرس های عمومی حل می شود. با Private Service Connect می‌توانید نام‌هایی مانند «storage-psclab.p.googleapis.com» ایجاد و استفاده کنید. نام و آدرس ها برای شبکه VPC شما و هر شبکه داخلی متصل خصوصی هستند.

Private Service Connect for DNS از قرارداد نامگذاری SERVICE-ENDPOINT.p.googleapis.com پیروی می کند. در مثال ارائه شده در بالا، "ذخیره سازی" SERVICE است و "psclab" نقطه پایانی است. گنجاندن "-" بین SERVICE و ENDPOINT ضروری است.

برای دسترسی به Cloud Storage با استفاده از نقطه پایانی Private Service Connect یک رکورد DNS (A) storage-psclab.p.googleapis.com ایجاد کنید که به آدرس IP نقطه پایانی Private Service Connect اشاره می کند.

DNS Private Zone ایجاد کنید

gcloud dns --project=$projectname managed-zones create psc-dns-zone --description="" --dns-name="p.googleapis.com." --visibility="private" --networks="psc-lab"

یک رکورد DNS ایجاد کنید

gcloud dns --project=$projectname record-sets transaction start --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction add $pscendpointip --name=storage-pscendpoint.p.googleapis.com. --ttl=300 --type=A --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction execute --zone=psc-dns-zone

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 به VM از طریق Cloud Shell

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

با سه بار کلیک کردن روی + (عکس زیر) پایانه های پوسته ابری اضافی ایجاد کنید.

69ea94e1527912bb.png

ماشین مجازی (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 به VM از طریق 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 SSH به psc-instance-1 از طریق 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) بررسی کنید GoogleAPI.com یک رکورد(های) DNS عمومی هنگام دسترسی به سطل ذخیره سازی استفاده می شود.

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 خصوصی و یک رکورد ایجاد کرده اید که به آدرس IP نقطه پایانی PSC نگاشت شده است. در مرحله بعدی، اکنون با به‌روزرسانی فایل VM BOTO در psc-instance-1، نحوه رفتار gsutil را کنترل می‌کنیم.

مشاهده پیکربندی پیش‌فرض BOTO از ترمینال نمونه VM از برگه 1 (psc-instance-1)

[psc-instance ~]$ more  /etc/boto.cfg

خروجی (project_id شما متفاوت خواهد بود)

[GSUtil]
default_project_id  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

پیکربندی BOTO را با استفاده از ویرایشگر نانو یا VI به روز کنید، اطمینان حاصل کنید که همه ورودی ها را کپی و جایگذاری کنید.

مثال: 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  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

14. رفتار جستجوی gsutil به روز شده را بررسی کنید

از برگه 3 (psc-instance-1) tcpdump را شروع کنید و ترافیک DNS را نظارت کنید

sudo tcpdump -vv -i eth0 port 53

جستجوی gsutil سطل ذخیره سازی را از برگه 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 است که هنگام تلاش برای دسترسی به سطل ذخیره‌سازی استفاده می‌شود.

@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 اکنون برای وضوح 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 beta compute forwarding-rules delete pscendpoint --global --quiet

gcloud beta 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 را انتخاب کنید

d0ed4bd585006e45.png

شناسایی و روی «psc-dns-zone» کلیک کنید

903532e68a262111.png

مجموعه رکورد "storage-pscendpoint.p.googleapis.com" را انتخاب کنید سپس روی Delete Record Sets کلیک کنید.

e89394b43ddb5ce2.png

برای تکمیل پاکسازی آزمایشگاه، روی Delete Zone کلیک کنید

b2a612d7b3a80030.png

16. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم.

آنچه را پوشش داده ایم

  • موارد استفاده اتصال سرویس خصوصی
  • الزامات شبکه
  • API های پشتیبانی شده
  • یک نقطه پایانی Private Service Connect ایجاد کرد
  • یک سطل ذخیره سازی ابری ایجاد کرد
  • مناطق خصوصی Cloud DNS ایجاد کرد
  • یک فایل پیکربندی BOTO به روز شد
  • یک NAT GW ایجاد کرد
  • لیست gsutil را در VM1 انجام دهید که با نقطه پایانی سرویس PSC شما حل می شود
  • لیست gsutil را در VM2 انجام دهید که با googleapis.com عمومی حل می شود
  • از Tcpdump برای تایید رزولوشن DNS استفاده کنید