استفاده از Private Service Connect برای انتشار و مصرف خدمات

1. معرفی

Private Service Connect به یک تولید کننده سرویس اجازه می دهد تا خدمات را به صورت خصوصی به مصرف کننده خدمات ارائه دهد. Private Service Connect مزایای زیر را ارائه می دهد:

  • یک شبکه VPC تولید کننده خدمات می تواند بیش از یک مصرف کننده سرویس را پشتیبانی کند.
  • هر مصرف کننده به یک آدرس IP داخلی که خودش تعریف می کند متصل می شود. Private Service Connect ترجمه آدرس شبکه (NAT) را برای هدایت درخواست به تولید کننده سرویس انجام می دهد.

45b90d50690dd111.png

شکل 2. Private Service Connect از نقاط پایانی و پیوست های سرویس استفاده می کند تا به مصرف کنندگان سرویس اجازه می دهد تا ترافیک را از شبکه VPC مصرف کننده به خدمات در شبکه VPC تولید کننده خدمات ارسال کنند (برای بزرگنمایی کلیک کنید).

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

  • مزایای اتصال سرویس خصوصی
  • مفاهیم کلیدی برای مصرف کنندگان خدمات
  • مفاهیم کلیدی برای تولیدکنندگان خدمات
  • یک محیط تولید کننده ایجاد کنید
  • خدمات (محیط تولیدکننده) را از طریق پیوست سرویس در معرض دید قرار دهید
  • یک محیط مصرف کننده ایجاد کنید
  • یک قانون حمل و نقل در شبکه مصرف کننده ایجاد کنید
  • اعتبار دسترسی مصرف کننده TCP
  • فعال کردن و تأیید پروتکل پروکسی
  • کنترل دسترسی خط مشی را فعال کنید

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

  • آشنایی با بار متعادل کننده های داخلی
  • امکان ایجاد VPC در دو پروژه

2. مزایای اتصال سرویس خصوصی

با PSC، در مقایسه با استفاده از VPC Peering، چندین مزیت دارید:

کنترل بهتر فضای IP خصوصی

  • به عنوان مصرف کننده خدمات، می توانید آدرس IP خصوصی را که برای اتصال به سرویس مدیریت شده ای که می خواهید به آن دسترسی داشته باشید، کنترل کنید.
  • به عنوان یک مصرف کننده خدمات، لازم نیست نگران رزرو محدوده آدرس IP خصوصی برای خدمات باطنی که در VPC شما مصرف می شود باشید. برای اتصال به خدمات تولید کننده فقط باید یک آدرس IP از زیر شبکه خود انتخاب کنید.
  • به‌عنوان تولیدکننده خدمات، می‌توانید یک مدل چند مستاجر را انتخاب کنید، جایی که VPC شما حاوی خدماتی است که به چندین VPC مصرف‌کننده خدمات ارائه می‌دهد. مصرف کنندگانی که محدوده های زیرشبکه همپوشانی دارند دیگر مشکلی ندارند.
  • به‌عنوان یک ارائه‌دهنده خدمات، می‌توانید سرویس خود را به هر تعداد مورد نیاز VM تغییر دهید، بدون نیاز به تماس با مشتری برای آدرس‌های IP بیشتر.

امنیت و انزوا بهبود یافته است

  • به عنوان یک مصرف کننده خدمات، فقط شما می توانید ارتباط را با تولید کننده خدمات آغاز کنید. این اتصال یک طرفه پیکربندی فایروال را به شدت ساده می‌کند، اما خطر ترافیک ناخوشایند تولیدکننده خدمات را نیز کاهش می‌دهد.
  • به عنوان یک تولید کننده خدمات، نیازی به تغییر قوانین فایروال خود بر اساس محدوده های زیر شبکه در VPC مصرف کننده ندارید. شما به سادگی می توانید قوانین فایروال را برای محدوده آدرس IP NAT پیکربندی شده برای سرویس خود ایجاد کنید.

مقیاس پذیری بهتر

  • PSC با پشتیبانی از هزاران مشتری، طراحی بسیار مقیاس‌پذیر را امکان‌پذیر می‌کند و به تولیدکنندگان خدمات اجازه می‌دهد تا خدمات چند مستاجر یا تک مستاجر بسیار مقیاس‌پذیر را ارائه دهند.
  • به عنوان یک مصرف کننده خدمات با استفاده از اتصال سرویس خصوصی، می توانید منابع مورد نیاز را در VPC خود ایجاد کنید. مقیاس این مورد تحت تأثیر تعداد چنین منابع ایجاد شده در VPC تولید کننده قرار نمی گیرد.

