Hizmetleri yayınlamak ve kullanmak için Private Service Connect'i kullanma

1. Giriş

Private Service Connect, bir hizmet üreticisinin hizmet tüketicilerine özel olarak hizmet sunmasına olanak tanır. Private Service Connect aşağıdaki avantajları sunar:

  • Hizmet üreticisi VPC ağı, birden fazla hizmet tüketicisini destekleyebilir.
  • Her tüketici, tanımladığı dahili bir IP adresine bağlanır. Private Service Connect, isteği hizmet üreticisine yönlendirmek için ağ adresi çevirisi (NAT) gerçekleştirir.

45b90d50690dd111.png

Şekil 2. Private Service Connect, hizmet tüketicilerinin tüketicinin VPC ağından hizmet üreticisinin VPC ağındaki hizmetlere trafik göndermesini sağlamak için uç noktaları ve hizmet eklerini kullanır (büyütmek için tıklayın).

Neler öğreneceksiniz?

  • Private Service Connect avantajları
  • Hizmet tüketicileri için temel kavramlar
  • Hizmet üreticiler için temel kavramlar
  • Üretici ortamı oluşturma
  • Bir hizmet eki aracılığıyla hizmeti (üretici ortamı) kullanıma sunma
  • Tüketici ortamı oluşturma
  • Tüketici ağında iletim kuralı oluşturma
  • TCP tüketici erişimini doğrulayın
  • & ürününü etkinleştir proxy protokolünü doğrula
  • Politika erişim denetimini etkinleştir

Gerekenler

  • Dahili yük dengeleyiciler hakkında bilgi
  • İki projede VPC oluşturabilme

2. Private Service Connect avantajları

PSC ile, VPC Eşleme kullanmaya kıyasla çeşitli avantajlara sahip olursunuz:

Özel IP alanını daha iyi kontrol etme

  • Hizmet tüketicisi olarak, erişmek istediğiniz yönetilen hizmete bağlanmak için kullanılan özel IP adresini denetleyebilirsiniz.
  • Hizmet tüketicisi olarak VPC'nizde tüketilen arka uç hizmetleri için özel IP adresi aralıklarını ayırma konusunda endişelenmenize gerek yoktur. Üretici hizmetlerine bağlanmak için yalnızca kendi alt ağınızdan bir IP adresi seçmeniz gerekir.
  • Hizmet üreticisi olarak, VPC'nizin birden fazla tüketici VPC'sine hizmet veren hizmetler içerdiği çok kiracılı bir modeli dağıtmayı seçebilirsiniz. Alt ağ aralıklarının çakıştığı tüketiciler artık sorun yaşanmamaktadır.
  • Servis sağlayıcı olarak, daha fazla IP adresi için tüketicinizle iletişime geçmenize gerek kalmadan hizmetinizi gerektiği kadar sanal makine örneğine ölçeklendirebilirsiniz.

Daha fazla güvenlik ve yalıtım

  • Bir hizmet tüketicisi olarak hizmet üreticisiyle iletişimi yalnızca siz başlatabilirsiniz. Bu tek yönlü bağlantı, güvenlik duvarı yapılandırmasını büyük ölçüde basitleştirir ve hizmet üreticisinden gelen sahte trafik riskini de azaltır.
  • Hizmet üreticisi olarak, güvenlik duvarı kurallarınızı tüketicinin VPC'sindeki alt ağ aralıklarına göre değiştirmeniz gerekmez. Hizmetiniz için yapılandırılan NAT IP adresi aralığı için güvenlik duvarı kuralları oluşturabilirsiniz.

Daha iyi ölçeklenebilirlik

  • PSC, binlerce tüketiciyi destekleyerek yüksek düzeyde ölçeklenebilir tasarıma olanak tanır ve Hizmet Üreticilerin yüksek düzeyde ölçeklenebilir çok kiracılı veya tek kiracılı hizmetler sunmasına olanak tanır.
  • Özel hizmet bağlantısını kullanan bir hizmet tüketicisi olarak, VPC'nizde gereken şekilde kaynak oluşturabilirsiniz. Bunun ölçeği, üretici VPC'sinde oluşturulan bu tür kaynakların sayısından etkilenmez.

