1. مقدمه
Private Service Connect به یک تولید کننده سرویس اجازه می دهد تا خدمات را به صورت خصوصی به مصرف کننده خدمات ارائه دهد. Private Service Connect مزایای زیر را ارائه می دهد:
- یک شبکه VPC تولید کننده خدمات می تواند بیش از یک مصرف کننده سرویس را پشتیبانی کند.
- هر مصرف کننده به یک آدرس IP داخلی که خودش تعریف می کند متصل می شود. Private Service Connect ترجمه آدرس شبکه (NAT) را برای هدایت درخواست به تولید کننده سرویس انجام می دهد.
شکل 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 و قوانین فایروال مربوطه امکان ارتباط با برنامه تولید کننده را فراهم می کند.
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
نامیده خواهد شد.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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 راه اندازی کنید.
از "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 استاتیک را ضبط می کند.
- از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
- در قسمت 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")
- نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد
- گزارش را گسترش دهید و خروجی ارائه شده در زیر را شناسایی کنید. به dest_ip توجه داشته باشید: 10.0.60.100 IP STATIC TCP و src_ip: 10.0.60.2 آدرس IP نمونه VM است.
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 را با انجام مراحل زیر دریافت می کند:
- از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
- در قسمت 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")
- نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد
- گزارش را گسترش دهید و خروجی ارائه شده در زیر را شناسایی کنید. به TCP ILB dest_ip توجه کنید: 10.0.2.10 و NAT TCP source_range (192.168.0.0/24) و src_ip مربوطه: 192.168.0.2.
21. Proxy Protocol را فعال کنید
به طور پیش فرض، Private Service Connect آدرس IP منبع مصرف کننده را به آدرسی در یکی از زیرشبکه های Private Service Connect در شبکه VPC تولید کننده سرویس ترجمه می کند. اگر می خواهید به جای آن آدرس IP منبع اصلی مصرف کننده را ببینید، می توانید پروتکل PROXY را فعال کنید. اگر پروتکل PROXY فعال باشد، می توانید آدرس IP منبع مصرف کننده و شناسه اتصال PSC را از سربرگ پروتکل PROXY دریافت کنید.
خدمات منتشر شده توسط تولیدکنندگان را حذف کنید
توجه: در قسمت زیر، بهروزرسانیهای پیکربندی را در پروژهای که حاوی 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» را شناسایی کنید و برای هر نمونه یک جلسه راه اندازی کنید.
از "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 | ||
امضای پروتکل پروکسی | | ||
نسخه، پروتکل، طول | | ||
Src IP | | | |
Dst IP | | | |
بندر Src | | | |
بندر Dst | | | |
نوع TLV (PP2_TYPE_GCP) | | ||
طول TLV | | ||
pscConnectionId | | |
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 → پروژه های متصل شناسایی کنید.
توجه داشته باشید، پروژه مصرف کننده در پروژه های متصل به وضعیت "در انتظار" تغییر کرد.
پروژه مصرف کنندگان را با اجرای موارد زیر در پوسته ابری بپذیرید، اطمینان حاصل کنید که با نام پروژه مناسب به روز رسانی کنید
gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20
وضعیت نقطه پایانی را با پیمایش به خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده → vpc-demo-psc-west2-tcp → پروژه های متصل شناسایی کنید.
توجه داشته باشید، پروژه مصرف کننده در پروژه های متصل به وضعیت "پذیرفته شده" تغییر کرد.
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
- فعال کردن و تأیید پروتکل پروکسی
- کنترل دسترسی خط مشی را فعال کنید