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.
Ş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.
Kendi hızınızda ortam kurulumu
- 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.
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.
- 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:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İ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. & "www-02" ve örnek başına bir SSH oturumu başlatın.
"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
- Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
- 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")
- Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar
- 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
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ışı:
- Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
- 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")
- Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar
- 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.
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
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. & "www-02" ve örnek başına bir oturum başlatın.
"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ı |
| ||
Sürüm, Protokol, Uzunluk |
| ||
Src IP'si |
|
| |
Dst IP |
|
| |
Src Bağlantı Noktası |
|
| |
Dst Bağlantı Noktası |
|
| |
TLV Türü (PP2_TYPE_GCP) |
| ||
TLV Uzunluğu |
| ||
pscConnectionId |
|
|
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
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
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