Cloud NAT डाइनैमिक पोर्ट ऐलोकेशन का इस्तेमाल करना

1. खास जानकारी

डाइनैमिक पोर्ट ऐलोकेशन (डीपीए), Cloud NAT में एक नई सुविधा है. डीपीए की सुविधा चालू होने पर Cloud NAT, ज़रूरत के हिसाब से इंस्टेंस के लिए पोर्ट ऐलोकेशन को डाइनैमिक तौर पर घटाता-बढ़ाता है. डीपीए को पोर्ट करने की कम से कम और ज़्यादा से ज़्यादा सीमाओं के साथ कॉन्फ़िगर किया जाता है, ताकि यह पोर्ट को कभी भी सबसे कम संख्या से कम या उससे ज़्यादा न बढ़ा सके. इसकी मदद से, NAT गेटवे के पीछे मौजूद कुछ इंस्टेंस, डाइनैमिक तरीके से अपने कनेक्शन की संख्या को बढ़ा पाते हैं. इसके लिए, Cloud NAT के लिए सभी इंस्टेंस के लिए ज़्यादा पोर्ट तय करने की ज़रूरत नहीं होती.

डीपीए के बिना, Cloud NAT के लिए बने सभी इंस्टेंस को समान संख्या में पोर्ट असाइन किए जाते हैं, भले ही उनका इस्तेमाल किसी भी तरह से किया गया हो. ऐसा minPortsPerVm पैरामीटर के मुताबिक किया जाता है.

ज़्यादा जानकारी के लिए, कृपया एनएटी डीपीए के बारे में दस्तावेज़ वाला सेक्शन देखें.

आपको इनके बारे में जानकारी मिलेगी

  • डीपीए की तैयारी करने के लिए Cloud NAT गेटवे सेट अप करने का तरीका.
  • डीपीए के बिना पोर्ट ऐलोकेशन की जांच करने का तरीका.
  • एनएटी गेटवे के लिए डीपीए को चालू और कॉन्फ़िगर करने का तरीका.
  • पैरलल इग्रेस कनेक्शन चलाकर डीपीए के असर का पता लगाने का तरीका.
  • डीपीए की सुविधा वाले NAT गेटवे में, NAT के नियम जोड़ने का तरीका.
  • एक से ज़्यादा डेस्टिनेशन के लिए इग्रेस डेटा ट्रैफ़िक चलाकर, नियमों के साथ डीपीए के व्यवहार को देखने का तरीका.

आपको इनकी ज़रूरत होगी

  • Google Compute Engine की बुनियादी जानकारी
  • बुनियादी नेटवर्किंग और टीसीपी/आईपी की जानकारी
  • Unix/Linux कमांड लाइन के बारे में बुनियादी जानकारी
  • Google Cloud में नेटवर्किंग के टूर, जैसे कि Google Cloud में नेटवर्किंग लैब के टूर को पूरा करने से हमें मदद मिलती है.
  • 'ऐल्फ़ा ऐक्सेस' वाला Google Cloud प्रोजेक्ट चालू किया गया.
  • Cloud NAT की बुनियादी बातों को समझना.

2. Google Cloud Console और Cloud Shell का इस्तेमाल करना

GCP के साथ इंटरैक्ट करने के लिए, हम इस पूरी लैब में Google Cloud Console और Cloud Shell, दोनों का इस्तेमाल करेंगे.

Google Cloud कंसोल

Cloud Console पर जाने के लिए, https://console.cloud.google.com पर जाएं.

75eef5f6fd6d7e41.png

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान PROJECT_ID के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद.
  • तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस लैब में आपका सारा काम बस एक ब्राउज़र से किया जा सकता है.

3. लैब का सेटअप