3. Hizmet tüketicileri için temel kavramlar

VPC ağınızın dışındaki hizmetleri kullanmak için Private Service Connect uç noktalarını kullanabilirsiniz. Hizmet tüketicileri, bir hedef hizmete bağlanan Private Service Connect uç noktaları oluşturur.

Uç noktalar

Bir hedef hizmete bağlanmak için Private Service Connect uç noktaları kullanılır. Uç noktaların VPC ağınızda dahili bir IP adresi vardır ve iletim kuralı kaynağını temel alırlar.

Uç noktaya trafik gönderirsiniz, bu da trafiği VPC ağınızın dışındaki hedeflere yönlendirir.

Hedefler

Private Service Connect uç noktalarının bağlanmak istediğiniz hizmet olan bir hedef vardır:

  • Bir API paketi:
  • Tüm API'ler: çoğu Google API'si
  • VPC-SC: VPC Hizmet Kontrolleri'nin desteklediği API'ler
  • Başka bir VPC ağında yayınlanan bir hizmet. Bu hizmet kendi kuruluşunuz veya üçüncü bir taraf tarafından yönetilebilir.

Yayınlanan hizmet

Uç noktanızı bir hizmet üreticisinin hizmetine bağlamak için hizmetin hizmet ekine ihtiyacınız vardır. Hizmet eki URI'si şu biçimdedir: projects/SERVICE_PROJECT/regions/REGION/serviceAttachs/SERVICE_NAME

4. Hizmet üreticiler için temel kavramlar

Bir hizmeti tüketicilerin kullanımına sunmak için tüketici IP adreslerinin ağ adresi çevirisinde (NAT) kullanılacak bir veya daha fazla özel alt ağ oluşturursunuz. Ardından, bu alt ağları ifade eden bir hizmet eki oluşturursunuz.

Private Service Connect alt ağları

Bir hizmeti kullanıma sunmak için hizmet üreticisi önce Private Service Connect amacına sahip bir veya daha fazla alt ağ oluşturur.

Tüketici VPC ağından istek gönderildiğinde, tüketicinin kaynak IP adresi kaynak NAT (SNAT) kullanılarak Private Service Connect alt ağlarının birinden seçilen bir IP adresine dönüştürülür.

Tüketici bağlantısı IP adresi bilgilerini saklamak istiyorsanız Tüketici bağlantısı bilgilerini görüntüleme başlıklı makaleyi inceleyin.

Bu alt ağlar, sanal makine örnekleri veya iletim kuralları gibi kaynaklar için kullanılamaz. Alt ağlar yalnızca gelen tüketici bağlantılarının SNAT'sine IP adreslerini sağlamak için kullanılır.

Private Service Connect alt ağı, her 63 tüketici sanal makinesi için en az bir IP adresi içermelidir. Bu sayede her tüketici sanal makinesine, ağ adresi çevirisi için 1.024 kaynak demet tahsis edilir.

Private Service Connect alt ağı için minimum boyut /24'tür.

Hizmet ekleri

Hizmet üreticiler, hizmetlerini bir hizmet eki aracılığıyla kullanıma sunar.

  • Bir hizmeti kullanıma sunmak için hizmet üreticisi, hizmetin yük dengeleyici iletim kuralına başvuruda bulunan bir hizmet eki oluşturur.
  • Hizmet tüketicileri, bir hizmete erişmek için hizmet ekini belirten bir uç nokta oluşturur.

Bağlantı tercihleri

Bir hizmet oluşturduğunuzda, nasıl kullanılabilir hale getireceğinizi siz seçersiniz. İki seçeneğiniz vardır:

  • Tüm projeler için bağlantıları otomatik olarak kabul edin. Tüm hizmet tüketicileri uç nokta yapılandırabilir ve hizmete otomatik olarak bağlanabilir.
  • Seçilen projeler için bağlantıları kabul edin: Hizmet tüketicileri, hizmete bağlanmak için bir uç nokta yapılandırır ve hizmet üreticisi bağlantı isteklerini kabul eder veya reddeder.