3. مفاهیم کلیدی برای مصرف کنندگان خدمات

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

نقاط پایانی

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

شما ترافیک را به نقطه پایانی ارسال می کنید، که آن را به اهداف خارج از شبکه VPC شما ارسال می کند.

اهداف

نقاط پایانی Private Service Connect یک هدف دارند، این سرویسی است که می خواهید به آن متصل شوید:

  • یک بسته API :
  • همه APIها: اکثر APIهای Google
  • VPC-SC: API هایی که VPC Service Controls از آن ها پشتیبانی می کند
  • یک سرویس منتشر شده در یک شبکه VPC دیگر. این سرویس می تواند توسط سازمان خودتان یا شخص ثالث مدیریت شود.

سرویس منتشر شده

برای اتصال نقطه پایانی خود به سرویس تولیدکننده خدمات، به پیوست سرویس برای سرویس نیاز دارید. URI پیوست سرویس دارای این قالب است: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

4. مفاهیم کلیدی برای تولیدکنندگان خدمات

برای در دسترس قرار دادن یک سرویس برای مصرف کنندگان، یک یا چند زیرشبکه اختصاصی ایجاد می کنید تا از آن برای ترجمه آدرس شبکه (NAT) آدرس های IP مصرف کننده استفاده کنید. سپس یک پیوست سرویس ایجاد می‌کنید که به آن زیرشبکه‌ها اشاره دارد.

زیرشبکه های Private Service Connect

برای افشای یک سرویس، تولید کننده سرویس ابتدا یک یا چند زیرشبکه را با هدف Private Service Connect ایجاد می کند .

هنگامی که درخواستی از یک شبکه VPC مصرف کننده ارسال می شود، آدرس IP منبع مصرف کننده با استفاده از NAT منبع (SNAT) به آدرس IP انتخاب شده از یکی از زیرشبکه های Private Service Connect ترجمه می شود.

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

این زیرشبکه ها را نمی توان برای منابعی مانند نمونه های VM یا قوانین حمل و نقل استفاده کرد. زیرشبکه ها فقط برای ارائه آدرس های IP برای SNAT اتصالات مصرف کننده ورودی استفاده می شوند.

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

حداقل اندازه برای یک زیرشبکه Private Service Connect 24/ است.

پیوست های سرویس

تولیدکنندگان خدمات خدمات خود را از طریق یک پیوست سرویس در معرض دید قرار می دهند.

  • برای افشای یک سرویس، یک تولید کننده سرویس یک پیوست سرویس ایجاد می کند که به قانون حمل و نقل متعادل کننده بار سرویس اشاره دارد.
  • برای دسترسی به یک سرویس، یک مصرف کننده سرویس یک نقطه پایانی ایجاد می کند که به پیوست سرویس اشاره دارد.

تنظیمات برگزیده اتصال

هنگامی که یک سرویس ایجاد می کنید، نحوه در دسترس قرار دادن آن را انتخاب می کنید. دو گزینه وجود دارد:

  • پذیرش خودکار اتصالات برای همه پروژه ها - هر مصرف کننده سرویس می تواند یک نقطه پایانی را پیکربندی کند و به طور خودکار به سرویس متصل شود.
  • اتصالات را برای پروژه های انتخاب شده بپذیرید - مصرف کنندگان خدمات یک نقطه پایانی را برای اتصال به سرویس پیکربندی می کنند و تولید کننده سرویس درخواست های اتصال را می پذیرد یا رد می کند.

5. محیط تست

شبکه مصرف‌کننده شامل یک آدرس IP ثابت TCP است که برای ایجاد درخواست‌ها به تولیدکننده خدمات، علاوه بر پیوست سرویس هدف که به پیوست سرویس تولیدکننده (سرویس منتشر شده) نگاشت می‌شود، استفاده می‌شود.