इस लैब के लिए, आपको एक प्रोजेक्ट का इस्तेमाल करना होगा और हर एक में सबनेट के साथ दो VPC बनाने होंगे. आपको बाहरी आईपी पते को सुरक्षित रखना होगा. इसके बाद, Cloud NAT गेटवे (Cloud राऊटर के साथ) और दो प्रोड्यूसर इंस्टेंस बनाकर उन्हें कॉन्फ़िगर करना होगा. Cloud NAT के डिफ़ॉल्ट तरीके की पुष्टि करने के बाद, डाइनैमिक पोर्ट ऐलोकेशन को चालू किया जा सकेगा और इसके काम करने के तरीके की पुष्टि की जा सकेगी. आखिर में, आपको एनएटी के नियमों को कॉन्फ़िगर करना होगा और डीपीए और एनएटी के नियमों के बीच इंटरैक्शन पर नज़र रखनी होगी.

नेटवर्किंग आर्किटेक्चर की खास जानकारी:

a21caa6c333909d8.png

4. बाहरी आईपी पते रिज़र्व करें

आइए इस लैब में उपयोग किए जाने वाले सभी बाहरी IP पतों को सुरक्षित रखें. इससे आपको उपभोक्ता और निर्माता दोनों के VPC में, NAT और फ़ायरवॉल के ज़रूरी नियम लिखने में मदद मिलेगी.

Cloud Shell से:

gcloud compute addresses  create nat-address-1 nat-address-2 \
 producer-address-1 producer-address-2 --region us-east4

आउटपुट:

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/producer-address-1].
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].

एनवायरमेंट वैरिएबल के तौर पर रिज़र्व किए गए आईपी पतों को भरें.

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 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)"`

किसी भी आउटपुट की उम्मीद नहीं है, लेकिन इससे यह पुष्टि होती है कि पतों को सही तरीके से भरा गया है. आइए, सभी एनवायरमेंट वैरिएबल की वैल्यू का आउटपुट देते हैं.

env | egrep '^(nat|producer)ip[1-3]'

आउटपुट:

producerip1=<Actual Producer IP 1>
producerip2=<Actual Producer IP 2>
natip1=<NAT IP 1>
natip2=<NAT IP 2>

5. प्रोड्यूसर के VPC और इंस्टेंस का सेटअप.

अब हम प्रोड्यूसर के लिए संसाधन बनाएंगे. प्रोड्यूसर VPC में चल रहे इंस्टेंस, दो सार्वजनिक आईपी "प्रोड्यूसर-पता-1" का इस्तेमाल करके इंटरनेट पर सेवा देने वाली सेवा देंगे और "प्रोड्यूसर का पता-2" को अपनाएं.

आइए, सबसे पहले VPC बनाते हैं. Cloud Shell से:

gcloud compute networks create producer-vpc --subnet-mode custom

आउटपुट:

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

इसके बाद, us-east4 में सबनेट बनाते हैं. Cloud Shell से:

gcloud compute networks subnets create prod-net-e4 \
   --network producer-vpc --range 10.0.0.0/24 --region us-east4

आउटपुट:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].
NAME         REGION    NETWORK       RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  IPV6_CIDR_RANGE  EXTERNAL_IPV6_CIDR_RANGE
prod-net-e4  us-east4  producer-vpc  10.0.0.0/24  IPV4_ONLY

अब, NAT आईपी पतों को पोर्ट 8080 पर प्रोड्यूसर के इंस्टेंस तक पहुंचने की अनुमति देने के लिए, VPC फ़ायरवॉल के नियम बनाते हैं.

पहले नियम के लिए, Cloud Shell से:

gcloud compute firewall-rules create producer-allow-80 \
  --network producer-vpc --allow tcp:80 \
  --source-ranges $natip1,$natip2

आउटपुट:

Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80].
Creating firewall...done.
NAME                 NETWORK       DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
producer-allow-80    producer-vpc  INGRESS    1000      tcp:80          False

अगला चरण दो प्रोड्यूसर इंस्टेंस बनाना है.

प्रोड्यूसर इंस्टेंस, आसान nginx प्रॉक्सी डिप्लॉयमेंट को चलाएंगे.

सभी ज़रूरी सॉफ़्टवेयर के लिए, इंस्टेंस का प्रावधान तुरंत करने के लिए, हम एक स्टार्ट-अप स्क्रिप्ट के साथ इंस्टेंस बनाएंगे. यह स्क्रिप्ट, Debian APT पैकेज मैनेजर का इस्तेमाल करके, nginx को इंस्टॉल करेगी.