5. Test Ortamı

Tüketici ağı, hizmet üreticisine istek göndermek için kullanılan TCP statik IP adresinden ve üreticinin hizmet ekiyle (yayınlanan hizmet) eşlenen hedef hizmet ekinden oluşur.

Şimdi, yapımcı ağına bakalım. Üretici ağının tüketici ağına yönelik bir eşlemesine sahip olmadığına dikkat edin. Bunun yerine, üretici ağı, tüketici tarafından hizmetler için kullanılan bir hizmet eki (yayınlanan hizmet) içerir. Laboratuvarımızdaki üretici hizmet eki, TCP uygulamasını destekleyen bir arka uç hizmetine eşlenen 4. Katman Dahili Yük Dengeleyicidir (üretici-yönlendirme-kuralı).

NAT alt ağı ve ilişkili güvenlik duvarı kuralları, üretici uygulamasıyla iletişime izin verir.

28b09284a99eb60b.png

Kendi hızınızda ortam kurulumu

  1. Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID olarak adlandırılacaktır.

  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

GCP Console'da, sağ üstteki araç çubuğunda yer alan Cloud Shell simgesini tıklayın:

bce75f34b2c53987.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

f6ef2b5f13479f3a.png

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.

6. Başlamadan önce

Codelab, PSC için zorunlu olmasa da iki proje gerektirir. Bir veya daha fazla projeyi destekleyen referansları not edin.

Tek Proje: Üretici ve tüketici ağını desteklemek için projeyi güncelleme

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun

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

Birden çok proje - Üretici ağını desteklemek için projeyi güncelleyin

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun

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

7. Yapımcılar VPC ağı oluşturma

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

VPC Ağı

Cloud Shell'den

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

Alt Ağ Oluştur

Cloud Shell'den

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 örneği oluşturma

Cloud NAT, PSC için kullanılan NAT ile aynı değildir. Cloud NAT, uygulama paketlerini indirmek amacıyla internet erişimi için açıkça kullanılır.

Cloud Router oluşturma

Cloud Shell'den

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

Cloud NAT oluşturma

Cloud Shell'den

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

8. İşlem örnekleri oluşturma

Cloud Shell'den www-01 örneği oluşturun

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'den www-02 örneği oluşturun

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. Yönetilmeyen örnek grubu oluşturma

Şunları içeren yönetilmeyen bir örnek grubu oluşturun: www-01 & www-02

Cloud Shell'den

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 arka uç hizmetleri, iletim kuralı ve güvenlik duvarı

Cloud Shell'den arka uç hizmetini oluşturma

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'den iletim kuralını oluşturma

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

Arka uç durum denetimlerini etkinleştirmek için Cloud Shell'den güvenlik duvarı kuralı oluşturun

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'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'den

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 alt ağı oluştur

Cloud Shell'den

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 hizmet eki ve güvenlik duvarı kuralları oluşturma

Cloud Shell'den TCP hizmeti ekini oluşturun

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 hizmet ekini doğrulama

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

Cloud Shell'den, TCP NAT alt ağının ILB arka ucuna erişmesine izin veren güvenlik duvarı kuralını oluşturun

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. Tüketicilerin VPC ağı oluşturma

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Aşağıdaki bölümde tüketici VPC'si ayrı bir projede yapılandırılmıştır. Tüketici ve üretici ağı arasındaki iletişim, tüketici ağında tanımlanan hizmet eki aracılığıyla gerçekleşir.

VPC Ağı

Codelab, PSC için zorunlu olmasa da iki proje gerektirir. Bir veya daha fazla projeyi destekleyen referansları not edin.

Tek Proje: Üretici ve tüketici ağını desteklemek için projeyi güncelleme

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun

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