حالا بیایید نگاهی به شبکه تولیدکنندگان بیندازیم. توجه کنید که چگونه شبکه تولیدکنندگان نقشه ای به شبکه مصرف کنندگان ندارد، در عوض، شبکه تولیدکننده شامل یک پیوست سرویس (سرویس منتشر شده) است که توسط مصرف کننده برای خدمات استفاده می شود. پیوست سرویس تولیدکننده در آزمایشگاه ما یک موازنه بار داخلی لایه 4 (قانون حمل و نقل سازنده) است که به یک سرویس پشتیبان که از یک برنامه TCP پشتیبانی می کند نگاشت شده است.

زیرشبکه NAT و قوانین فایروال مربوطه امکان ارتباط با برنامه تولید کننده را فراهم می کند.

28b09284a99eb60b.png

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

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

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

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

6. قبل از شروع

Codelab به دو پروژه نیاز دارد، اگرچه برای PSC الزامی نیست. به مراجع برای پشتیبانی از پروژه های تک یا چندگانه توجه کنید.

پروژه واحد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده و مصرف کننده

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

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

پروژه های متعدد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

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

7. ایجاد شبکه VPC Producers

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

شبکه VPC

از Cloud Shell

gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom

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

از Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2

نمونه Cloud NAT را ایجاد کنید

Cloud NAT همان NAT مورد استفاده برای PSC نیست. Cloud NAT به صراحت برای دسترسی به اینترنت برای دانلود بسته های برنامه استفاده می شود.

ایجاد Cloud Router

از Cloud Shell

gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2

Cloud NAT را ایجاد کنید

از Cloud Shell

gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

8. نمونه های محاسباتی ایجاد کنید

از Cloud Shell نمونه www-01 ایجاد کنید

gcloud compute instances create www-01 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

از Cloud Shell نمونه www-02 را ایجاد کنید

gcloud compute instances create www-02 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

9. گروه نمونه مدیریت نشده ایجاد کنید

یک گروه نمونه مدیریت نشده متشکل از www-01 و www-02 ایجاد کنید

از Cloud Shell

gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a

gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02

gcloud compute health-checks create http hc-http-80 --port=80

10. خدمات باطن TCP، قانون حمل و نقل و فایروال ایجاد کنید

از Cloud Shell سرویس Backend را ایجاد کنید

gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80

gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a

از Cloud Shell قانون ارسال را ایجاد کنید

gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2

از Cloud Shell یک قانون فایروال ایجاد کنید تا بررسی های سلامت باطن را فعال کنید

gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging

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

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

از Cloud Shell

gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

11. زیرشبکه TCP NAT ایجاد کنید

از Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect

12. قوانین پیوست سرویس TCP و فایروال را ایجاد کنید

از Cloud Shell پیوست سرویس TCP را ایجاد کنید

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp

پیوست سرویس TCP را اعتبارسنجی کنید

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2

از Cloud Shell قانون فایروال را ایجاد کنید که به زیرشبکه TCP NAT اجازه دسترسی به باطن ILB را می دهد.

gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging

13. شبکه Consumers VPC را ایجاد کنید

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

در بخش زیر، VPC مصرف کننده در یک پروژه جداگانه پیکربندی شده است. ارتباط بین شبکه مصرف کننده و تولید کننده از طریق پیوست سرویس تعریف شده در شبکه مصرف کنندگان انجام می شود.

شبکه VPC

Codelab به دو پروژه نیاز دارد، اگرچه برای PSC الزامی نیست. به مراجع برای پشتیبانی از پروژه های تک یا چندگانه توجه کنید.

پروژه واحد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده و مصرف کننده

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

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

پروژه های متعدد - به روز رسانی پروژه برای حمایت از مصرف کننده یک شبکه

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

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

از Cloud Shell

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

ایجاد Subnet برای PSC

از Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2

یک آدرس IP ثابت برای برنامه های TCP ایجاد کنید

از Cloud Shell

gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100

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

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

  • برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
  • به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.

از Cloud Shell

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

اگرچه برای PSC لازم نیست، یک قانون فایروال خروجی برای نظارت بر ترافیک PSC مصرف کننده به پیوست سرویس تولیدکننده ایجاد کنید

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

نمونه Cloud NAT را ایجاد کنید

Cloud NAT همان NAT مورد استفاده برای PSC نیست. Cloud NAT به صراحت برای دسترسی به اینترنت برای دانلود بسته های برنامه استفاده می شود

ایجاد Cloud Router

از Cloud Shell

gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2

Cloud NAT را ایجاد کنید

از Cloud Shell

gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

14. VM نمونه آزمایشی ایجاد کنید