NAT नियम लिखने में सक्षम होने के लिए, हम हर इंस्टेंस को एक अलग आरक्षित आईपी पते के साथ प्रावधान करेंगे.

पहला इंस्टेंस बनाएं. Cloud Shell से:

gcloud compute instances create producer-instance-1 \
--zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=prod-net-e4 \
--metadata startup-script="#! /bin/bash
sudo apt update
sudo apt install -y nginx
mkdir /var/www/html/nginx/
cat <<EOF > /var/www/html/nginx/index.html
<html><body><h1>This is producer instance 1</h1>
</body></html>
EOF"

आउटपुट:

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 IP1>  RUNNING

इसके बाद, दूसरा इंस्टेंस बनाएं. Cloud Shell से:

gcloud compute instances create producer-instance-2 \
--zone=us-east4-a --machine-type=e2-medium \
--network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=prod-net-e4 \
--metadata startup-script="#! /bin/bash
sudo apt update
sudo apt install -y nginx
mkdir /var/www/html/nginx/
cat <<EOF > /var/www/html/nginx/index.html
<html><body><h1>This is producer instance 2</h1>
</body></html>
EOF"

आउटपुट:

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 IP2>  RUNNING

6. कंज़्यूमर VPC, Cloud NAT, और इंस्टेंस सेटअप करें

आपने प्रोड्यूसर सेवा बना ली है, इसलिए अब उपभोक्ता VPC और इसका Cloud NAT गेटवे बनाएं.

VPC और सबनेट बनाने के बाद, हम आसान इन्ग्रेस फ़ायरवॉल के नियम जोड़ेंगे, ताकि आईएपी को टीसीपी सोर्स की आईपी रेंज के लिए अनुमति दी जा सके. इससे हम, gcloud का इस्तेमाल करके सीधे तौर पर ग्राहकों के लिए एसएसएच का इस्तेमाल कर पाएंगे.

इसके बाद, हम मैन्युअल ऐलोकेशन मोड और रिज़र्व किए गए पते "nat-address-1" में एक आसान Cloud NAT गेटवे बनाएंगे से जुड़ी हुई हैं. कोडलैब के बाद के हिस्सों में, हम गेटवे के कॉन्फ़िगरेशन को अपडेट करेंगे, ताकि डाइनैमिक पोर्ट ऐलोकेशन को चालू किया जा सके और बाद में कस्टम नियम जोड़ा जा सके.

आइए, सबसे पहले VPC बनाते हैं. Cloud Shell से:

gcloud compute networks create consumer-vpc --subnet-mode custom

आउटपुट:

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 consumer-vpc --allow tcp:22,tcp:3389,icmp

इसके बाद, us-east4 में सबनेट बनाते हैं. Cloud Shell से:

gcloud compute networks subnets create cons-net-e4 \
   --network consumer-vpc --range 10.0.0.0/24 --region us-east4

आउटपुट:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4].
NAME         REGION    NETWORK       RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  IPV6_CIDR_RANGE  EXTERNAL_IPV6_CIDR_RANGE
cons-net-e4  us-east4  consumer-vpc  10.0.0.0/24  IPV4_ONLY

अब हम VPC फ़ायरवॉल के नियम बनाते हैं, ताकि IAP रेंज के पतों को पोर्ट 22 पर उपभोक्ताओं के इंस्टेंस तक पहुंचने में मदद मिल सके.

फ़ायरवॉल के पहले नियम के लिए, Cloud Shell से इन्हें चलाएं:

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

आउटपुट:

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 गेटवे बनाने से पहले, हमें पहले एक क्लाउड राऊटर इंस्टेंस बनाना होगा (हम निजी ASN नंबर का उपयोग करते हैं, लेकिन इस लैब की गतिविधियों के लिए यह प्रासंगिक नहीं है). Cloud Shell से:

gcloud compute routers create consumer-cr \
--region=us-east4 --network=consumer-vpc \
 --asn=65501

आउटपुट:

Creating router [consumer-cr]...done.
NAME         REGION       NETWORK
consumer-cr  us-east4  consumer-vpc

इसके बाद, NAT गेटवे इंस्टेंस बनाएं. Cloud Shell से:

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

आउटपुट:

Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.

ध्यान दें कि डिफ़ॉल्ट रूप से, Cloud NAT गेटवे minPortsPerVm को 64 पर सेट करके बनाया जाता है

उपभोक्ता टेस्ट के इंस्टेंस बनाएं. हम रिज़र्व किए गए प्रोड्यूसर आईपी को यहां अपने-आप भरते हैं, ताकि बाद में इंस्टेंस में उनका इस्तेमाल किया जा सके. Cloud Shell से:

gcloud compute instances create consumer-instance-1 --zone=us-east4-a \
--machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \
--metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2

gcloud compute instances create consumer-instance-2 --zone=us-east4-a \
--machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \
--metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2

आउटपुट:

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-1].
NAME                ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
consumer-instance-1  us-east4-a  e2-medium                  10.0.0.2                  RUNNING

Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-2].
NAME                ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
consumer-instance-2  us-east4-a  e2-medium                  10.0.0.3                  RUNNING

7. Cloud NAT के डिफ़ॉल्ट व्यवहार की पुष्टि करें

इस समय, उपभोक्ता के इंस्टेंस, Cloud NAT के डिफ़ॉल्ट तरीके का इस्तेमाल करते हैं. इसमें एक ही रिज़र्व आईपी "nat-address-1" का इस्तेमाल किया जाता है सभी बाहरी पतों से संपर्क करने के लिए. Cloud NAT में अभी तक डीपीए चालू नहीं है.

नीचे दिए गए निर्देश की मदद से, आइए पुष्टि करें कि Cloud NAT ने हमारे उपभोक्ताओं के इंस्टेंस असाइन किए हैं या नहीं

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

आउटपुट का सैंपल

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Consumer IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Consumer IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

जैसा कि ऊपर दिए गए आउटपुट में देखा जा सकता है कि Cloud NAT ने एक ही एक्सटर्नल आईपी nat-address-1 से हर इंस्टेंस को 64 पोर्ट दिए हैं

डीपीए को चालू करने से पहले यह देखते हैं कि हम साथ-साथ कितने कनेक्शन खोल सकते हैं.

एसएसएच का इस्तेमाल, ग्राहक के पहले इंस्टेंस में किया गया. Cloud Shell से:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

अब आपको इंस्टेंस शेल में होना चाहिए.

सैंपल आउटपुट (कम शब्दों में जानकारी देने के लिए, पूरा आउटपुट छोटा कर दिया जाता है)

External IP address was not found; defaulting to using IAP tunneling.
...
...
<username>@consumer-instance-1:~$

आइए, सबसे पहले उपभोक्ता के इंस्टेंस से, दोनों प्रोड्यूसर आईपी को फ़ेच करते हैं और उन्हें एनवायरमेंट वैरिएबल के तौर पर पॉप्युलेट करते हैं

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"`

इसके बाद, दोनों प्रोड्यूसर को कर्ल करने की कोशिश करें, ताकि हम उन तक सही तरीके से पहुंच सकें.

<username>@consumer-instance-1:~$ curl http://$producerip1/nginx/
<html><body><h1>This is producer instance 1</h1>
</body></html>
<username>@consumer-instance-1:~$ curl http://$producerip2/nginx/
<html><body><h1>This is producer instance 2</h1>
</body></html>

अब आइए, लूप के ज़रिए कर्ल चलाकर किसी एक प्रोड्यूसर के इंस्टेंस के साथ कई पैरलल कनेक्शन बनाते हैं. स्मरण करें कि Cloud NAT 2 मिनट के लिए बंद सॉकेट का फिर से इस्तेमाल करने की अनुमति नहीं देता है. इसलिए, अगर हम दो मिनट के अंदर सभी कनेक्शन की कोशिशों को लूप में ले जाते हैं, तो हम इस तरह पैरलल कनेक्शन को सिम्युलेट कर सकते हैं.