Birden çok proje - Tüketicilerin ağ kullanımını desteklemek için projeyi güncelleyin

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun

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

Cloud Shell'den

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

PSC için Alt Ağ oluşturma

Cloud Shell'den

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

TCP uygulamaları için statik IP adresi oluşturma

Cloud Shell'den

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

Güvenlik Duvarı Kuralları Oluşturma

IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'den

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 için gerekli olmamakla birlikte, üretici hizmet ekine giden tüketici PSC trafiğini izlemek için bir çıkış güvenlik duvarı kuralı oluşturun.

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 örneği oluşturma

Cloud NAT, PSC için kullanılan NAT ile aynı değildir. Cloud NAT, uygulama paketlerini indirmek amacıyla internet erişimi için açıkça kullanılır

Cloud Router oluşturma

Cloud Shell'den

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

Cloud NAT oluşturma

Cloud Shell'den

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

14. Test örneği sanal makinesi oluşturma

Cloud Shell'den

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 hizmet eki oluştur

Cloud Shell'den

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. Doğrulama

Bağlantı için CURL, TCPDUMP ve güvenlik duvarı günlüklerini kullanır.

Tüketici projesinde statik IP adresleri, Yapımcı ile iletişim kurmak için kullanılır. Statik IP adresinin Tüketici yönlendirme kuralıyla olan bu eşlemesi aşağıdaki söz dizimi uygulanarak doğrulanır.

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Tüketici VPC'lerinin Cloud kabuğundan TCP iletim kuralını ve statik IP'yi tanımlayın

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

Çıkış:

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 Doğrulaması

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Yapımcı Projesi'nde "www-01" ifadesini tanımlayın. &amp; "www-02" ve örnek başına bir SSH oturumu başlatın.

6d0bb8c5cb115876

"www-01"den NAT'yi izlemek için TCPDUMP uygula

sudo tcpdump -i any net 192.168.0.0/16 -n

"www-02"den NAT'yi izlemek için TCPDUMP uygula

sudo tcpdump -i any net 192.168.0.0/16 -n

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Tüketici Projesi'nde "test-instance-1"i tanımlayın ve iki oturum başlatacak.

"test-instance-1" örneğinden birinci oturumda tüketiciyi izlemek için TCPDUMP uygulayın

sudo tcpdump -i any host 10.0.60.100 -n

"test-instance-1" örneğinden ikinci oturum TCP doğrulaması gerçekleştir

curl -v 10.0.60.100 

18. Gözlemler - Tüketici

"test-instance-1" örneğinden oturumdaki CURL başarılı olur ve 200 OK döndürür.

@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" örneğinden birinci oturumda TCPDUMP, Sanal Makine Örneği → TCP Statik IP iletişimini ve yanıtını tanımlar

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

Güvenlik duvarı günlük kaydı

Günlük Gezgini'ni kullanarak "vpc-consumner-psc" güvenlik duvarı kuralını doğrulayın sanal makine örneği ile statik IP arasındaki akışı yakalıyor

  1. Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
  2. Query (Sorgu) alanında aşağıdaki girişi yourconsumerproject ile güncelleyin ve "Run Query"yi (Sorgu Çalıştır) seçin.

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

  1. Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar

b573c878a8d6d01f.png

  1. Günlüğü genişletin ve aşağıda sağlanan çıkışı belirleyin. dest_ip kısmına dikkat edin: 10.0.60.100 STATIC TCP IP'si, src_ip: 10.0.60.2 sanal makine örneği IP adresidir

1b4f46b3e61f6f12.png

19. Gözlemler - Yapımcı

"www-01" arka uç örneğinden veya "www-02" TCP NAT alt ağı ile TCP ILB arasında aşağıdaki iletişim gözlemlendi.

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. Güvenlik duvarı günlük kaydı

