خدمات مدیریت شده با رابط اتصال سرویس خصوصی

۱. مقدمه

رابط اتصال سرویس خصوصی منبعی است که به یک شبکه ابر خصوصی مجازی (VPC) تولیدکننده اجازه می‌دهد تا اتصالاتی را به مقاصد مختلف در یک شبکه VPC مصرف‌کننده آغاز کند. شبکه‌های تولیدکننده و مصرف‌کننده می‌توانند در پروژه‌ها و سازمان‌های مختلف باشند.

اگر یک اتصال شبکه، اتصالی را از رابط Private Service Connect بپذیرد، Google Cloud یک آدرس IP از زیرشبکه مصرف‌کننده که توسط اتصال شبکه مشخص شده است، به رابط اختصاص می‌دهد. شبکه‌های مصرف‌کننده و تولیدکننده به هم متصل هستند و می‌توانند با استفاده از آدرس‌های IP داخلی ارتباط برقرار کنند.

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

  • یک اتصال شبکه به شبکه تولیدکننده اجازه می‌دهد تا اتصالاتی را به شبکه مصرف‌کننده آغاز کند (خروجی سرویس مدیریت‌شده)، در حالی که یک نقطه پایانی به شبکه مصرف‌کننده اجازه می‌دهد تا اتصالاتی را به شبکه تولیدکننده آغاز کند (ورودی سرویس مدیریت‌شده).
  • اتصال رابط Private Service Connect از نوع انتقالی است. این بدان معناست که یک شبکه تولیدکننده می‌تواند با شبکه‌های دیگری که به شبکه مصرف‌کننده متصل هستند، ارتباط برقرار کند.

آنچه خواهید ساخت

شما یک psc-network-attachment واحد در VPC مصرف‌کننده ایجاد خواهید کرد که منجر به دو رابط PSC به عنوان backend برای متعادل‌کننده بار داخلی L4 می‌شود. از VPC تولیدکننده، tiger یک curl به cosmo در backend-vpc ارسال می‌کند. در VPC تولیدکننده، شما یک مسیر استاتیک به ترافیک مقصد 192.168.20.0/28 گام بعدی به عنوان متعادل‌کننده بار داخلی ایجاد خواهید کرد که از رابط‌های backend و PSC بعدی برای مسیریابی ترافیک به cosmo استفاده خواهد کرد. برای مرور کلی به شکل 1 مراجعه کنید.

همین رویکرد را می‌توان با سرویس‌های مدیریت‌شده گوگل که هنگام استفاده از دسترسی به سرویس خصوصی، VPC آنها به VPC مشتری متصل است، استفاده کرد.

شکل ۱

36dbc7f825a21cbd.png

آنچه یاد خواهید گرفت

  • نحوه ایجاد پیوست شبکه
  • چگونه یک تولیدکننده می‌تواند از یک اتصال شبکه برای ایجاد رابط PSC به عنوان backend استفاده کند
  • نحوه برقراری ارتباط از تولیدکننده به مصرف‌کننده با استفاده از ILB به عنوان گام بعدی
  • چگونه می‌توان از طریق VPC peering دسترسی از ماشین مجازی تولیدکننده (tiger) به ماشین مجازی مصرف‌کننده (cosmo) را فراهم کرد؟

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

۲. قبل از شروع

پروژه را برای پشتیبانی از آموزش به‌روزرسانی کنید

این آموزش از متغیرها (variables) برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

درون Cloud Shell، موارد زیر را انجام دهید:

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

۳. تنظیمات مصرف‌کننده

ایجاد VPC مصرف‌کننده

درون Cloud Shell، موارد زیر را انجام دهید:

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

زیرشبکه اتصال شبکه خصوصی (Private Service Connect Network Attachment subnet) را ایجاد کنید.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1

ایجاد VPC بک‌اند

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks create backend-vpc --project=$projectid --subnet-mode=custom

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

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks subnets create cosmo-subnet-1 --project=$projectid --range=192.168.20.0/28 --network=backend-vpc --region=us-central1

ایجاد قوانین فایروال backend-vpc

در cloud Shell، یک قانون ورود برای ترافیک از زیرشبکه psc-network-attachment به cosmo ایجاد کنید.