इंस्टेंस एसएसएच सेशन में यहां दिया गया कमांड चलाएं

while true; do for i in {1..64}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

आप 64 समानांतर कनेक्शन में सफल होने की उम्मीद करेंगे और स्क्रिप्ट को नीचे दिए गए

Connection # 64 successful

Loop Done, Sleeping for 150s
Connection # 64 successful

Loop Done, Sleeping for 150s

यह देखने के लिए कि हम 64 समानांतर कनेक्शन से आगे नहीं जा सकते, सभी पुराने सॉकेट को साफ़ करने की अनुमति देने के लिए सबसे पहले 2 मिनट इंतज़ार करें. इसके बाद, उसी एक लाइनर में बदलाव करके इसे फिर से चलाएं

while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

आपको अब नीचे दिए गए आउटपुट की उम्मीद होगी

Connection # 64 successful
Connection # 65 failed
Connection # 66 failed
Connection # 67 failed
Connection # 68 failed
Connection # 69 failed
Connection # 70 failed

Loop Done, Sleeping for 150s

इससे पता चलता है कि पहले 64 कनेक्शन सफल रहे, लेकिन बाकी के छह कनेक्शन, पोर्ट उपलब्ध न होने की वजह से पूरे नहीं हो सके.

हमें इसके बारे में कुछ करना होगा. इसके बाद, एसएसएच शेल से बाहर निकलें और नीचे दिए गए हिस्से में डीपीए चालू करें.

8. डीपीए चालू करें और इसके काम करने के तरीके की पुष्टि करें

यहां दिए गए gcloud कमांड चलाएं, जिससे डीपीए चालू होता है. साथ ही, यह हर वीएम के लिए पोर्ट ऐलोकेशन को कम से कम 64 और ज़्यादा से ज़्यादा पोर्ट ऐलोकेशन को 1024 पर सेट करता है.

gcloud alpha compute routers nats update consumer-nat-gw --router=consumer-cr \
--region=us-east4 --min-ports-per-vm=64 --max-ports-per-vm=1024 \
--enable-dynamic-port-allocation

किस आउटपुट से ये नतीजे मिलते हैं

Updating nat [consumer-nat-gw] in router [consumer-cr]...done.

अब get-nat-mapping-info को फिर से चलाकर यह पुष्टि करें कि दोनों इंस्टेंस में अब भी सिर्फ़ 64 पोर्ट असाइन किए गए हैं

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

सैंपल आउटपुट (छोटा करने के लिए काटा गया)

---
instanceName: consumer-instance-1
...
  - <NAT Consumer IP1>:1024-1055
  numTotalNatPorts: 32
...
- natIpPortRanges:
  - <NAT Consumer IP1>:32768-32799
  numTotalNatPorts: 32
...
---
instanceName: consumer-instance-2
...
  - <NAT Address IP1>:1056-1087
  numTotalNatPorts: 32
...
  - <NAT Address IP1>:32800-32831
  numTotalNatPorts: 32
...

पोर्ट ऐलोकेशन के मामले में ज़्यादा बदलाव नहीं हुआ है, क्योंकि इंस्टेंस अभी तक किसी पोर्ट का इस्तेमाल नहीं कर रहा है.

आइए, एसएसएच से मिले उदाहरण की बात करें:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

प्रोड्यूसर के आईपी एनवायरमेंट वैरिएबल को फिर से एक्सपोर्ट करें.

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"`

और समानांतर कनेक्शन को सिम्युलेट करने के लिए पिछले लूप को फिर से चलाएं:

while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

अब हमें नीचे दिया गया आउटपुट दिखेगा

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 70 successful
Loop Done, Sleeping for 150s

यहां क्या हुआ? Cloud NAT, पोर्ट के इस्तेमाल में बढ़ोतरी होने पर पोर्ट ऐलोकेशन को प्राथमिकता देता है. हालांकि, पूरी नेटवर्किंग लेयर के हिसाब से इसे प्रोग्राम करने में कुछ समय लगता है. इसलिए, कनेक्शन की बाकी सभी कोशिशें पूरी करने से पहले, हमें एक से तीन टाइम आउट दिखते हैं.