Günlük Gezgini'ni kullanarak "vpc-demo-allowpsc-tcp" güvenlik duvarı kuralını doğrulayın TCP NAT yakalıyor ve Aşağıdaki adımları uygulayarak TCP ILB akışı:

  1. Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
  2. Query (Sorgu) alanında aşağıdaki girişi yourprodproject ile güncelleyin ve "Run Query"yi (Sorgu Çalıştır) seçin.

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

  1. Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar

8ce6b0d17d76ad6d.png

  1. Günlüğü genişletin ve aşağıda sağlanan çıkışı belirleyin. TCP ILB hedef_ip'sini not edin: 10.0.2.10 ve NAT TCP kaynak_aralığı (192.168.0.0/24) & ilgili src_ip: 192.168.0.2.

e157a7af8cb667e.png

21. Proxy Protokolünü Etkinleştirme

Varsayılan olarak Private Service Connect tüketicinin kaynak IP adresini hizmet üreticisinin VPC ağındaki Private Service Connect alt ağlarından birindeki bir adrese çevirir. Bunun yerine tüketicinin orijinal kaynak IP adresini görmek istiyorsanız PROXY protokolünü etkinleştirebilirsiniz. PROXY protokolü etkinse tüketicinin kaynak IP adresini ve PSC bağlantı kimliğini PROXY protokol başlığından alabilirsiniz

e9d1c49971b10ed0.png

Belgelere referans

Yapımcılar tarafından yayınlanan hizmetleri silme

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Cloud Shell'den TCP hizmeti eklerini silin

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

Cloud Shell doğrulama hizmet ekleri silindi (Listelenen 0 öğe)

gcloud compute service-attachments list

Proxy protokolü etkin halde TCP hizmet eki oluştur

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

Cloud Shell'den, proxy protokolü etkinleştirilmiş olarak hizmet eklerinin oluşturulduğunu (doğru) doğrulayın

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

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Cloud Shell'den TCP iletim kurallarını silme

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

Önceden oluşturulmuş (üretici) hizmet ekiyle ilişkilendirilecek TCP iletim kurallarını yeniden oluşturun

Cloud Shell'den TCP iletim kuralı oluşturma

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

Proxy Protokolü Doğrulaması

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Yapımcı Projesi'nde "www-01" ifadesini tanımlayın. &amp; "www-02" ve örnek başına bir oturum başlatın.

6d0bb8c5cb115876

"www-01"den NAT'yi izlemek için TCPDUMP uygula

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

"www-02"den NAT'yi izlemek için TCPDUMP uygula

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Tüketici Projesi'nde "test-instance-1"i tanımlayın ve her yeni kullanıcı için

"test-instance-1" örneğinden curl gerçekleştirme oturumu

curl 10.0.60.100 

Gözlemler - Tüketici

PROXY Protocol v2 etkinse ancak uygulama bunu destekleyecek şekilde yapılandırılmamışsa aşağıdaki örneğe göre istemciden bağlantı kurulduğunda bir hata mesajı gösterilir. Ek proxy v2 üstbilgisini ve kod laboratuvarında ele alınmamıştır.

"test-instance-1" örneğinden oturum CURL'si, arka uç sorgusu başarılı olsa da beklenen 400 Hatalı istek üretir.

@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>

Gözlemler - Tüketici

"www-01" arka uç örneğinden veya "www-02" Yakalamaya yerleştirilmiş proxy protokolüyle TCP NAT alt ağı ile TCP ILB arasında aşağıdaki iletişim gözlemlenir.

Çoğu durumda, tcpdump'taki 3. paket, ilgili proxy protokolü bilgi öğelerini (IE) içerir. İsteğe bağlı olarak, IE proxy protokolünü içeren 39 baytlık paketleri tanımlayın.

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

Paket yakalamada PROXY Protokol İmzası'nı tanımlayın: 0d0a0d0a000d0a515549540a

PROXY Protokolü İmzası'nı tanımlayarak, imzanın dökümünü almak ve alanların kodunu aşağıdaki gibi çözmek mümkündür:

PROXY Protokol İmzası: 0d0a0d0a000d0a515549540a