gcloud compute firewall-rules create allow-ingress-to-cosmo \
    --network=backend-vpc \
    --action=ALLOW \
    --rules=ALL \
    --direction=INGRESS \
    --priority=1000 \
    --source-ranges="192.168.10.0/28" \
    --destination-ranges="192.168.20.0/28" \
    --enable-logging

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

در آموزش نصب بسته نرم‌افزاری، از Cloud NAT استفاده شده است، زیرا ماشین مجازی آدرس IP عمومی ندارد. Cloud NAT به ماشین‌های مجازی با آدرس IP خصوصی امکان دسترسی به اینترنت را می‌دهد.

درون Cloud Shell، روتر ابری را ایجاد کنید.

gcloud compute routers create cloud-router-for-nat --network backend-vpc --region us-central1

درون Cloud Shell، دروازه NAT را ایجاد کنید.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

۴. فعال کردن پرداخت درون برنامه‌ای (IAP)

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

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

در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network backend-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

۵. ایجاد نمونه‌های ماشین مجازی مصرف‌کننده

درون Cloud Shell، نمونه ماشین مجازی مصرف‌کننده، cosmo، را ایجاد کنید.

gcloud compute instances create cosmo \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=cosmo-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to cosmo's backend server !!' | tee /var/www/html/index.html
      EOF"

آدرس‌های IP نمونه‌ها را دریافت و ذخیره کنید:

درون Cloud Shell، توصیفی را روی نمونه‌های ماشین مجازی cosmo انجام دهید.

gcloud compute instances describe cosmo --zone=us-central1-a | grep  networkIP:

۶. اتصال شبکه سرویس خصوصی

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

پیوست شبکه را ایجاد کنید

درون Cloud Shell، پیوست شبکه را ایجاد کنید.

gcloud compute network-attachments create psc-network-attachment \
    --region=us-central1 \
    --connection-preference=ACCEPT_MANUAL \
    --producer-accept-list=$projectid \
    --subnets=intf-subnet

فهرست کردن پیوست‌های شبکه

درون Cloud Shell، پیوست شبکه را فهرست کنید.

gcloud compute network-attachments list

پیوست‌های شبکه را شرح دهید

درون Cloud Shell، پیوست شبکه را شرح دهید.

gcloud compute network-attachments describe psc-network-attachment --region=us-central1

به آدرس اینترنتی psc-network-attachment که توسط تولیدکننده هنگام ایجاد رابط(های) اتصال سرویس خصوصی استفاده خواهد شد، توجه کنید. مثال زیر:

user$ gcloud compute network-attachments describe psc-network-attachment --region=us-central1
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2023-06-07T11:27:33.116-07:00'
fingerprint: 8SDsvG6TfYQ=
id: '5014253525248340730'
kind: compute#networkAttachment
name: psc-network-attachment
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
producerAcceptLists:
- $projectid
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment
subnetworks:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/intf-subnet

۷. ایجاد ارتباط VPC بین مصرف‌کننده و VPC بک‌اند

شما یک اتصال VPC peering بین VPC مصرف‌کننده و backend ایجاد خواهید کرد. این امر نحوه برقراری اتصال گوگل به VPCهای مشتری برای سرویس‌های مدیریت‌شده علاوه بر peering بین سازمانی برای اتصال به شبکه را تکرار می‌کند. peering VPC باید از هر VPC پیکربندی شود.

VPC مصرف‌کننده برای اتصال VPC به بک‌اند

ایجاد اتصال همتاسازی VPC از مصرف‌کننده به vpc پشتیبان

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks peerings create consumer-to-backend-vpc \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=backend-vpc \
    --stack-type=IPV4_ONLY

ایجاد اتصال همتاسازی VPC از backend به vpc مصرف‌کننده

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks peerings create backend-to-consumer-vpc \
    --network=backend-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc \
    --stack-type=IPV4_ONLY

جزئیات وضعیت همگرایی VPC را اعتبارسنجی کنید

در داخل Cloud Shell، بررسی کنید که اتصال VPC در حالت «فعال» و «متصل» باشد.

gcloud compute networks peerings list

مثال:

user@cloudshell$ gcloud compute networks peerings list
NAME: backend-to-consumer-vpc
NETWORK: backend-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: consumer-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

NAME: consumer-to-backend-vpc
NETWORK: consumer-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: backend-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