हमने कर्ल के लिए एक एग्रेसिव टाइम आउट (पांच सेकंड) तय किया है, लेकिन डीपीए के पोर्ट ऐलोकेशन को बढ़ाने के दौरान, ज़्यादा टाइम आउट वाले ऐप्लिकेशन के पास कनेक्शन पूरा करने में मदद होनी चाहिए.

जब हम इस तरह की 1024 कनेक्शन कोशिशों के लिए लूप चलाते हैं, तब रैंप अप के इस व्यवहार को ज़्यादा साफ़ तौर पर देखा जा सकता है

while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

अब हमें ये आउटपुट देखने को मिलेंगे

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 129 successful
Connection # 130 failed

Connection # 131 failed
Connection # 258 successful
Connection # 259 failed

Connection # 260 failed
Connection # 515 successful
Connection # 516 failed

Connection # 1024 successful
Loop Done, Sleeping for 150s

Cloud NAT, पोर्ट को 2 की पावर में बांटता है, इसलिए हर चरण में बजट को दोगुना कर दिया जाता है. इस वजह से, हमें पता चलता है कि कनेक्शन टाइम आउट को 64 से 1024 के बीच की 2 पावर के लिए हाइलाइट किया गया है.

हमने maxPortsPerVM को 1024 पर सेट कर दिया है. इसलिए, यह उम्मीद नहीं है कि हम 1024 से ज़्यादा कनेक्शन कर पाएंगे. पुराने पोर्ट को रीसेट करने के लिए 2 मिनट इंतज़ार करने के बाद, हम 1024 से ज़्यादा संख्या के साथ कर्ल लूप को फिर से चलाकर इसकी जांच कर सकते हैं.

while true; do for i in {1..1035}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

उम्मीद के मुताबिक, आउटपुट में 1024 के बाद वाले कनेक्शन के फ़ेल होने की शुरुआत होती है

<truncated output>
...
Connection # 1028 successful
Connection # 1029 failed
Connection # 1030 failed
Connection # 1031 failed
Connection # 1032 failed
Connection # 1033 failed
Connection # 1034 failed
Connection # 1035 failed
...
Loop Done, Sleeping for 150s

maxPortsPerVM को 1024 पर सेट करके, हमने Cloud NAT को यह निर्देश दिया है कि वह हर वीएम के लिए 1024 के बाद के पोर्ट ऐलोकेशन को स्केल न करे.

एसएसएच सेशन से बाहर निकलने और get-nat-mapping-info को तुरंत फिर से चलाने पर, हम तय किए गए अतिरिक्त पोर्ट देख सकते हैं

gcloud  compute routers get-nat-mapping-info consumer-cr --region=us-east4

साथ ही, नीचे दिए गए आउटपुट को देखें

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  - <NAT Address IP1>1088-1119
  -<NAT Address IP1>:1152-1215
  - <NAT Address IP1>:1280-1407
  - <NAT Address IP1>:1536-1791
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 512
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  - <NAT Address IP1>:32832-32863
  - <NAT Address IP1>:32896-32959
  - <NAT Address IP1>:33024-33151
  - <NAT Address IP1>:33536-33791
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 512
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

ध्यान दें कि consumer-instance-1 में 1024 पोर्ट कैसे असाइन किए गए हैं, लेकिन consumer-instance-2 को सिर्फ़ 64 पोर्ट असाइन किए गए हैं. डीपीए के पहले ऐसा करना आसान नहीं था. साथ ही, यह असल में क्लाउड एनएटी के लिए डीपीए की क्षमता को हाइलाइट करता है.

अगर get-nat-mapping-info कमांड को फिर से चलाने से पहले दो मिनट इंतज़ार करते हैं, तो आपको दिखेगा कि consumer-instance-1, 64 पोर्ट के अपने कम से कम मान पर वापस आ गया है. यह इलस्ट्रेशन न सिर्फ़ पोर्ट एलोकेशन को बढ़ाने की डीपीए की क्षमता को दिखाता है, बल्कि उसी एनएटी गेटवे के पीछे के अन्य इंस्टेंस की मदद से, इस्तेमाल न होने पर उन्हें रिलीज़ भी कर देता है.

