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

آنچه یاد خواهید گرفت
- نحوه ایجاد پیوست شبکه
- چگونه یک تولیدکننده میتواند از یک اتصال شبکه برای ایجاد رابط PSC به عنوان backend استفاده کند
- نحوه برقراری ارتباط از تولیدکننده به مصرفکننده با استفاده از ILB به عنوان گام بعدی
- چگونه میتوان از طریق VPC peering دسترسی از ماشین مجازی تولیدکننده (tiger) به ماشین مجازی مصرفکننده (cosmo) را فراهم کرد؟
آنچه نیاز دارید
- پروژه ابری گوگل
- مجوزهای IAM
- مدیر شبکه محاسباتی (roles/compute.networkAdmin)
- مدیر نمونه محاسباتی (roles/compute.instanceAdmin)
- مدیر امنیت محاسبات (roles/compute.securityAdmin)
۲. قبل از شروع
پروژه را برای پشتیبانی از آموزش بهروزرسانی کنید
این آموزش از متغیرها (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 تولیدکننده استفاده کرد.
کازموپاپ فکر میکند آموزشها فوقالعاده هستند!!

بعدش چی؟
به برخی از این آموزشها نگاهی بیندازید...
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها با GKE
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها
- با استفاده از Private Service Connect و یک متعادلکننده بار داخلی TCP Proxy، از طریق شبکه ترکیبی به سرویسهای On-Premium متصل شوید.