۸. تنظیمات تولیدکننده

VPC تولیدکننده را ایجاد کنید

درون Cloud Shell، موارد زیر را انجام دهید:

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

زیرشبکه‌های تولیدکننده را ایجاد کنید

درون Cloud Shell، زیرشبکه مورد استفاده برای vNIC0 رابط(های) psc را ایجاد کنید.

gcloud compute networks subnets create prod-subnet --project=$projectid --range=10.20.1.0/28 --network=producer-vpc --region=us-central1

درون Cloud Shell، زیرشبکه‌ای که برای instance tiger استفاده می‌شود را ایجاد کنید.

gcloud compute networks subnets create prod-subnet-2 --project=$projectid --range=10.30.1.0/28 --network=producer-vpc --region=us-central1

درون Cloud Shell، زیرشبکه‌ای که برای متعادل‌کننده بار داخلی استفاده می‌شود را ایجاد کنید.

gcloud compute networks subnets create prod-subnet-3 --project=$projectid --range=172.16.10.0/28 --network=producer-vpc --region=us-central1

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

در آموزش نصب بسته نرم‌افزاری، از Cloud NAT استفاده شده است، زیرا ماشین مجازی آدرس IP عمومی ندارد. Cloud NAT به ماشین‌های مجازی با آدرس IP خصوصی امکان دسترسی به اینترنت را می‌دهد.

درون Cloud Shell، روتر ابری را ایجاد کنید.

gcloud compute routers create cloud-router-for-nat-producer --network producer-vpc --region us-central1

درون Cloud Shell، دروازه NAT را ایجاد کنید.

gcloud compute routers nats create cloud-nat-us-central1-producer --router=cloud-router-for-nat-producer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

فعال کردن IAP

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

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

در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.

gcloud compute firewall-rules create ssh-iap-producer \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

ایجاد نمونه‌های ماشین مجازی تولیدکننده

درون Cloud Shell، نمونه ماشین مجازی مصرف‌کننده، tiger، را ایجاد کنید.

gcloud compute instances create tiger \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=prod-subnet-2 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump"

۹. ایجاد قوانین فایروال تولیدکننده

در VPC تولیدکننده، یک قانون فایروال ورودی ایجاد کنید که امکان ارتباط از prod-subnet-2 به تمام نمونه‌های موجود در producer-vpc را فراهم کند.

درون Cloud Shell، قانون فایروال تولیدکننده را ایجاد کنید.

gcloud compute --project=$projectid firewall-rules create allow-tiger-ingress --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=10.30.1.0/28 --enable-logging

۱۰. ایجاد رابط اتصال سرویس خصوصی

رابط اتصال سرویس خصوصی منبعی است که به یک شبکه ابر خصوصی مجازی (VPC) تولیدکننده اجازه می‌دهد تا اتصالاتی را به مقاصد مختلف در یک شبکه VPC مصرف‌کننده آغاز کند. شبکه‌های تولیدکننده و مصرف‌کننده می‌توانند در پروژه‌ها و سازمان‌های مختلف باشند.

اگر یک اتصال شبکه، اتصالی را از رابط Private Service Connect بپذیرد، Google Cloud یک آدرس IP از زیرشبکه مصرف‌کننده که توسط اتصال شبکه مشخص شده است، به رابط اختصاص می‌دهد. شبکه‌های مصرف‌کننده و تولیدکننده به هم متصل هستند و می‌توانند با استفاده از آدرس‌های IP داخلی ارتباط برقرار کنند.

در این آموزش، شما دو نمونه با اتصال شبکه خصوصی service connect ایجاد خواهید کرد که بک‌اند متعادل‌کننده بار داخلی خواهد بود.

درون Cloud Shell، رابط Private Service Connect (rabbit) را ایجاد کنید و UR I مربوط به psc-network-attachment که قبلاً از خروجی توضیحات پیوست شبکه شناسایی شده بود را وارد کنید.

gcloud compute instances create rabbit --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

درون Cloud Shell، رابط Private Service Connect (fox) را ایجاد کنید و UR I مربوط به psc-network-attachment که قبلاً از خروجی توضیحات پیوست شبکه شناسایی شده بود را وارد کنید.

gcloud compute instances create fox --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

اعتبارسنجی چند نیک

