1. Genel Bakış
Cloud NAT güçlü bir araçtır. Bu araç sayesinde Compute Engine ve Google Kubernetes Engine (GKE) iş yükleri, üzerinde çalışan iş yüklerini harici IP'ler kullanarak dışarıdan erişime maruz bırakmadan internet kaynaklarına ölçeklenebilir ve güvenli bir şekilde erişebilir.
Cloud NAT, proxy'siz bir tasarıma sahiptir ve NAT'yi doğrudan Andromeda SDN katmanında uygular. Böylece iş yükünüzü etkilemez ve çok sayıda sanal makine, bölge ve VPC'ye kolayca ölçeklenir.
NAT kuralları, Cloud NAT'nin uzantısıdır. Cloud NAT'deki NAT Kuralları özelliği, internete bağlanmak için Cloud NAT'nin nasıl kullanılacağını tanımlayan erişim kuralları oluşturmanızı sağlar. NAT kuralları şu anda hedef adrese göre kaynak NAT adresi seçimini desteklemektedir.
NAT kuralları olmadan, Cloud NAT'nin etkin olduğu bir sanal makine tüm internet adreslerine erişmek için aynı NAT IP adresi grubunu kullanır.
NAT kullanım alanında, bazen Cloud NAT'nin belirli hedefler için farklı kaynak IP adresleri kullanması gerekir. NAT kuralı, bir eşleşmeyi ve karşılık gelen işlemi tanımlar. NAT kurallarını belirttiğinizde paket her NAT kuralıyla eşleştirilir. Bir kural eşleşirse söz konusu eşleşmeye karşılık gelen işlem gerçekleşir.
Daha fazla bilgi için lütfen NAT Kuralları hakkındaki belgeler bölümünü inceleyin.
Neler öğreneceksiniz?
- NAT Kuralları hazırlığı için Cloud NAT ağ geçidi ayarlama.
- Common Expression Language (CEL) kullanarak NAT kuralları tasarlama.
- NAT kuralları oluşturma ve bunları bir NAT ağ geçidine ekleme.
- Bir örnekten NAT Kuralları'nı test etme.
- NAT Ağ Geçidi kuralları nasıl güncellenir?
- NAT kurallarını silme ve varsayılan Cloud NAT davranışına geri dönme
Gerekenler
- Google Compute Engine ile ilgili temel bilgiler
- Temel ağ iletişimi ve TCP/IP bilgisi
- Temel Unix/Linux komut satırı bilgisi
- Networking in Google Cloud (Google Cloud'da Ağ İletişimi) laboratuvarı gibi GCP'de ağ iletişimi turunu tamamlamış olmanız faydalı olacaktır.
- Cloud NAT temellerini anlama
2. Google Cloud Console ve Cloud Shell'i kullanma
GCP ile etkileşime geçmek için bu laboratuvar boyunca hem Google Cloud Console hem de Cloud Shell'i kullanacağız.
Google Cloud Console
Cloud Console'a https://console.cloud.google.com adresinden erişilebilir.
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.
- Proje Adı, bu proje için kişisel tanımlayıcınızdır. Adlandırma kurallarına uyduğunuz sürece istediğiniz her şeyi kullanabilir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (bir kez ayarlandıktan sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle
PROJECT_ID
olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" bazı önemli belgeler vardı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.
3. Laboratuvar Kurulumu
Bu laboratuvar için bir Proje kullanacak ve her birinde alt ağ bulunan iki VPC oluşturacaksınız. Harici IP adreslerini ayıracak, ardından iki üretici örneği ve bir tüketici örneği olacak şekilde bir Cloud NAT ağ geçidi (Cloud Yönlendiricisi ile) oluşturup yapılandıracaksınız. Varsayılan Cloud NAT davranışını doğruladıktan sonra Cloud NAT özel kuralları oluşturacak ve bu kuralları doğrulayacaksınız.
Ağ iletişimi mimarisine genel bakış:
4. Harici IP Adreslerini Ayırt
Tüm harici IP adreslerini bu laboratuvarda kullanılacak şekilde ayıralım. Bu, hem tüketici hem de üretici VPC'sinde ilgili tüm NAT ve güvenlik duvarı kurallarını yazmanıza yardımcı olur.
Cloud Shell'den:
gcloud compute addresses create nat-address-1 nat-address-2 nat-address-3 producer-address-1 producer-address-2 --region us-east4
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
Ortam değişkeni olarak ayrılmış IP adreslerini doldurun.
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export natip3=`gcloud compute addresses list --filter name:nat-address-3 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
Herhangi bir çıkış beklenmiyor ancak adreslerin doğru şekilde doldurulduğundan emin olmak gerekiyor. Tüm ortam değişkenlerinin değerlerinin çıktısını oluşturalım.
$ env | egrep '^(nat|producer)ip[1-3]'
Çıkış:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2> natip3=<NAT IP 3>
5. Üretici VPC'si ve Örnek Kurulumu.
Şimdi, yapımcı kaynakları için kaynaklar oluşturacağız. Üretici VPC'sinde çalışan örnekler, internete yönelik hizmeti iki genel IP "üretici-adresi-1" kullanarak sunar. ve "Generative-address-2" ,
Önce VPC'yi oluşturalım. Cloud Shell'den:
gcloud compute networks create producer-vpc --subnet-mode custom
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Sonra, us-east4 bölgesinde alt ağı oluşturalım. Cloud Shell'den:
gcloud compute networks subnets create producer-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/producer-e4]. NAME REGION NETWORK RANGE producer-e4 us-east4 producer-vpc 10.0.0.0/24
Şimdi, NAT IP adreslerinin 8080 bağlantı noktası üzerindeki üretici örneklerine ulaşmasına izin vermek için VPC güvenlik duvarı kuralları oluşturalım.
Cloud Shell'den ilk kural için:
gcloud compute firewall-rules create producer-allow-8080 \ --network producer-vpc --allow tcp:8080 \ --source-ranges $natip1,$natip2,$natip3
Çıkış:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/producer-allow-8080]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-8080 producer-vpc INGRESS 1000 tcp:8080 False
Sonraki adım, iki üretici örneğini oluşturmaktır.
Üretici örnekleri, Docker Hub'da bulunan bir Docker container'ında IP yankı hizmetini çalıştırır (kaynak kod, hizmetin yazarının GitHub deposunda bulunur.
Örnekleri gerekli tüm yazılımlarla hızla sağlamak için Compute Engine'de Container dağıtımı özelliğini kullanacağız.
NAT kuralları yazabilmek için her bir örneğin farklı bir ayrılmış IP adresi sağlanır.
İlk örneği oluşturun. Cloud Shell'den:
gcloud compute instances create-with-container producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <producer IP 1> RUNNING
Ardından ikinci örneği oluşturun. Cloud Shell'den:
gcloud compute instances create-with-container producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <producer IP 2> RUNNING
6. Tüketici VPC'si, Cloud NAT ve Örnek Oluşturma
Üretici hizmetini oluşturduğunuza göre şimdi sıra tüketici VPC'sini ve Cloud NAT ağ geçidini oluşturmaya geldi.
VPC'yi ve alt ağı oluşturduktan sonra, TCP kaynak IP aralıkları için IAP'ye izin vermek amacıyla basit bir giriş güvenlik duvarı kuralı ekleyeceğiz. Bu sayede gcloud'u kullanarak doğrudan tüketici örneklerine SSH uygulayabiliyoruz.
Ardından, manuel ayırma modunda basit bir Cloud NAT ağ geçidi ve ayrılmış "nat-address-1" adresini oluşturacağız görüntülenebilir. Codelab'in sonraki bölümlerinde özel kurallar eklemek için ağ geçidinin yapılandırmasını güncelleyeceğiz. .
Önce VPC'yi oluşturalım. Cloud Shell'den:
gcloud compute networks create consumer-vpc --subnet-mode custom
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Sonra, us-east4 bölgesinde bir alt ağ oluşturalım. Cloud Shell'den:
gcloud compute networks subnets create consumer-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/consumer-e4]. NAME REGION NETWORK RANGE consumer-e4 us-east4 consumer-vpc 10.0.0.0/24
Şimdi, IAP aralık adreslerinin 22 numaralı bağlantı noktasındaki tüketici örneklerine ulaşmasına izin vermek için VPC güvenlik duvarı kuralları oluşturalım.
İlk güvenlik duvarı kuralı için Cloud Shell'den aşağıdaki komutu çalıştırın:
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
Çıkış:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
NAT ağ geçidi oluşturmadan önce, önce bir Cloud Router örneği oluşturmamız gerekir (özel bir ASN numarası kullanırız ancak bu numara bu laboratuvarın etkinlikleriyle ilgili değildir). Cloud Shell'den:
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
Çıkış:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
Ardından NAT ağ geçidi örneğini oluşturun. Cloud Shell'den:
gcloud compute routers nats create consumer-nat-gw \ --router=consumer-cr \ --router-region=us-east4 \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=nat-address-1
Çıkış:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
Tüketici testi örneğini oluşturun. Daha sonra örnek içinde referans verebilmek için ayrılmış üretici IP'lerini burada doldururuz. Cloud Shell'den:
gcloud compute instances create consumer-instance --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=consumer-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
Çıkış:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/consumer-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance us-east4-a e2-medium 10.0.0.2 RUNNING
7. Varsayılan Cloud NAT davranışını doğrulama
Bu noktada, tüketici örneği aynı ayrılmış IP'yi "nat-address-1" ile kullanan varsayılan Cloud NAT davranışını kullanır harici adreslerle iletişim kurmanızı sağlar.
Cloud NAT'deki yeni NAT Kuralları özelliğini kullanmadan önce bu davranışı doğrulayalım.
Tüketici örneğine SSH uygulayın. Cloud Shell'den:
gcloud compute ssh consumer-instance --zone=us-east4-a
Şimdi örnek kabuğunda olmalısınız.
Örnek Çıkış (tam çıkış kısa olması için kısaltıldı)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Tüketici örneğinden önce her iki üretici IP'sini de alıp ortam değişkenleri olarak dolduralım.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Ardından, her iki üretici örneğine kıvrılmayı deneyin ve döndürülen kaynak IP adresini gözlemleyin.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.136.8.83
Her iki uç nokta için de aynı IP adresini görmeniz gerekir. Bu, harici ayrılmış IP'nin "nat-address-1" değerine eşittir.
Benzer şekilde, herhangi bir harici IP yansıtıcı hizmetinin curl işlemi aynı IP'yi göstermelidir. Örneğin:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Örneğin SSH oturumundan şimdilik çıkış yapın. NAT Kurallarını yapılandırdıktan sonra SSH üzerinden tekrar bağlanacağız.
8. Cloud NAT Kuralları Oluşturma
NAT kuralları, Common Expression Language söz dizimi kullanılarak yazılır. Kural ifadesi dili hakkında daha fazla bilgi için Kural ifadesi dili bölümüne bakın.
Mevcut bir NAT ağ geçidine gcloud komutlarını kullanarak da NAT kuralı ekleyebilirsiniz. Cloud NAT kuralları oluşturmak için her iki seçeneği de inceleyeceğiz.
Öncelikle bir NAT kuralı YAML dosyası oluşturalım.
Cloud Shell'den:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 EOF
Ardından, bu kural dosyasını kullanarak mevcut NAT ağ geçidimizi güncelleyelim. Cloud Shell'den:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Aşağıdaki çıktıyı almanız gerekir :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Kuralın başarıyla yapılandırıldığını doğrulayın. Cloud Shell'den:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
Aşağıdaki çıktıyı almanız gerekir :
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
Şimdi aynı kuralı yalnızca gcloud komutlarını kullanarak yeniden oluşturmayı deneyelim. Önce mevcut kuralı silin. Cloud Shell'den:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Ardından bu gcloud komutunu kullanarak kuralı yeniden oluşturun. Cloud Shell'den:
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Aşağıdaki çıktıyı almanız gerekir :
Creating Rule [100] in NAT [consumer-nat-gw]...done.
Kuralın başarıyla oluşturulduğunu doğrulamak için önceki komutu tekrarlayın. Bu kez, kuralın tüm ayrıntılarını görmek için YAML biçimlendirme anahtarını ekleyeceğiz.
Cloud Shell'den:
gcloud alpha compute routers nats rules list\ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Aşağıdaki çıktıyı almanız gerekir :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2 match: destination.ip == <actual IP for producer-IP 2> ruleNumber: 100
Son olarak, hem "nat-address1"in ve "nat-address-2" harici adresler "IN_USE" olarak görünür. Bu işlemi görmek için Cloud Shell'den şu komutu çalıştırın:
$ gcloud compute addresses list
Aşağıdaki çıkışı beklemeniz gerekir (Gerçek IP adresleri, ayırdığınız adreslerle eşleşmelidir) :
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS nat-address-1 34.136.8.83 EXTERNAL us-east4 IN_USE nat-address-2 34.70.137.35 EXTERNAL us-east4 IN_USE nat-address-3 34.135.103.88 EXTERNAL us-east4 RESERVED producer-address-1 34.66.0.105 EXTERNAL us-east4 IN_USE producer-address-2 35.192.142.134 EXTERNAL us-east4 IN_USE
9. Cloud NAT Kuralları davranışını doğrulama
Bu noktada, tüketici örneği, generative-address-2 ile iletişim kurmak için nat-address-2'yi kullanmak için, oluşturulan Cloud NAT Kuralını kullanmalıdır.
Bu davranışı doğrulayalım. Tüketici örneğine SSH uygulayın. Cloud Shell'den:
gcloud compute ssh consumer-instance --zone=us-east4-a
Şimdi örnek kabuğunda olmalısınız.
Örnek Çıkış (tam çıkış kısa olması için kısaltıldı)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Tüketici örneğinden önce her iki üretici IP'sini de alıp ortam değişkenleri olarak dolduralım.
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Ardından, her iki üretici örneğine kıvrılmayı deneyin ve döndürülen kaynak IP adresini gözlemleyin.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.70.137.35
Artık her iki uç nokta için de farklı bir IP adresi döndürüldüğünü göreceksiniz. İlk IP adresi, varsayılan davranışla aynı olmalıdır. İkinci IP adresi "nat-address-2"ye eşit olmalıdır eklenir.
Herhangi bir harici IP yansıtıcı hizmetinin curl değeri, yine varsayılan davranış olarak aynı IP'yi göstermelidir. Örneğin:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Örneğin SSH oturumundan şimdilik çıkış yapın, adres boşaltmayı test etmek için SSH'ye geri döneceğiz.
10. & ürününü güncelle Cloud NAT Kurallarını Silme
Mevcut Cloud NAT kurallarını güncelleyebilirsiniz. Örneğin, yeni IP adreslerini ilişkilendirebilir ve mevcut kurallarla ilişkilendirilmiş mevcut IP adreslerini boşaltabilirsiniz.
NAT Kuralları dosyasını aşağıdaki gibi güncelleyelim
Cloud Shell'den:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatDrainIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-3 EOF
Bu yeni dosya artık "nat-address-2"yi yerleştiriyor boş bir durumda. Ve "nat-address-3" ifadesini ekleyin etkin durumda olmalıdır. Bu, nat-address-2 kullanan mevcut bağlantıların sorunsuz bir şekilde sonlandırılmasına olanak tanırken, yalnızca nat-address-3 kullanarak yeni bağlantılar oluşturulmasına izin vermelidir.
Ardından, bu kural dosyasını kullanarak mevcut NAT ağ geçidimizi güncelleyelim. Cloud Shell'den:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Aşağıdaki çıktıyı almanız gerekir :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Kuralın başarıyla yapılandırıldığını doğrulayın. Cloud Shell'den:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Aşağıdaki çıktıyı almanız gerekir :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3 sourceNatDrainIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2 match: destination.ip == '35.192.142.134' ruleNumber: 100
"nat-address-2"nin nasıl kullanıldığına dikkat edin boş duruma getirilmiştir. Tüketici VPC'sinden gelen yeni bağlantıların artık doğru NAT IP'lerini kullandığını doğrulamak için bu konuyu size bırakıyoruz.
Son olarak, NAT kurallarını Cloud NAT ağ geçidinizden silip varsayılan davranışa geri dönün. Aşağıdaki gcloud komutunu kullanabilirsiniz. Cloud Shell'den:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Başka NAT kuralı olmadığını doğrulamak için NAT ağ geçidi açıklama komutunu kullanalım.
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Aşağıdaki çıktıyı almanız gerekir :
enableEndpointIndependentMapping: false name: consumer-nat-gw natIpAllocateOption: MANUAL_ONLY natIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1 sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
Bir "kuralların" nasıl olmadığına dikkat edin: bölümünde olması gerekir. Yapılandırılmış NAT kuralı belirtilmemiş.
11. Temizleme Adımları
Yinelenen ödemelerden kaçınmak için bu codelab ile ilişkili tüm kaynakları silmeniz gerekir.
Önce tüm örnekleri silin.
Cloud Shell'den:
gcloud compute instances delete consumer-instance \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
Beklenen çıkış :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
Ardından, Cloud Yönlendirici'yi silin. Cloud Shell'den:
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
Tüm harici IP adreslerini serbest bırakın. Cloud Shell'den:
gcloud compute addresses delete nat-address-1 \ nat-address-2 nat-address-3 producer-address-1 \ producer-address-2 --region us-east4 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
VPC güvenlik duvarı kurallarını silin. Cloud Shell'den:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-8080].
Alt ağları silin. Cloud Shell'den:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
Aşağıdaki çıktıyı almanız gerekir :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-e4].
Son olarak VPC'leri silelim. Cloud Shell'den:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
Aşağıdaki çıktıyı almanız gerekir :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
12. Tebrikler!
Cloud NAT Rules Lab'i tamamladınız.
İşlediğiniz konular
- NAT Kuralları hazırlığı için Cloud NAT ağ geçidi ayarlama.
- Common Expression Language (CEL) kullanarak NAT kuralları tasarlama.
- NAT kuralları oluşturma ve bunları bir NAT ağ geçidine ekleme.
- Bir örnekten NAT Kuralları'nı test etme.
- NAT Ağ Geçidi kuralları nasıl güncellenir?
- NAT kurallarını silme ve varsayılan Cloud NAT davranışına geri dönme
Sonraki Adımlar
- Bu örnekteki gibi daha karmaşık NAT Kuralları oluşturmayı deneyin.
- NAT IP adreslerini boşaltan IP adreslerini keşfedin ve bağlantı üzerindeki etkiyi gözlemleyin.
- Google Cloud Platform'da Ağ İletişimi hakkında daha fazla bilgi
©Google, Inc. veya satış ortakları. Tüm hakları saklıdır. Bu içeriği dağıtmayın.