از Cloud Shell

gcloud compute instances create test-instance-1 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=consumer-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install iperf3 -y
apt-get install tcpdump -y'

15. پیوست سرویس TCP را ایجاد کنید

از Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

16. اعتبار سنجی

ما از گزارش‌های CURL، TCPDUMP و فایروال برای تأیید ارتباط مصرف‌کننده و تولیدکننده استفاده خواهیم کرد.

در پروژه مصرف کننده از آدرس های IP ثابت برای ایجاد ارتباط با تولید کننده استفاده می شود. این نگاشت آدرس IP استاتیک به قانون حمل و نقل مصرف کننده با انجام دستور زیر تأیید می شود.

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

از پوسته Consumer VPCs Cloud قانون ارسال TCP و IP استاتیک را شناسایی کنید

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2

خروجی:

IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T13:34:23.359-07:00'
id: '2768158450402915488'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
<snip>

17. اعتبارسنجی TCP

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

از Producer Project، «www-01» و «www-02» را شناسایی کنید و برای هر نمونه یک جلسه SSH راه اندازی کنید.

6d0bb8c5cb115876.png

از "www-01" TCPDUMP را برای نظارت بر NAT انجام دهید

sudo tcpdump -i any net 192.168.0.0/16 -n

از "www-02" TCPDUMP را برای نظارت بر NAT انجام دهید

sudo tcpdump -i any net 192.168.0.0/16 -n

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

از پروژه مصرف کننده، "test-instance-1" را شناسایی کنید و دو جلسه را راه اندازی کنید.

از جلسه "test-instance-1" TCPDUMP را برای نظارت بر مصرف کننده انجام دهید

sudo tcpdump -i any host 10.0.60.100 -n

از جلسه دوم "test-instance-1" اعتبارسنجی TCP را انجام می دهد

curl -v 10.0.60.100 

18. مشاهدات - مصرف کننده

از جلسه "test-instance-1" دو CURL موفقیت آمیز است و 200 OK می دهد.

@test-instance-1:~$ curl -v 10.0.60.100 
* Rebuilt URL to: 10.0.60.100/
*   Trying 10.0.60.100...
* TCP_NODELAY set
* Connected to 10.0.60.100 (10.0.60.100) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.60.100
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Wed, 14 Jul 2021 21:20:22 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT
< ETag: "1d-5c71aed5edabd"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/html
< 
Page on www-01 in us-west2-a
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.60.100 left intact

از جلسه "test-instance-1" یک TCPDUMP نمونه VM → ارتباط و پاسخ TCP Static IP را شناسایی می کند.

21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

ثبت فایروال

با استفاده از قانون فایروال اعتبارسنجی Logs Explorer "vpc-consumner-psc" جریان بین نمونه VM و IP استاتیک را ضبط می کند.

  1. از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
  2. در قسمت Query ورودی زیر را با yourconsumerproject به روز کنید و "Run Query" را انتخاب کنید

logName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد

b573c878a8d6d01f.png

  1. گزارش را گسترش دهید و خروجی ارائه شده در زیر را شناسایی کنید. به dest_ip توجه داشته باشید: 10.0.60.100 IP STATIC TCP و src_ip: 10.0.60.2 آدرس IP نمونه VM است.

1b4f46b3e61f6f12.png

19. مشاهدات - تهیه کننده

از نمونه Backend "www-01" یا "www-02" ارتباط زیر بین زیرشبکه TCP NAT و TCP ILB مشاهده می شود.

21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

20. ثبت فایروال

با استفاده از قانون فایروال اعتبارسنجی Logs Explorer "vpc-demo-allowpsc-tcp" جریان TCP NAT و TCP ILB را با انجام مراحل زیر دریافت می کند:

  1. از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
  2. در قسمت Query ورودی زیر را با پروژه خود به روز کنید و "Run Query" را انتخاب کنید

logName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-producer/firewall:vpc-demo-allowpsc-tcp")

  1. نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد

8ce6b0d17d76ad6d.png

  1. گزارش را گسترش دهید و خروجی ارائه شده در زیر را شناسایی کنید. به TCP ILB dest_ip توجه کنید: 10.0.2.10 و NAT TCP source_range (192.168.0.0/24) و src_ip مربوطه: 192.168.0.2.

e157a7af8cb667e.png

21. Proxy Protocol را فعال کنید

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