تأیید کنید که رابط PSC با آدرس IP مناسب پیکربندی شده است. vNIC0 از زیرشبکه تولیدکننده (10.20.1.0/28) و vNIC1 از زیرشبکه مصرف‌کننده intf (192.168.10.0/28) استفاده خواهد کرد.

gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:

gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:

مثال:

user$ gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.2
  networkIP: 192.168.10.2

user$ gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.3
  networkIP: 192.168.10.3

۱۱. ایجاد و اضافه کردن خرگوش و روباه به یک گروه نمونه مدیریت نشده

در بخش بعدی، یک گروه نمونه مدیریت نشده ایجاد خواهید کرد که شامل نمونه‌های رابط PSC به نام‌های rabbit و fox خواهد بود.

درون Cloud Shell، گروه نمونه مدیریت نشده را ایجاد کنید.

gcloud compute instance-groups unmanaged create psc-interface-instances-ig --project=$projectid --zone=us-central1-a

درون Cloud Shell، نمونه‌های fox و rabbit را به گروه نمونه اضافه کنید.

gcloud compute instance-groups unmanaged add-instances psc-interface-instances-ig --project=$projectid --zone=us-central1-a --instances=fox,rabbit

۱۲. ایجاد بررسی سلامت TCP، سرویس‌های backend، قانون ارسال و فایروال

درون Cloud Shell، بررسی سلامت backend را ایجاد کنید.

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

ایجاد سرویس backend در داخل Cloud Shell

gcloud compute backend-services create psc-interface-backend --load-balancing-scheme=internal --protocol=tcp --region=us-central1 --health-checks=hc-http-80
gcloud compute backend-services add-backend psc-interface-backend --region=us-central1 --instance-group=psc-interface-instances-ig --instance-group-zone=us-central1-a

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

gcloud compute forwarding-rules create psc-ilb --region=us-central1 --load-balancing-scheme=internal --network=producer-vpc --subnet=prod-subnet-3 --address=172.16.10.10 --ip-protocol=TCP --ports=all --backend-service=psc-interface-backend --backend-service-region=us-central1

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

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

۱۳. ایجاد جداول IP لینوکس برای رابط(های) PSC - rabbit

از نمونه رابط PSC، جداول IP لینوکس را پیکربندی کنید تا امکان ارتباط تولیدکننده با زیرشبکه‌های مصرف‌کننده فراهم شود.

نام سیستم عامل مهمان رابط Private Service Connect خود را پیدا کنید

برای پیکربندی مسیریابی، باید نام سیستم عامل مهمان رابط Private Service Connect خود را بدانید، که با نام رابط در Google Cloud متفاوت است.

با استفاده از IAP در Cloud Shell، وارد رابط psc ماشین مجازی rabbit شوید.

gcloud compute ssh rabbit --project=$projectid --zone=us-central1-a --tunnel-through-iap

در پوسته ابری، آدرس IP نمونه رابط psc را بدست آورید

ip a

مثال:

user@rabbit:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.2/32 brd 10.20.1.2 scope global dynamic ens4
       valid_lft 59396sec preferred_lft 59396sec
    inet6 fe80::4001:aff:fe14:102/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.2/32 brd 192.168.10.2 scope global dynamic ens5
       valid_lft 66782sec preferred_lft 66782sec
    inet6 fe80::4001:c0ff:fea8:a02/64 scope link 
       valid_lft forever preferred_lft forever

IP دروازه رابط PSC خود را پیدا کنید

در فهرست رابط‌های شبکه، نام رابطی را که با آدرس IP رابط Private Service Connect شما مرتبط است، پیدا کرده و ذخیره کنید - برای مثال، ens5 (vNIC1)

برای پیکربندی مسیریابی، باید آدرس IP دروازه پیش‌فرض رابط Private Service Connect خود را بدانید.

در cloud Shell از عدد ۱ استفاده خواهیم کرد زیرا رابط PSC با vNIC1 مرتبط است.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

مثال، gw پیش‌فرض 192.168.10.1 را تولید می‌کند.

user@rabbit:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

اضافه کردن مسیر برای زیرشبکه‌های مصرف‌کننده

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

اعتبارسنجی جدول مسیر

در Cloud Shell مسیرهای فعلی را اعتبارسنجی کنید.

ip route show

مثال.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