Diğer PROXY Protokol Alanları: 21 11 00 17

IP'ler ve Bağlantı Noktaları: 0a003c02 0a003c64 8138 0050

TLV Türü: e0

TLV Uzunluğu: 00 08

pscConnection Kimliği: 009b34d70a003c64

Onaltılık

Ondalık / IP

PROXY Protokol İmzası

0d0a0d0a000d0a515549540a

Sürüm, Protokol, Uzunluk

21 11 0017

Src IP'si

0a003c02

10.0.60.2

Dst IP

0a003c64

10.0.60.100

Src Bağlantı Noktası

8138

33080

Dst Bağlantı Noktası

0050

80

TLV Türü (PP2_TYPE_GCP)

e0

TLV Uzunluğu

0008

pscConnectionId

00004dde290a003c64

43686719580552292

pscConnectionId değeri, tüketici iletim kuralı aşağıdaki gibi açıklanıp eşleştiğinden emin olarak da doğrulanabilir:

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Cloud Shell'den TCP iletim kurallarını açıklama

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

pscConnectionID'yi açıklayan çıkış

$ 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. Bağlantı Politikası

Yayınlanan bir hizmet için açık ve otomatik proje kabul seçenekleri arasında geçiş yapabilirsiniz.

Otomatik kabulden açık kabule geçmek, bu değişiklikten önce hizmete bağlanan tüketici uç noktalarını etkilemez. Mevcut tüketici uç noktaları, hizmet eki silinene kadar yayınlanan hizmete bağlanabilir. Yeni tüketici uç noktalarının hizmete bağlanabilmesi için kabul edilmesi gerekir. Daha fazla bilgi için Yayınlanan bir hizmete erişim isteklerini yönetme sayfasına göz atın.

Laboratuvarın bu bölümünde, üreticinin bağlantı politikasını, tüketicinin hizmet ekini açıkça onaylayacak şekilde değiştireceksiniz.

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Üretici hizmetinden Cloud Shell'deki bağlantı tercih etme politikasını "Otomatik olarak kabul et" yerine manuel olarak kabul et olarak güncelleyin.

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

Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler → vpc-demo-psc-west2-tcp → Bağlı Projeler'e giderek uç nokta durumunu tanımlayın

e1d90d1563e10731.png

Bildirim, Tüketici projesi "Beklemede" olarak değiştirildi durumunu görebilirsiniz.

Cloud Shell'de aşağıdaki komutu çalıştırarak tüketici projesini kabul edin ve uygun proje adıyla güncellediğinizden emin olun.

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

Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler → vpc-demo-psc-west2-tcp → Bağlı Projeler'e giderek uç nokta durumunu tanımlayın

35cba9ac640594a2.png

Bildirim, Tüketici projesi "Kabul edildi" olarak değiştirildi durumunu görebilirsiniz.

23. Temizleme adımları

Üretici ağı temizleme adımları

Not: Aşağıdaki bölümde, Yapımcı Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Producer proje terminalindeki tek bir Cloud Shell'den laboratuvar bileşenlerini silin.

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

Not: Aşağıdaki bölümde, Tüketici Hizmetinizi içeren projede yapılandırma güncellemelerini yürütün

Tüketici ağı temizleme adımları

Producer proje terminalindeki tek bir Cloud Shell'den laboratuvar bileşenlerini silin.

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. Tebrikler!

Codelab'i tamamladığınız için tebrikler.

İşlediklerimiz

  • Private Service Connect avantajları
  • Hizmet tüketicileri için temel kavramlar
  • Hizmet üreticiler için temel kavramlar
  • Üretici ortamı oluşturma
  • Bir hizmet eki aracılığıyla hizmeti (üretici ortamı) kullanıma sunma
  • Tüketici ortamı oluşturma
  • Tüketici ağında iletim kuralı oluşturma
  • TCP tüketici erişimini doğrulayın
  • & ürününü etkinleştir proxy protokolünü doğrula
  • Politika erişim denetimini etkinleştir