e9d1c49971b10ed0.png

ارجاع به مستندات

خدمات منتشر شده توسط تولیدکنندگان را حذف کنید

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

از پوسته ابری پیوست های سرویس TCP را حذف کنید

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

پیوست‌های سرویس تأیید اعتبار پوسته ابری حذف می‌شوند (0 مورد فهرست شده)

gcloud compute service-attachments list

پیوست سرویس TCP را با فعال بودن پروتکل پروکسی ایجاد کنید

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \
--producer-forwarding-rule=vpc-demo-www-ilb-tcp \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=vpc-demo-us-west2-psc-tcp \
--enable-proxy-protocol

پیوست‌های سرویس اعتبارسنجی پوسته ابری با فعال بودن پروتکل پراکسی ایجاد می‌شوند (درست)

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

قوانین ارسال TCP را از پوسته ابری حذف کنید

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

قوانین ارسال TCP را مجدداً ایجاد کنید تا با پیوست سرویس (تولیدکننده) ایجاد شده قبلی مرتبط شود

از پوسته ابری قانون ارسال TCP را ایجاد کنید

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \
--region=us-west2 --network=vpc-demo-consumer \
--address=vpc-consumer-psc-tcp \
--target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

اعتبار سنجی پروتکل پروکسی

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

از Producer Project، «www-01» و «www-02» را شناسایی کنید و برای هر نمونه یک جلسه راه اندازی کنید.

6d0bb8c5cb115876.png

از "www-01" TCPDUMP را برای نظارت بر NAT انجام دهید

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

از "www-02" TCPDUMP را برای نظارت بر NAT انجام دهید

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

از پروژه مصرف کننده، "test-instance-1" را شناسایی کنید و یک جلسه واحد راه اندازی کنید

از جلسه "test-instance-1" یک حلقه انجام دهید

curl 10.0.60.100 

مشاهدات - مصرف کننده

توجه داشته باشید که اگر PROXY Protocol v2 فعال باشد اما برنامه برای پشتیبانی از آن پیکربندی نشده باشد، در صورت اتصال از کلاینت طبق مثال زیر، پیام خطا نمایش داده می شود. به‌روزرسانی‌های آپاچی برای قرار دادن هدر پروکسی اضافی v2 مورد نیاز است و در لابلای کد پوشش داده نمی‌شود.

از جلسه "test-instance-1" CURL 400 درخواست بد مورد انتظار را ایجاد می کند، اگرچه کوئری backend موفقیت آمیز است.

@test-instance-1:~$ curl 10.0.60.100 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>

مشاهدات - مصرف کننده

از نمونه Backend "www-01" یا "www-02" ارتباط زیر بین زیرشبکه TCP NAT و TCP ILB با پروتکل پروکسی تعبیه شده در ضبط مشاهده می شود.

در بیشتر موارد، بسته سوم در tcpdump حاوی عناصر اطلاعات پروتکل پروکسی (IE) مربوطه است. به صورت اختیاری، بسته را با 39 بایت که حاوی پروتکل پروکسی IE است شناسایی کنید.

192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP
        0x0000:  4500 004f 0000 4000 4006 6df4 c0a8 0003  E..O..@.@.m.....
        0x0010:  0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b  .......P..+<N%..
        0x0020:  5018 6e00 b617 0000 0d0a 0d0a 000d 0a51  P.n............Q
        0x0030:  5549 540a 2111 0017 0a00 3c02 0a00 3c64  UIT.!.....<...<d
        0x0040:  8138 0050 e000 0800 9b34 d70a 003c 64    .8.P.....4...<d

امضای پروتکل PROXY را شناسایی کنید: 0d0a0d0a000d0a515549540a در ضبط بسته

با شناسایی امضای پروتکل پروکسی، می توان آن را شکست و فیلدهای زیر را رمزگشایی کرد:

امضای پروتکل پروکسی: 0d0a0d0a000d0a515549540a

سایر فیلدهای پروتکل پروکسی: 21 11 00 17

IP و پورت: 0a003c02 0a003c64 8138 0050

نوع TLV: e0

طول TLV: 00 08

psc شناسه اتصال: 009b34d70a003c64

هگز

اعشاری / IP

امضای پروتکل پروکسی

0d0a0d0a000d0a515549540a

نسخه، پروتکل، طول

21 11 0017

Src IP