9. डीपीए की मदद से Cloud NAT के नियमों की जांच करना

हमने हाल ही में, Cloud NAT के लिए एनएटी के नियमों की सुविधा भी रिलीज़ की है. इससे ग्राहकों को ऐसे नियम लिखने की सुविधा मिलती है जो कुछ बाहरी डेस्टिनेशन के लिए, खास NAT आईपी का इस्तेमाल करते हैं. ज़्यादा जानकारी के लिए, कृपया एनएटी के नियमों का दस्तावेज़ पेज देखें.

इस प्रैक्टिस में हमने देखा कि डीपीए और एनएटी के नियमों के बीच क्या असर पड़ रहा है. चलिए, producer-address-2 को ऐक्सेस करते समय nat-address-2 का इस्तेमाल करने के लिए, सबसे पहले NAT नियम तय करते हैं.

नीचे दिया गया gcloud कमांड चलाएं, जो इसका इस्तेमाल करके NAT नियम बनाता है

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

आपको नीचे दिए गए आउटपुट की उम्मीद करनी चाहिए.

Updating nat [consumer-nat-gw] in router [consumer-cr]...done.

अब नए NAT नियम का असर देखने के लिए, get-nat-mapping-info को फिर से चलाएं.

gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4

जिससे नीचे दी गई जानकारी या सटीक नतीजे मिलेंगे

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2

ध्यान दें कि अब खास तौर पर ruleMappings हैरारकी में, nat-address-2 के लिए अतिरिक्त पोर्ट हैं. पोर्ट की वैल्यू 64 है, जिसके बारे में कम से कम बताया गया है.

अगर कोई इंस्टेंस, NAT नियम के मुताबिक तय किए गए डेस्टिनेशन से कई कनेक्शन खोलता है, तो क्या होगा? Let's find out.

आइए, एसएसएच से मिले उदाहरण की बात करें:

gcloud compute ssh consumer-instance-1 --zone=us-east4-a

प्रोड्यूसर के आईपी एनवायरमेंट वैरिएबल को फिर से एक्सपोर्ट करें.

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"`

अब इस बार producerip2 के ख़िलाफ़ कर्ल लूप को फिर से चलाएं

while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip2/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done

आपको नीचे दिए गए आउटपुट से मिलते-जुलते नतीजे मिल सकते हैं

Connection # 64 successful
Connection # 65 failed

Connection # 66 failed
Connection # 129 successful
Connection # 130 failed

Connection # 131 failed
Connection # 258 successful
Connection # 259 failed

Connection # 260 failed
Connection # 515 successful
Connection # 516 failed

Connection # 1024 successful
Loop Done, Sleeping for 150s

असल में, यह पिछले टेस्ट का डुप्लीकेट वर्शन होता है. इंस्टेंस के एसएसएच सेशन से बाहर निकलें और नैट मैपिंग देखें.

gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4

जिससे नीचे दी गई जानकारी या सटीक नतीजे मिलेंगे

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    - <NAT Address IP2>:1088-1119
    - <NAT Address IP2>:1152-1215
    - <NAT Address IP2>:1280-1407
    - <NAT Address IP2>:1536-1791
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 512
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    - <NAT Address IP2>:32832-32863
    - <NAT Address IP2>:32896-32959
    - <NAT Address IP2>:33024-33151
    - <NAT Address IP2>:33280-33535
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 512
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
---
instanceName: consumer-instance-2
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1056-1087
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1056-1087
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3
- natIpPortRanges:
  - <NAT Address IP1>:32800-32831
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32800-32831
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.3