در Cloud Shell مسیر را به cosmo-subnet-1 اضافه کنید

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

اعتبارسنجی جدول مسیر

در Cloud Shell، مسیرهای اضافه شده‌ی به‌روزرسانی شده را اعتبارسنجی کنید.

ip route show

مثال.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5 

ایجاد قوانین جداول IP

در Cloud Shell، جداول IP فعلی را اعتبارسنجی کنید.

sudo iptables -t nat -L -n -v

مثال:

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination  

در Cloud Shell جداول IP را به‌روزرسانی کنید

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

در Cloud Shell، جداول IP به‌روزرسانی‌شده را اعتبارسنجی کنید.

sudo iptables -t nat -L -n -v

مثال:

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0

۱۴. ایجاد جداول IP لینوکس برای رابط(های) PSC - fox

از نمونه رابط PSC، جداول IP لینوکس را پیکربندی کنید تا امکان ارتباط تولیدکننده با زیرشبکه‌های مصرف‌کننده فراهم شود.

نام سیستم عامل مهمان رابط Private Service Connect خود را پیدا کنید

برای پیکربندی مسیریابی، باید نام سیستم عامل مهمان رابط Private Service Connect خود را بدانید، که با نام رابط در Google Cloud متفاوت است.

یک تب جدید Cloud Shell باز کنید و تنظیمات پروژه خود را به‌روزرسانی کنید.

درون Cloud Shell، موارد زیر را انجام دهید:

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

با استفاده از IAP در Cloud Shell، وارد رابط psc ماشین مجازی فاکس شوید.

gcloud compute ssh fox --project=$projectid --zone=us-central1-a --tunnel-through-iap

در پوسته ابری، آدرس IP نمونه رابط psc را بدست آورید

ip a

مثال:

user@fox:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.3/32 brd 10.20.1.3 scope global dynamic ens4
       valid_lft 65601sec preferred_lft 65601sec
    inet6 fe80::4001:aff:fe14:103/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.3/32 brd 192.168.10.3 scope global dynamic ens5
       valid_lft 63910sec preferred_lft 63910sec
    inet6 fe80::4001:c0ff:fea8:a03/64 scope link 
       valid_lft forever preferred_lft forever

IP دروازه رابط PSC خود را پیدا کنید

در فهرست رابط‌های شبکه، نام رابطی را که با آدرس IP رابط Private Service Connect شما مرتبط است، پیدا کرده و ذخیره کنید - برای مثال، ens5 (vNIC1)

برای پیکربندی مسیریابی، باید آدرس IP دروازه پیش‌فرض رابط Private Service Connect خود را بدانید.

در cloud Shell از عدد ۱ استفاده خواهیم کرد زیرا رابط PSC با vNIC1 مرتبط است.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

مثال، gw پیش‌فرض 192.168.10.1 را تولید می‌کند.

user@fox:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

اضافه کردن مسیر برای زیرشبکه‌های مصرف‌کننده

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

اعتبارسنجی جدول مسیر

در Cloud Shell مسیرهای فعلی را اعتبارسنجی کنید.

ip route show

مثال.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

در Cloud Shell مسیر را به cosmo-subnet-1 اضافه کنید

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

اعتبارسنجی جدول مسیر

در Cloud Shell، مسیرهای اضافه شده‌ی به‌روزرسانی شده را اعتبارسنجی کنید.

ip route show

مثال.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5

ایجاد قوانین جداول IP

در Cloud Shell، جداول IP فعلی را اعتبارسنجی کنید.

sudo iptables -t nat -L -n -v

مثال:

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

در Cloud Shell جداول IP را به‌روزرسانی کنید.

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

در Cloud Shell، جداول IP به‌روزرسانی‌شده را اعتبارسنجی کنید.

sudo iptables -t nat -L -n -v

مثال:

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0  

۱۵. به‌روزرسانی جدول مسیر

در producer-vpc یک مسیر ایستا به زیرشبکه consumers با آدرس ۱۹۲.۱۶۸.۲۰.۰/۲۸ ایجاد کنید، گام بعدی را به عنوان load balancer داخلی انتخاب کنید. پس از ایجاد، هر بسته‌ای (در داخل producer-vpc) به مقصد ۱۹۲.۱۶۸.۲۰.۰/۲۸ به load balancer داخلی هدایت می‌شود.