0a003c02

10.0.60.2

Dst IP

0a003c64

10.0.60.100

بندر Src

8138

33080

بندر Dst

0050

80

نوع TLV (PP2_TYPE_GCP)

e0

طول TLV

0008

pscConnectionId

00004dde290a003c64

43686719580552292

pscConnectionId را نیز می‌توان با توصیف قانون حمل و نقل مصرف‌کننده به صورت زیر تأیید کرد و اطمینان حاصل کرد که مطابقت دارد:

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

از پوسته ابری قوانین ارسال TCP را توضیح دهید

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2

خروجی توصیف pscConnectionID

$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T16:50:31.766-07:00'
id: '4443494505307621032'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '43686719580552292'
pscConnectionStatus: ACCEPTED

22. خط مشی اتصال

شما می توانید بین پذیرش خودکار و صریح پروژه برای یک سرویس منتشر شده جابجا شوید.

تغییر از پذیرش خودکار به پذیرش صریح، بر نقاط پایانی مصرف‌کننده‌ای که قبل از این تغییر به سرویس متصل بوده‌اند، تأثیر نمی‌گذارد. نقاط پایانی مصرف کننده موجود می توانند به سرویس منتشر شده متصل شوند تا زمانی که پیوست سرویس حذف شود. قبل از اتصال به سرویس، نقاط پایانی مصرف کننده جدید باید پذیرفته شوند. برای اطلاعات بیشتر به مدیریت درخواست ها برای دسترسی به یک سرویس منتشر شده مراجعه کنید.

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

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

از پوسته ابری سرویس تولیدکنندگان، خط مشی اولویت اتصال را از پذیرش خودکار تا پذیرش دستی به‌روزرسانی کنید

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL

وضعیت نقطه پایانی را با پیمایش به خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده → vpc-demo-psc-west2-tcp → پروژه های متصل شناسایی کنید.

e1d90d1563e10731.png

توجه داشته باشید، پروژه مصرف کننده در پروژه های متصل به وضعیت "در انتظار" تغییر کرد.

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

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20

وضعیت نقطه پایانی را با پیمایش به خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده → vpc-demo-psc-west2-tcp → پروژه های متصل شناسایی کنید.

35cba9ac640594a2.png

توجه داشته باشید، پروژه مصرف کننده در پروژه های متصل به وضعیت "پذیرفته شده" تغییر کرد.

23. مراحل پاکسازی

مراحل پاکسازی شبکه تولیدکننده

توجه: در قسمت زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که حاوی Producer Service شما است، اجرا کنید

از یک پوسته ابری در ترمینال پروژه Producer، اجزای آزمایشگاه را حذف کنید

gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet

gcloud compute routers delete crnatprod --region=us-west2 --quiet

gcloud compute instances delete www-01 --zone=us-west2-a --quiet

gcloud compute instances delete www-02 --zone=us-west2-a --quiet

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet

gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet

gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet

gcloud compute health-checks delete hc-http-80 --quiet

gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet

gcloud compute firewall-rules delete vpc-demo-health-checks --quiet

gcloud compute firewall-rules delete psclab-iap-prod --quiet

gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet

gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet

gcloud compute networks delete vpc-demo-producer --quiet

توجه: در بخش زیر، به‌روزرسانی‌های پیکربندی را در پروژه‌ای که شامل Consumer Service شماست، اجرا کنید

مراحل پاکسازی شبکه مصرف کننده

از یک پوسته ابری در ترمینال پروژه Producer، اجزای آزمایشگاه را حذف کنید

gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet

gcloud compute routers delete crnatconsumer --region=us-west2 --quiet

gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

24. تبریک!

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

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

  • مزایای اتصال سرویس خصوصی
  • مفاهیم کلیدی برای مصرف کنندگان خدمات
  • مفاهیم کلیدی برای تولیدکنندگان خدمات
  • یک محیط تولید کننده ایجاد کنید
  • خدمات (محیط تولیدکننده) را از طریق پیوست سرویس در معرض دید قرار دهید
  • یک محیط مصرف کننده ایجاد کنید
  • یک قانون حمل و نقل در شبکه مصرف کننده ایجاد کنید
  • اعتبار دسترسی مصرف کننده TCP
  • فعال کردن و تأیید پروتکل پروکسی
  • کنترل دسترسی خط مشی را فعال کنید