---
instanceName: consumer-instance-1
interfaceNatMappings:
- natIpPortRanges:
  - <NAT Address IP1>:1024-1055
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:1024-1055
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2
- natIpPortRanges:
  - <NAT Address IP1>:32768-32799
  numTotalDrainNatPorts: 0
  numTotalNatPorts: 32
  ruleMappings:
  - natIpPortRanges:
    - <NAT Address IP2>:32768-32799
    numTotalDrainNatPorts: 0
    numTotalNatPorts: 32
    ruleNumber: 100
  sourceAliasIpRange: ''
  sourceVirtualIp: 10.0.0.2

जैसा कि आप ऊपर देख सकते हैं, consumer-instance-1 के डिफ़ॉल्ट NAT आईपी ( nat-address-1 के लिए आईपी) में अब भी सिर्फ़ 64 पोर्ट हैं, लेकिन NAT नियम के आईपी (nat-address-2 के लिए IP) में 1024 पोर्ट हैं. इस दौरान, consumer-instance-2 ने सभी एनएटी (NAT) आईपी के लिए, डिफ़ॉल्ट तौर पर 64 पोर्ट का बंटवारा किया.

कसरत के तौर पर, रिवर्स केस की जांच की जा सकती है. Cloud NAT को सभी अतिरिक्त पोर्ट हटाने दें. इसके बाद, producerip1 पर कर्ल लूप चलाएं और get-nat-mapping-info के आउटपुट पर पड़ने वाले असर के बारे में जानें

10. क्लीनअप के चरण

बार-बार लगने वाले शुल्कों से बचने के लिए, आपको इस कोडलैब के साथ जुड़े सभी संसाधनों को मिटा देना चाहिए.

पहले सभी इंस्टेंस मिटाएं.

Cloud Shell से:

gcloud compute instances delete consumer-instance-1 consumer-instance-2 \
 producer-instance-1 producer-instance-2 \
 --zone us-east4-a --quiet

अनुमानित आउटपुट :

Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-1].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-2].
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].

इसके बाद, क्लाउड राऊटर मिटाएं. Cloud Shell से:

gcloud compute routers delete consumer-cr \
 --region us-east4 --quiet

आपको इस तरह के आउटपुट की उम्मीद होगी :

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].

सभी एक्सटर्नल आईपी पते रिलीज़ करें. Cloud Shell से:

gcloud compute addresses delete nat-address-1 \
 nat-address-2 producer-address-1 \
 producer-address-2 --region us-east4 --quiet

आपको इस तरह के आउटपुट की उम्मीद होगी :

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 फ़ायरवॉल के नियम मिटाएं. Cloud Shell से:

gcloud compute firewall-rules delete consumer-allow-iap \
 producer-allow-80 --quiet

आपको इस तरह के आउटपुट की उम्मीद होगी :

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-80].

सबनेट मिटाएं. Cloud Shell से:

gcloud compute networks subnets delete cons-net-e4 \
 prod-net-e4 --region=us-east4 --quiet

आपको इस तरह के आउटपुट की उम्मीद होगी :

Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4].
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].

आखिर में, VPC को मिटा देते हैं. Cloud Shell से:

gcloud compute networks delete consumer-vpc \
 producer-vpc --quiet

आपको इस तरह के आउटपुट की उम्मीद होगी :

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].

11. बधाई हो!

आपने Cloud NAT डीपीए लैब पूरा कर लिया है!

आपने क्या कवर किया

  • डीपीए की तैयारी करने के लिए Cloud NAT गेटवे सेट अप करने का तरीका.
  • डीपीए के बिना पोर्ट ऐलोकेशन की जांच करने का तरीका.
  • एनएटी गेटवे के लिए डीपीए को चालू और कॉन्फ़िगर करने का तरीका.
  • पैरलल इग्रेस कनेक्शन चलाकर डीपीए के असर का पता लगाने का तरीका.
  • डीपीए की सुविधा वाले NAT गेटवे में, NAT के नियम जोड़ने का तरीका.
  • एक से ज़्यादा डेस्टिनेशन के लिए इग्रेस डेटा ट्रैफ़िक चलाकर, नियमों के साथ डीपीए के व्यवहार को देखने का तरीका.

अगले चरण

©Google, Inc. या इसके सहयोगी. सभी अधिकार सुरक्षित हैं. डिस्ट्रिब्यूट न करें.