یک تب جدید Cloud Shell باز کنید و تنظیمات پروژه خود را به‌روزرسانی کنید.

درون Cloud Shell، موارد زیر را انجام دهید:

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

در Cloud Shell، جدول مسیر producer-vpc را با یک مسیر ثابت به‌روزرسانی کنید.

gcloud beta compute routes create producer-to-cosmo-subnet-1 --project=$projectid --network=producer-vpc --priority=1000 --destination-range=192.168.20.0/28 --next-hop-ilb=psc-ilb --next-hop-ilb-region=us-central1

۱۶. اعتبارسنجی اتصال موفق از tiger به cosmo

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

بیایید با انجام یک curl تأیید کنیم که نمونه ماشین مجازی تولیدکننده، tiger، می‌تواند با نمونه مصرف‌کننده، cosmo، ارتباط برقرار کند.

یک تب جدید Cloud Shell باز کنید و تنظیمات پروژه خود را به‌روزرسانی کنید.

درون Cloud Shell، موارد زیر را انجام دهید:

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

با استفاده از IAP در Cloud Shell وارد نمونه Tiger شوید.

gcloud compute ssh tiger --project=$projectid --zone=us-central1-a --tunnel-through-iap

یک curl روی آدرس IP مربوط به cosmo که قبلاً در آموزش از نمونه‌ی tiger شناسایی شده است، انجام دهید.

curl -v <cosmo's IP Address>

مثال:

user@tiger:~$ curl -v 192.168.20.2
*   Trying 192.168.20.2:80...
* Connected to 192.168.20.2 (192.168.20.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.20.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 09 Jun 2023 03:49:42 GMT
< Server: Apache/2.4.56 (Debian)
< Last-Modified: Fri, 09 Jun 2023 03:28:37 GMT
< ETag: "27-5fda9f6ea060e"
< Accept-Ranges: bytes
< Content-Length: 39
< Content-Type: text/html
< 
Welcome to cosmo's backend server !!

تبریک!! شما با موفقیت اتصال از producer-vpc به backend-vpc را با اجرای دستور curl اعتبارسنجی کردید.

۱۷. تمیز کردن

از Cloud Shell، اجزای آموزشی را حذف کنید.

gcloud compute instances delete cosmo --zone=us-central1-a --quiet

gcloud compute instances delete rabbit --zone=us-central1-a --quiet

gcloud compute instances delete fox --zone=us-central1-a --quiet

gcloud compute instances delete tiger --zone=us-central1-a --quiet

gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet

gcloud compute firewall-rules delete allow-ingress-to-cosmo allow-tiger-ingress ilb-health-checks ssh-iap-consumer   ssh-iap-producer --quiet

gcloud beta compute routes delete producer-to-cosmo-subnet-1 --quiet 

gcloud compute forwarding-rules delete psc-ilb --region=us-central1 --quiet
gcloud compute backend-services delete psc-interface-backend --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-interface-instances-ig --zone=us-central1-a --quiet
gcloud compute health-checks delete hc-http-80 --quiet
gcloud compute networks subnets delete cosmo-subnet-1 prod-subnet prod-subnet-2 prod-subnet-3 intf-subnet --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat-producer --region=us-central1 --quiet

gcloud compute networks delete consumer-vpc --quiet

gcloud compute networks delete producer-vpc --quiet

gcloud compute networks delete backend-vpc --quiet

۱۸. تبریک

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

شما زیرساخت مصرف‌کننده را ایجاد کردید و یک پیوست شبکه اضافه کردید که به تولیدکننده اجازه می‌دهد یک ماشین مجازی چندکاره برای ایجاد پل ارتباطی بین مصرف‌کننده و تولیدکننده ایجاد کند. آموختید که چگونه می‌توان از رابط PSC برای ارتباط با سرویس‌های 1P/3P از طریق VPC peering با استفاده از یک متعادل‌کننده بار داخلی و یک مسیر ثابت در vpc تولیدکننده استفاده کرد.

کازموپاپ فکر می‌کند آموزش‌ها فوق‌العاده هستند!!

e6d3675ca7c6911f.jpeg

بعدش چی؟

به برخی از این آموزش‌ها نگاهی بیندازید...

مطالعه بیشتر و ویدیوها

اسناد مرجع